@@ -267,8 +267,14 @@ object Erasure {
267
267
val sym = tree.symbol
268
268
assert(sym.exists, tree.show)
269
269
270
- def select (qual : Tree , sym : Symbol ): Tree =
271
- untpd.cpy.Select (tree)(qual, sym.name) withType qual.tpe.select(sym)
270
+ def select (qual : Tree , sym : Symbol ): Tree = {
271
+ val name = tree.typeOpt match {
272
+ case tp : NamedType if tp.name.isInheritedName => sym.name.inheritedName
273
+ case _ => sym.name
274
+ }
275
+ untpd.cpy.Select (tree)(qual, sym.name)
276
+ .withType(NamedType .withSymAndName(qual.tpe, sym, name))
277
+ }
272
278
273
279
def selectArrayMember (qual : Tree , erasedPre : Type ): Tree =
274
280
if (erasedPre isRef defn.ObjectClass )
@@ -307,7 +313,10 @@ object Erasure {
307
313
308
314
override def typedThis (tree : untpd.This )(implicit ctx : Context ): Tree =
309
315
if (tree.symbol == ctx.owner.enclosingClass || tree.symbol.isStaticOwner) promote(tree)
310
- else outer.path(tree.symbol)
316
+ else {
317
+ ctx.log(i " computing outer path from ${ctx.owner.ownersIterator.toList}%, % to ${tree.symbol}" )
318
+ outer.path(tree.symbol)
319
+ }
311
320
312
321
private def runtimeCallWithProtoArgs (name : Name , pt : Type , args : Tree * )(implicit ctx : Context ): Tree = {
313
322
val meth = defn.runtimeMethod(name)
0 commit comments