summaryrefslogtreecommitdiff
path: root/src/compiler/scala/tools/nsc/typechecker/Typers.scala
diff options
context:
space:
mode:
authorMartin Odersky <odersky@gmail.com>2009-01-12 12:59:26 +0000
committerMartin Odersky <odersky@gmail.com>2009-01-12 12:59:26 +0000
commit91d92ec83bdfdebc2e97eda5b34fdc4b10cdfecc (patch)
tree0cafae351ff1caa355f3b0f9cd2b84725e403ae8 /src/compiler/scala/tools/nsc/typechecker/Typers.scala
parentcc5695df4172262670f4b5b14704afb1e0a1483f (diff)
downloadscala-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.scala22
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)