diff options
author | Paul Phillips <paulp@improving.org> | 2013-05-08 08:06:15 -0700 |
---|---|---|
committer | Paul Phillips <paulp@improving.org> | 2013-05-08 08:06:15 -0700 |
commit | b0758f5cb9d966b940933d48bdbb45d17a80de66 (patch) | |
tree | c7c906ea3085bef3d6e493faa7f1ac54c370e185 /src/compiler/scala/tools/nsc/symtab | |
parent | 9a2f6c75cce22565b994c0b8bd2af8acc6e6f178 (diff) | |
download | scala-b0758f5cb9d966b940933d48bdbb45d17a80de66.tar.gz scala-b0758f5cb9d966b940933d48bdbb45d17a80de66.tar.bz2 scala-b0758f5cb9d966b940933d48bdbb45d17a80de66.zip |
SI-6039 Harden against irrelevant filesystem details
The symbol loader need not create and populate package
symbols merely because there is a directory somewhere.
Every package created based on the existence of a directory
should contain a classfile, either directly or indirectly.
Diffstat (limited to 'src/compiler/scala/tools/nsc/symtab')
-rw-r--r-- | src/compiler/scala/tools/nsc/symtab/SymbolLoaders.scala | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/src/compiler/scala/tools/nsc/symtab/SymbolLoaders.scala b/src/compiler/scala/tools/nsc/symtab/SymbolLoaders.scala index 250feb69bf..98fb6bd0ef 100644 --- a/src/compiler/scala/tools/nsc/symtab/SymbolLoaders.scala +++ b/src/compiler/scala/tools/nsc/symtab/SymbolLoaders.scala @@ -234,10 +234,14 @@ abstract class SymbolLoaders { } } if (!root.isEmptyPackageClass) { + // Only enter packages which contain a class or a non-empty package for (pkg <- classpath.packages) { - enterPackage(root, pkg.name, new PackageLoader(pkg)) + if (pkg.isEmptyOfClassfiles) { + log(s"Discarding $root/$pkg as it contains no classfiles.") + } + else + enterPackage(root, pkg.name, new PackageLoader(pkg)) } - openPackageModule(root) } } |