@@ -504,19 +504,27 @@ object Erasure extends TypeTestsCasts{
504
504
}
505
505
506
506
def makeBridgeDef (newDef : tpd.DefDef , parentSym : Symbol )(implicit ctx : Context ): tpd.DefDef = {
507
+ val newDefSym = newDef.symbol
508
+ val currentClass = newDefSym.owner.asClass
509
+
507
510
def error (reason : String ) = {
508
- assert(false , s " failure creating bridge from ${newDef.symbol } to ${parentSym}, reason: $reason" )
511
+ assert(false , s " failure creating bridge from ${newDefSym } to ${parentSym}, reason: $reason" )
509
512
???
510
513
}
511
- val bridge = ctx.newSymbol(newDef.symbol.owner ,
512
- parentSym.name, parentSym.flags | Flags .Bridge , parentSym.info, coord = newDef.symbol .owner.coord).asTerm
514
+ val bridge = ctx.newSymbol(currentClass ,
515
+ parentSym.name, parentSym.flags | Flags .Bridge , parentSym.info, coord = newDefSym .owner.coord).asTerm
513
516
bridge.enteredAfter(ctx.phase.prev.asInstanceOf [DenotTransformer ]) // this should be safe, as we're executing in context of next phase
514
- ctx.debuglog(s " generating bridge from ${newDef.symbol} to $bridge" )
517
+ ctx.debuglog(s " generating bridge from ${newDefSym} to $bridge" )
518
+
519
+ val sel : Tree = This (currentClass).select(newDefSym.termRef)
515
520
516
- val sel : Tree = This (newDef.symbol.owner.asClass).select(newDef.symbol.termRef)
521
+ val resultType = parentSym.info.widen.resultType
522
+
523
+ val bridgeCtx = ctx.withOwner(bridge)
517
524
518
- val resultType = bridge.info.widen.resultType
519
525
tpd.DefDef (bridge, { paramss : List [List [tpd.Tree ]] =>
526
+ implicit val ctx : Context = bridgeCtx
527
+
520
528
val rhs = paramss.foldLeft(sel)((fun, vparams) =>
521
529
fun.tpe.widen match {
522
530
case MethodType (names, types) => Apply (fun, (vparams, types).zipped.map(adapt(_, _, untpd.EmptyTree )))
0 commit comments