diff options
author | Eugene Burmako <xeno.by@gmail.com> | 2012-07-11 14:28:46 +0200 |
---|---|---|
committer | Eugene Burmako <xeno.by@gmail.com> | 2012-08-07 17:58:10 +0200 |
commit | e8f1a423d1d02c488ccd8e9940c55c2d9859cf42 (patch) | |
tree | 1060c77894ff691b70761fabc013b41704203b50 /src/reflect/scala/reflect/runtime/JavaMirrors.scala | |
parent | d8b35a11d67c2a597f1d93456b341a650b542520 (diff) | |
download | scala-e8f1a423d1d02c488ccd8e9940c55c2d9859cf42.tar.gz scala-e8f1a423d1d02c488ccd8e9940c55c2d9859cf42.tar.bz2 scala-e8f1a423d1d02c488ccd8e9940c55c2d9859cf42.zip |
SI-5498 completes ModuleMirror.instance
As per referenced issue, this patch implements `instance`
for ModuleMirrors corresponding to nested and inner modules.
Diffstat (limited to 'src/reflect/scala/reflect/runtime/JavaMirrors.scala')
-rw-r--r-- | src/reflect/scala/reflect/runtime/JavaMirrors.scala | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/src/reflect/scala/reflect/runtime/JavaMirrors.scala b/src/reflect/scala/reflect/runtime/JavaMirrors.scala index 2bf57d61cc..c6e7a5d7b7 100644 --- a/src/reflect/scala/reflect/runtime/JavaMirrors.scala +++ b/src/reflect/scala/reflect/runtime/JavaMirrors.scala @@ -18,7 +18,7 @@ import collection.mutable.{ HashMap, ListBuffer } import internal.Flags._ //import scala.tools.nsc.util.ScalaClassLoader //import scala.tools.nsc.util.ScalaClassLoader._ -import ReflectionUtils.{singletonInstance} +import ReflectionUtils.{staticSingletonInstance, innerSingletonInstance} import language.existentials import scala.runtime.{ScalaRunTime, BoxesRunTime} import scala.reflect.internal.util.Collections._ @@ -403,8 +403,11 @@ trait JavaMirrors extends internal.SymbolTable with api.JavaUniverse { self: Sym def erasure = symbol.moduleClass.asClass def isStatic = true def instance = { - if (!symbol.owner.isPackageClass) throw new Error("inner and nested modules are not supported yet") - singletonInstance(classLoader, symbol.fullName) + if (symbol.owner.isPackageClass) + staticSingletonInstance(classLoader, symbol.fullName) + else + if (outer == null) staticSingletonInstance(classToJava(symbol.moduleClass.asClass)) + else innerSingletonInstance(outer, symbol.name) } def companion: Option[ClassMirror] = symbol.companionClass match { case cls: ClassSymbol => Some(new JavaClassMirror(outer, cls)) |