A case class that represents the fields for a product type.
A case class that represents the fields for a product type.
the product type
the fields of the product type (computed from the arguments in the apply method)
the matched apply method
the matched unapply method
TRUE if all fields correspond to a public no arg member method with the same name and type in the product type (e.g. this is true for all case classes and tuple types)
Try to compute the product type fields for a type by finding the first unapply/apply method pair in the type's companion object with matching type signatures.
Try to compute the product type fields for a type by finding the first unapply/apply method pair in the type's companion object with matching type signatures. If no product type can be computed, Failure is returned with an error message.
type whose companion object should be searched for apply and unapply methods
if successful, Some(product type) otherwise None
if the method exists, the method symbol otherwise an error message
If Result is success the value of the Result. If Result is failure, c.abort is invoked ending the macro. All issues are logged to the Context
if inferred, a Tree representing the implicit otherwise an error message
TRUE if type is a tuple type (e.g. Tuple2[T1,T2], etc)
Log all issues to the Context
Log all issues to the Context
Override to show debug messages
Override to show debug messages