summaryrefslogtreecommitdiff
path: root/src/compiler/scala/tools/nsc/typechecker/Namers.scala
diff options
context:
space:
mode:
authorHubert Plociniczak <hubert.plociniczak@epfl.ch>2010-03-19 09:09:00 +0000
committerHubert Plociniczak <hubert.plociniczak@epfl.ch>2010-03-19 09:09:00 +0000
commitbf2da77cefaed778008a2ede6b129a58adc86913 (patch)
tree1b682c39ff93610c631de3139dd0c8c83ff20ad0 /src/compiler/scala/tools/nsc/typechecker/Namers.scala
parent46ddf14b459ff18f7fd1904249c6916384030546 (diff)
downloadscala-bf2da77cefaed778008a2ede6b129a58adc86913.tar.gz
scala-bf2da77cefaed778008a2ede6b129a58adc86913.tar.bz2
scala-bf2da77cefaed778008a2ede6b129a58adc86913.zip
Fixes #3054. No review.
Diffstat (limited to 'src/compiler/scala/tools/nsc/typechecker/Namers.scala')
-rw-r--r--src/compiler/scala/tools/nsc/typechecker/Namers.scala22
1 files changed, 17 insertions, 5 deletions
diff --git a/src/compiler/scala/tools/nsc/typechecker/Namers.scala b/src/compiler/scala/tools/nsc/typechecker/Namers.scala
index 0ddd838303..9edc245327 100644
--- a/src/compiler/scala/tools/nsc/typechecker/Namers.scala
+++ b/src/compiler/scala/tools/nsc/typechecker/Namers.scala
@@ -1201,26 +1201,38 @@ trait Namers { self: Analyzer =>
}
true
}
+
+ def isValidSelector(from: Name)(fun : => Unit) {
+ if (base.nonLocalMember(from) == NoSymbol &&
+ base.nonLocalMember(from.toTypeName) == NoSymbol) fun
+ }
+
def checkSelectors(selectors: List[ImportSelector]): Unit = selectors match {
case ImportSelector(from, _, to, _) :: rest =>
if (from != nme.WILDCARD && base != ErrorType) {
- if (base.nonLocalMember(from) == NoSymbol &&
- base.nonLocalMember(from.toTypeName) == NoSymbol) {
+ isValidSelector(from) {
if (currentRun.compileSourceFor(expr, from))
return typeSig(tree)
- context.error(tree.pos, from.decode + " is not a member of " + expr)
+ // for Java code importing Scala objects
+ if (from.endsWith(nme.DOLLARraw))
+ isValidSelector(from.subName(0, from.length -1)) {
+ context.error(tree.pos, from.decode + " is not a member of " + expr)
+ }
+ else
+ context.error(tree.pos, from.decode + " is not a member of " + expr)
}
if (checkNotRedundant(tree.pos, from, to))
checkNotRedundant(tree.pos, from.toTypeName, to.toTypeName)
}
if (from != nme.WILDCARD && (rest.exists (sel => sel.name == from)))
- context.error(tree.pos, from.decode + " is renamed twice");
+ context.error(tree.pos, from.decode + " is renamed twice")
if ((to ne null) && to != nme.WILDCARD && (rest exists (sel => sel.rename == to)))
- context.error(tree.pos, to.decode + " appears twice as a target of a renaming");
+ context.error(tree.pos, to.decode + " appears twice as a target of a renaming")
checkSelectors(rest)
case Nil =>
}
+
checkSelectors(selectors)
ImportType(expr1)
}