diff options
author | Jon Pretty <jon.pretty@propensive.com> | 2017-05-24 21:42:42 +0100 |
---|---|---|
committer | Jon Pretty <jon.pretty@propensive.com> | 2017-05-24 21:42:42 +0100 |
commit | 134cd5e20030e558dfb75e07f5e3eb3211680e0c (patch) | |
tree | 1f8f7d1f6fb89320612419b27219f5ab24d88285 /core/src/main/scala/generic.scala | |
parent | b039a653e9e90530a76aef42df9215c151c65b67 (diff) | |
download | magnolia-134cd5e20030e558dfb75e07f5e3eb3211680e0c.tar.gz magnolia-134cd5e20030e558dfb75e07f5e3eb3211680e0c.tar.bz2 magnolia-134cd5e20030e558dfb75e07f5e3eb3211680e0c.zip |
First cleanup step
Diffstat (limited to 'core/src/main/scala/generic.scala')
-rw-r--r-- | core/src/main/scala/generic.scala | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/core/src/main/scala/generic.scala b/core/src/main/scala/generic.scala index 3355e32..63f3d8f 100644 --- a/core/src/main/scala/generic.scala +++ b/core/src/main/scala/generic.scala @@ -18,6 +18,20 @@ class Macros(val c: whitebox.Context) { val scope = GlobalState.globalState.asInstanceOf[Map[Type, TermName]] + scope.get(genericType) match { + case Some(ref) => + q"$ref" + case None => + + val searchType = appliedType(typeConstructor, genericType) + println(s"${scope.keySet} vs $genericType") + println(s"inferring on $genericType") + try c.inferImplicitValue(searchType, false, false) catch { + case e: Exception => + go(genericType, typeConstructor/*, scope*/) + } + } + scope.get(genericType).map { nm => println("substituting "+nm) q"$nm" |