diff options
author | Martin Odersky <odersky@gmail.com> | 2013-09-24 13:07:45 +0200 |
---|---|---|
committer | Martin Odersky <odersky@gmail.com> | 2013-09-24 13:07:45 +0200 |
commit | cef9496583b027ec93aaa8e6852e91e8e6896c69 (patch) | |
tree | 4c71647b95764b05fe3977829328a066837bdb17 /src/dotty/tools/dotc/core/SymbolLoaders.scala | |
parent | 8b67961c8f66348e062e6ddb4bdad732f4bb5b10 (diff) | |
download | dotty-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.scala | 11 |
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) { |