summaryrefslogtreecommitdiff
path: root/src/reflect/scala/reflect/runtime/JavaMirrors.scala
diff options
context:
space:
mode:
authorEugene Burmako <xeno.by@gmail.com>2012-07-06 21:13:44 +0400
committerEugene Burmako <xeno.by@gmail.com>2012-07-06 22:30:17 +0400
commita3fe989833cc482dbae04a2e2f822a74cad67a36 (patch)
treedc81f754896bff47e924a6d434c1df9c292af4b3 /src/reflect/scala/reflect/runtime/JavaMirrors.scala
parentc39c7276c38f9ef66fd7054609ef33627efe5177 (diff)
downloadscala-a3fe989833cc482dbae04a2e2f822a74cad67a36.tar.gz
scala-a3fe989833cc482dbae04a2e2f822a74cad67a36.tar.bz2
scala-a3fe989833cc482dbae04a2e2f822a74cad67a36.zip
SI-6036 yet again makes sense of magic symbols
Diffstat (limited to 'src/reflect/scala/reflect/runtime/JavaMirrors.scala')
-rw-r--r--src/reflect/scala/reflect/runtime/JavaMirrors.scala21
1 files changed, 10 insertions, 11 deletions
diff --git a/src/reflect/scala/reflect/runtime/JavaMirrors.scala b/src/reflect/scala/reflect/runtime/JavaMirrors.scala
index 41955170bd..eae6a3b297 100644
--- a/src/reflect/scala/reflect/runtime/JavaMirrors.scala
+++ b/src/reflect/scala/reflect/runtime/JavaMirrors.scala
@@ -999,10 +999,10 @@ trait JavaMirrors extends internal.SymbolTable with api.JavaUniverse { self: Sym
mirrors(rootToLoader getOrElseUpdate(root, findLoader)).get.get
}
- private def byName(sym: Symbol): (Name, Symbol) = sym.name -> sym
-
- private lazy val phantomTypes: Map[Name, Symbol] =
- Map(byName(definitions.AnyRefClass)) ++ (definitions.isPhantomClass map byName)
+ private lazy val magicSymbols: Map[(String, Name), Symbol] = {
+ def mapEntry(sym: Symbol): ((String, Name), Symbol) = (sym.owner.fullName, sym.name) -> sym
+ Map() ++ (definitions.magicSymbols filter (_.isClass) map mapEntry)
+ }
/** 1. If `owner` is a package class (but not the empty package) and `name` is a term name, make a new package
* <owner>.<name>, otherwise return NoSymbol.
@@ -1020,13 +1020,12 @@ trait JavaMirrors extends internal.SymbolTable with api.JavaUniverse { self: Sym
if (name.isTermName && !owner.isEmptyPackageClass)
return mirror.makeScalaPackage(
if (owner.isRootSymbol) name.toString else owner.fullName+"."+name)
- if (owner.name.toTermName == nme.scala_ && owner.owner.isRoot)
- phantomTypes get name match {
- case Some(tsym) =>
- owner.info.decls enter tsym
- return tsym
- case None =>
- }
+ magicSymbols get (owner.fullName, name) match {
+ case Some(tsym) =>
+ owner.info.decls enter tsym
+ return tsym
+ case None =>
+ }
}
info("*** missing: "+name+"/"+name.isTermName+"/"+owner+"/"+owner.hasPackageFlag+"/"+owner.info.decls.getClass)
super.missingHook(owner, name)