aboutsummaryrefslogtreecommitdiff
path: root/src/dotty/tools/dotc/core/SymbolLoaders.scala
diff options
context:
space:
mode:
authorMartin Odersky <odersky@gmail.com>2013-09-24 13:07:45 +0200
committerMartin Odersky <odersky@gmail.com>2013-09-24 13:07:45 +0200
commitcef9496583b027ec93aaa8e6852e91e8e6896c69 (patch)
tree4c71647b95764b05fe3977829328a066837bdb17 /src/dotty/tools/dotc/core/SymbolLoaders.scala
parent8b67961c8f66348e062e6ddb4bdad732f4bb5b10 (diff)
downloaddotty-cef9496583b027ec93aaa8e6852e91e8e6896c69.tar.gz
dotty-cef9496583b027ec93aaa8e6852e91e8e6896c69.tar.bz2
dotty-cef9496583b027ec93aaa8e6852e91e8e6896c69.zip
Module classes are now entered
Module classes are entered alongisde their source modules in parent scope.
Diffstat (limited to 'src/dotty/tools/dotc/core/SymbolLoaders.scala')
-rw-r--r--src/dotty/tools/dotc/core/SymbolLoaders.scala11
1 files changed, 8 insertions, 3 deletions
diff --git a/src/dotty/tools/dotc/core/SymbolLoaders.scala b/src/dotty/tools/dotc/core/SymbolLoaders.scala
index 097ab8e9e..8c128e808 100644
--- a/src/dotty/tools/dotc/core/SymbolLoaders.scala
+++ b/src/dotty/tools/dotc/core/SymbolLoaders.scala
@@ -52,6 +52,7 @@ class SymbolLoaders {
(modul, _) => completer.proxy withDecls newScope withSourceModule modul,
assocFile = completer.sourceFileOrNull)
enterNew(owner, module, completer, scope)
+ enterNew(owner, module.moduleClass, completer, scope)
}
/** Enter package with given `name` into scope of `owner`
@@ -149,14 +150,18 @@ class SymbolLoaders {
def doComplete(root: SymDenotation) {
assert(root is PackageClass, root)
+ def maybeModuleClass(classRep: ClassPath#ClassRep) = classRep.name.last == '$'
val pre = root.owner.thisType
root.info = ClassInfo(pre, root.symbol.asClass, Nil, preDecls, TermRef.withSym(pre, sourceModule))
if (!sourceModule.isCompleted)
sourceModule.completer.complete(sourceModule)
if (!root.isRoot) {
- for (classRep <- classpath.classes) {
- initializeFromClassPath(root.symbol, classRep)
- }
+ for (classRep <- classpath.classes)
+ if (!maybeModuleClass(classRep))
+ initializeFromClassPath(root.symbol, classRep)
+ for (classRep <- classpath.classes)
+ if (maybeModuleClass(classRep) && !root.decls.lookup(classRep.name.toTypeName).exists)
+ initializeFromClassPath(root.symbol, classRep)
}
if (!root.isEmptyPackage) {
for (pkg <- classpath.packages) {