diff options
author | Adriaan Moors <adriaan.moors@epfl.ch> | 2012-07-22 11:59:12 -0700 |
---|---|---|
committer | Adriaan Moors <adriaan.moors@epfl.ch> | 2012-07-22 11:59:12 -0700 |
commit | 7bd4497c0ab0e7b2536aa01ed5ab6fe545685194 (patch) | |
tree | aadb43e5b32007b7c6f7504912a816e9ae72a8c1 | |
parent | 3813296892238cbaf803bf8e22b02541aaad080c (diff) | |
parent | 393d3ee6b530f15e50c56e1366595d15b7952c7d (diff) | |
download | scala-7bd4497c0ab0e7b2536aa01ed5ab6fe545685194.tar.gz scala-7bd4497c0ab0e7b2536aa01ed5ab6fe545685194.tar.bz2 scala-7bd4497c0ab0e7b2536aa01ed5ab6fe545685194.zip |
Merge pull request #965 from dragos/fix-package-prefix
Handle multiple packages in one source file in the presentation compiler.
-rw-r--r-- | src/compiler/scala/tools/nsc/symtab/BrowsingLoaders.scala | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/src/compiler/scala/tools/nsc/symtab/BrowsingLoaders.scala b/src/compiler/scala/tools/nsc/symtab/BrowsingLoaders.scala index 52e971f1e7..84d601bfed 100644 --- a/src/compiler/scala/tools/nsc/symtab/BrowsingLoaders.scala +++ b/src/compiler/scala/tools/nsc/symtab/BrowsingLoaders.scala @@ -69,10 +69,18 @@ abstract class BrowsingLoaders extends SymbolLoaders { case _ => throw new MalformedInput(pkg.pos.point, "illegal tree node in package prefix: "+pkg) } + + private def inPackagePrefix(pkg: Tree)(op: => Unit): Unit = { + val oldPrefix = packagePrefix + addPackagePrefix(pkg) + op + packagePrefix = oldPrefix + } + override def traverse(tree: Tree): Unit = tree match { case PackageDef(pkg, body) => - addPackagePrefix(pkg) - body foreach traverse + inPackagePrefix(pkg) { body foreach traverse } + case ClassDef(_, name, _, _) => if (packagePrefix == root.fullName) { enterClass(root, name.toString, new SourcefileLoader(src)) |