diff options
author | Martin Odersky <odersky@gmail.com> | 2014-08-24 18:04:22 +0200 |
---|---|---|
committer | Martin Odersky <odersky@gmail.com> | 2014-08-24 18:09:01 +0200 |
commit | aa7a0399ad5424dd5292f2f1941c7293c16d6b79 (patch) | |
tree | fcc3efccc01f6d5160774c0b3998481f2d492500 /src/dotty/tools/dotc/typer/Typer.scala | |
parent | 70abd73e9306eca3ec4de1d98b877e4fafe66ad0 (diff) | |
download | dotty-aa7a0399ad5424dd5292f2f1941c7293c16d6b79.tar.gz dotty-aa7a0399ad5424dd5292f2f1941c7293c16d6b79.tar.bz2 dotty-aa7a0399ad5424dd5292f2f1941c7293c16d6b79.zip |
Check that idents don't assume magic.
In TreeChecker, make sure that every identifier has a type with an elidable prefix.
This excludes identifiers pointing to members of random prefixes without making the
prefix explicit in the tree as part of a Select node.
Diffstat (limited to 'src/dotty/tools/dotc/typer/Typer.scala')
-rw-r--r-- | src/dotty/tools/dotc/typer/Typer.scala | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/src/dotty/tools/dotc/typer/Typer.scala b/src/dotty/tools/dotc/typer/Typer.scala index 67c9e15af..400909da6 100644 --- a/src/dotty/tools/dotc/typer/Typer.scala +++ b/src/dotty/tools/dotc/typer/Typer.scala @@ -266,7 +266,15 @@ class Typer extends Namer with TypeAssigner with Applications with Implicits wit error(d"not found: $kind$name", tree.pos) ErrorType } - checkValue(tree.withType(ownType), pt) + + val tree1 = ownType match { + case ownType: NamedType if !prefixIsElidable(ownType) => + ref(ownType).withPos(tree.pos) + case _ => + tree.withType(ownType) + } + + checkValue(tree1, pt) } def typedSelect(tree: untpd.Select, pt: Type)(implicit ctx: Context): Tree = track("typedSelect") { |