diff options
author | Eugene Burmako <xeno.by@gmail.com> | 2012-07-06 21:13:44 +0400 |
---|---|---|
committer | Eugene Burmako <xeno.by@gmail.com> | 2012-07-06 22:30:17 +0400 |
commit | a3fe989833cc482dbae04a2e2f822a74cad67a36 (patch) | |
tree | dc81f754896bff47e924a6d434c1df9c292af4b3 /src/reflect/scala/reflect/runtime/JavaMirrors.scala | |
parent | c39c7276c38f9ef66fd7054609ef33627efe5177 (diff) | |
download | scala-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.scala | 21 |
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) |