diff options
author | Martin Odersky <odersky@gmail.com> | 2013-10-24 20:09:30 +0200 |
---|---|---|
committer | Martin Odersky <odersky@gmail.com> | 2013-10-24 21:21:04 +0200 |
commit | e8a160c8c64354b12423b908067a1ba328d6248f (patch) | |
tree | ec500dc68c0309eb5522b17d919fd70a40344d68 /src/dotty/tools/dotc/typer/Applications.scala | |
parent | addd4a645c0b3adb898c74cb9b1197bb04597467 (diff) | |
download | dotty-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.scala | 8 |
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) |