diff options
author | Eugene Burmako <xeno.by@gmail.com> | 2013-06-02 11:51:30 -0700 |
---|---|---|
committer | Eugene Burmako <xeno.by@gmail.com> | 2013-06-02 11:51:30 -0700 |
commit | f89f2d969fa0ed0a6bf036a1f6a9cad8267a7265 (patch) | |
tree | fd8c35098c25edaffbcec2161054bb00ba3b7b33 /src | |
parent | 681f2070053bc6f3133425b44083fe056bfeb1fa (diff) | |
parent | 4dc3a3319705ba9cdf63978bbed9a2fc8051b34f (diff) | |
download | scala-f89f2d969fa0ed0a6bf036a1f6a9cad8267a7265.tar.gz scala-f89f2d969fa0ed0a6bf036a1f6a9cad8267a7265.tar.bz2 scala-f89f2d969fa0ed0a6bf036a1f6a9cad8267a7265.zip |
Merge pull request #2619 from scalamacros/ticket/7375
SI-7375 ClassTag for value class aliases
Diffstat (limited to 'src')
-rw-r--r-- | src/compiler/scala/reflect/reify/package.scala | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/src/compiler/scala/reflect/reify/package.scala b/src/compiler/scala/reflect/reify/package.scala index 55f8684df2..6777bb0a50 100644 --- a/src/compiler/scala/reflect/reify/package.scala +++ b/src/compiler/scala/reflect/reify/package.scala @@ -45,18 +45,21 @@ package object reify { def reifyType(global: Global)(typer: global.analyzer.Typer,universe: global.Tree, mirror: global.Tree, tpe: global.Type, concrete: Boolean = false): global.Tree = mkReifier(global)(typer, universe, mirror, tpe, concrete = concrete).reification.asInstanceOf[global.Tree] - def reifyRuntimeClass(global: Global)(typer0: global.analyzer.Typer, tpe: global.Type, concrete: Boolean = true): global.Tree = { + def reifyRuntimeClass(global: Global)(typer0: global.analyzer.Typer, tpe0: global.Type, concrete: Boolean = true): global.Tree = { import global._ import definitions._ import analyzer.enclosingMacroPosition + // SI-7375 + val tpe = tpe0.dealiasWiden + if (tpe.isSpliceable) { val classTagInScope = typer0.resolveClassTag(enclosingMacroPosition, tpe, allowMaterialization = false) if (!classTagInScope.isEmpty) return Select(classTagInScope, nme.runtimeClass) if (concrete) throw new ReificationException(enclosingMacroPosition, "tpe %s is an unresolved spliceable type".format(tpe)) } - tpe.normalize match { + tpe match { case TypeRef(_, ArrayClass, componentTpe :: Nil) => val componentErasure = reifyRuntimeClass(global)(typer0, componentTpe, concrete) gen.mkMethodCall(arrayClassMethod, List(componentErasure)) |