diff options
author | Martin Odersky <odersky@gmail.com> | 2009-01-12 12:59:26 +0000 |
---|---|---|
committer | Martin Odersky <odersky@gmail.com> | 2009-01-12 12:59:26 +0000 |
commit | 91d92ec83bdfdebc2e97eda5b34fdc4b10cdfecc (patch) | |
tree | 0cafae351ff1caa355f3b0f9cd2b84725e403ae8 /src/compiler/scala/tools/nsc/typechecker/Typers.scala | |
parent | cc5695df4172262670f4b5b14704afb1e0a1483f (diff) | |
download | scala-91d92ec83bdfdebc2e97eda5b34fdc4b10cdfecc.tar.gz scala-91d92ec83bdfdebc2e97eda5b34fdc4b10cdfecc.tar.bz2 scala-91d92ec83bdfdebc2e97eda5b34fdc4b10cdfecc.zip |
parses syntax for package objects
Diffstat (limited to 'src/compiler/scala/tools/nsc/typechecker/Typers.scala')
-rw-r--r-- | src/compiler/scala/tools/nsc/typechecker/Typers.scala | 22 |
1 files changed, 11 insertions, 11 deletions
diff --git a/src/compiler/scala/tools/nsc/typechecker/Typers.scala b/src/compiler/scala/tools/nsc/typechecker/Typers.scala index c6bda776ff..2c399b60d9 100644 --- a/src/compiler/scala/tools/nsc/typechecker/Typers.scala +++ b/src/compiler/scala/tools/nsc/typechecker/Typers.scala @@ -484,17 +484,17 @@ trait Typers { self: Analyzer => * @param qual ... * @return ... */ - def qualifyingClassContext(tree: Tree, qual: Name): Context = { - if (qual.isEmpty) { - if (context.enclClass.owner.isPackageClass) - error(tree.pos, tree+" can be used only in a class, object, or template") - context.enclClass - } else { - var c = context.enclClass + def qualifyingClassContext(tree: Tree, qual: Name, packageOK: Boolean): Context = { + var c = context.enclClass + if (!qual.isEmpty) { while (c != NoContext && c.owner.name != qual) c = c.outer.enclClass - if (c == NoContext) error(tree.pos, qual+" is not an enclosing class") - c } + if (c == NoContext || !(packageOK || c.enclClass.tree.isInstanceOf[Template])) + error( + tree.pos, + if (qual.isEmpty) tree+" can be used only in a class, object, or template" + else qual+" is not an enclosing class") + c } /** The typer for an expression, depending on where we are. If we are before a superclass @@ -2739,7 +2739,7 @@ trait Typers { self: Analyzer => if (tree.symbol != NoSymbol) { (tree.symbol, tree.symbol.thisType) } else { - val clazzContext = qualifyingClassContext(tree, qual) + val clazzContext = qualifyingClassContext(tree, qual, false) (clazzContext.owner, clazzContext.prefix) } if (clazz == NoSymbol) setError(tree) @@ -2781,7 +2781,7 @@ trait Typers { self: Analyzer => if (tree.symbol != NoSymbol) { (tree.symbol, tree.symbol.thisType) } else { - val clazzContext = qualifyingClassContext(tree, qual) + val clazzContext = qualifyingClassContext(tree, qual, false) (clazzContext.owner, clazzContext.prefix) } if (clazz == NoSymbol) setError(tree) |