summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAdriaan Moors <adriaan.moors@epfl.ch>2012-07-22 11:59:12 -0700
committerAdriaan Moors <adriaan.moors@epfl.ch>2012-07-22 11:59:12 -0700
commit7bd4497c0ab0e7b2536aa01ed5ab6fe545685194 (patch)
treeaadb43e5b32007b7c6f7504912a816e9ae72a8c1 /src
parent3813296892238cbaf803bf8e22b02541aaad080c (diff)
parent393d3ee6b530f15e50c56e1366595d15b7952c7d (diff)
downloadscala-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.
Diffstat (limited to 'src')
-rw-r--r--src/compiler/scala/tools/nsc/symtab/BrowsingLoaders.scala12
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))