diff options
Diffstat (limited to 'core/src/main/scala/generic.scala')
-rw-r--r-- | core/src/main/scala/generic.scala | 14 |
1 files changed, 4 insertions, 10 deletions
diff --git a/core/src/main/scala/generic.scala b/core/src/main/scala/generic.scala index 5f60ff2..8ba4fd4 100644 --- a/core/src/main/scala/generic.scala +++ b/core/src/main/scala/generic.scala @@ -103,12 +103,10 @@ abstract class GenericMacro(whiteboxContext: whitebox.Context) { typeConstructor: c.universe.Type, myName: c.universe.TermName): c.Tree = { - //log(c)(s"getImplicit1($genericType)") - GlobalMutableState.find(c)(genericType).map { nm => - val str = nm.encodedName.toString + GlobalMutableState.find(c)(genericType).map { methodName => + val methodAsString = methodName.encodedName.toString val searchType = appliedType(typeConstructor, genericType) - q"$str.asInstanceOf[${searchType}]" - q"_root_.magnolia.Lazy[$searchType]($str)" + q"_root_.magnolia.Lazy[$searchType]($methodAsString)" }.orElse { val searchType = appliedType(typeConstructor, genericType) if(GlobalMutableState.find(c)(genericType).isEmpty) { @@ -127,9 +125,7 @@ abstract class GenericMacro(whiteboxContext: whitebox.Context) { case e: Exception => None } - inferredImplicit.map { imp => - imp - }.orElse { + inferredImplicit.orElse { directInferImplicit(genericType, typeConstructor) } } else { @@ -146,8 +142,6 @@ abstract class GenericMacro(whiteboxContext: whitebox.Context) { log(c)(s"directInferImplicit($genericType) given definitions for ${GlobalMutableState.enclosingTypes(c).mkString("{", ", ", "}")}") - //if(genericType.typeSymbol.isAbstract) log(c)(s"cannot derive typeclass for abstract type $genericType") - val myName: TermName = TermName(c.freshName(genericType.typeSymbol.name.encodedName.toString.toLowerCase+"Extractor")) val typeSymbol = genericType.typeSymbol val classType = if(typeSymbol.isClass) Some(typeSymbol.asClass) else None |