summaryrefslogtreecommitdiff
path: root/src/reflect/scala/reflect/runtime/JavaMirrors.scala
diff options
context:
space:
mode:
authorEugene Burmako <xeno.by@gmail.com>2012-07-11 14:28:46 +0200
committerEugene Burmako <xeno.by@gmail.com>2012-08-07 17:58:10 +0200
commite8f1a423d1d02c488ccd8e9940c55c2d9859cf42 (patch)
tree1060c77894ff691b70761fabc013b41704203b50 /src/reflect/scala/reflect/runtime/JavaMirrors.scala
parentd8b35a11d67c2a597f1d93456b341a650b542520 (diff)
downloadscala-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.scala9
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))