aboutsummaryrefslogtreecommitdiff
path: root/compiler/src/dotty/tools/dotc/ast/tpd.scala
diff options
context:
space:
mode:
authorMartin Odersky <odersky@gmail.com>2017-02-19 21:58:50 +0100
committerMartin Odersky <odersky@gmail.com>2017-02-19 21:59:01 +0100
commitbd80a187c3792a4891bec72e0b27b858a5a992ab (patch)
treeb031c9ecf7f29d23375067eee82cf473eaef9cca /compiler/src/dotty/tools/dotc/ast/tpd.scala
parentc54e942ef6275fc0c61c051539a1b37f4e12123c (diff)
downloaddotty-bd80a187c3792a4891bec72e0b27b858a5a992ab.tar.gz
dotty-bd80a187c3792a4891bec72e0b27b858a5a992ab.tar.bz2
dotty-bd80a187c3792a4891bec72e0b27b858a5a992ab.zip
Harden outer proxy computation of inlined code
It turns out that we simply cannot do reliable outer path computation that fills in the right hand sides of this-proxies from the types of these proxies. As-seen-from logic can mangle the types of proxies enough to scramble the necessary information. What we now do instead is simply count: We record the number of outer accesses to an outer this in inlineable code, and do the same number of outer accesses when computing the proxy.
Diffstat (limited to 'compiler/src/dotty/tools/dotc/ast/tpd.scala')
-rw-r--r--compiler/src/dotty/tools/dotc/ast/tpd.scala2
1 files changed, 1 insertions, 1 deletions
diff --git a/compiler/src/dotty/tools/dotc/ast/tpd.scala b/compiler/src/dotty/tools/dotc/ast/tpd.scala
index ed268fda7..1e634bc32 100644
--- a/compiler/src/dotty/tools/dotc/ast/tpd.scala
+++ b/compiler/src/dotty/tools/dotc/ast/tpd.scala
@@ -342,7 +342,7 @@ object tpd extends Trees.Instance[Type] with TypedTreeInfo {
private def followOuterLinks(t: Tree)(implicit ctx: Context) = t match {
case t: This if ctx.erasedTypes && !(t.symbol == ctx.owner.enclosingClass || t.symbol.isStaticOwner) =>
// after erasure outer paths should be respected
- new ExplicitOuter.OuterOps(ctx).path(t.tpe.widen.classSymbol)
+ new ExplicitOuter.OuterOps(ctx).path(toCls = t.tpe.widen.classSymbol)
case t =>
t
}