aboutsummaryrefslogtreecommitdiff
path: root/src/dotty/tools/dotc/typer/Applications.scala
diff options
context:
space:
mode:
authorMartin Odersky <odersky@gmail.com>2013-10-24 20:09:30 +0200
committerMartin Odersky <odersky@gmail.com>2013-10-24 21:21:04 +0200
commite8a160c8c64354b12423b908067a1ba328d6248f (patch)
treeec500dc68c0309eb5522b17d919fd70a40344d68 /src/dotty/tools/dotc/typer/Applications.scala
parentaddd4a645c0b3adb898c74cb9b1197bb04597467 (diff)
downloaddotty-e8a160c8c64354b12423b908067a1ba328d6248f.tar.gz
dotty-e8a160c8c64354b12423b908067a1ba328d6248f.tar.bz2
dotty-e8a160c8c64354b12423b908067a1ba328d6248f.zip
Fixed problem in handing of self types.
Self types were not taken into account when doing a typedIdent. The fix in typedIdent caused as CyclicReference when typing the self type itself. This in turn is fixed by distinguishing more carefully in denotNamed in Namer which context we are in.
Diffstat (limited to 'src/dotty/tools/dotc/typer/Applications.scala')
-rw-r--r--src/dotty/tools/dotc/typer/Applications.scala8
1 files changed, 4 insertions, 4 deletions
diff --git a/src/dotty/tools/dotc/typer/Applications.scala b/src/dotty/tools/dotc/typer/Applications.scala
index 648713571..0abaa17fe 100644
--- a/src/dotty/tools/dotc/typer/Applications.scala
+++ b/src/dotty/tools/dotc/typer/Applications.scala
@@ -204,10 +204,10 @@ trait Applications extends Compatibility { self: Typer =>
def findDefault(cx: Context): Type = {
if (cx eq NoContext) NoType
else if (cx.scope != cx.outer.scope &&
- cx.denotsNamed(methRef.name)
- .filterWithPredicate(_.symbol == meth).exists) {
- val denot = cx.denotsNamed(getterName).toDenot(NoPrefix)
- NamedType(NoPrefix, getterName).withDenot(denot)
+ cx.denotNamed(methRef.name).hasAltWith(_.symbol == meth)) {
+ val denot = cx.denotNamed(getterName)
+ assert(denot.exists)
+ NamedType(cx.owner.thisType, getterName).withDenot(denot)
} else findDefault(cx.outer)
}
findDefault(ctx)