diff options
author | Eugene Burmako <xeno.by@gmail.com> | 2014-01-27 22:47:36 +0300 |
---|---|---|
committer | Eugene Burmako <xeno.by@gmail.com> | 2014-02-14 13:24:48 +0100 |
commit | ad7983b70a43ba9033a491c00ad22691e7a0a7b4 (patch) | |
tree | fded601a5fa3c4d7cea23d742e30e15f1ace7404 /src/compiler/scala/tools/reflect | |
parent | 3293d60531615f4accdee886fba52ddda0929b31 (diff) | |
download | scala-ad7983b70a43ba9033a491c00ad22691e7a0a7b4.tar.gz scala-ad7983b70a43ba9033a491c00ad22691e7a0a7b4.tar.bz2 scala-ad7983b70a43ba9033a491c00ad22691e7a0a7b4.zip |
additional class tags for reflection API
Introduces a test that iterates all abstract types in reflection API
and makes sure that every one of them has an associated class tag.
After being introduced, the test has immediately failed exposing
the lack of tags for TreeCopier, Mirror and RuntimeClass, which has been
subsequently fixed in this commit.
Diffstat (limited to 'src/compiler/scala/tools/reflect')
-rw-r--r-- | src/compiler/scala/tools/reflect/ReflectGlobal.scala | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/src/compiler/scala/tools/reflect/ReflectGlobal.scala b/src/compiler/scala/tools/reflect/ReflectGlobal.scala index 6f369212ad..ac63232967 100644 --- a/src/compiler/scala/tools/reflect/ReflectGlobal.scala +++ b/src/compiler/scala/tools/reflect/ReflectGlobal.scala @@ -37,5 +37,13 @@ class ReflectGlobal(currentSettings: Settings, reporter: Reporter, override val // (each mirror has its own set package symbols, because of the peculiarities of symbol loading in scala), // that `Predef` symbol only has a single owner, and this messes up visibility, which is calculated based on owners, not scopes. override def runtimeMirror(cl: ClassLoader): Mirror = rootMirror + + // Mirror and RuntimeClass come from both Global and reflect.runtime.SymbolTable + // so here the compiler needs an extra push to help decide between those (in favor of the latter) + import scala.reflect.ClassTag + override type Mirror = JavaMirror + override implicit val MirrorTag: ClassTag[Mirror] = ClassTag[Mirror](classOf[Mirror]) + override type RuntimeClass = java.lang.Class[_] + override implicit val RuntimeClassTag: ClassTag[RuntimeClass] = ClassTag[RuntimeClass](classOf[RuntimeClass]) } |