@@ -85,37 +85,35 @@ class ExpandSAMs extends MiniPhase:
8585 }
8686 case _ => false
8787
88- val forwarderSym =
89- if needsArrayAdaptation then
90- // Create a wrapper method with SAM's signature that casts args to impl's types
91- val wrapperSym = newSymbol(
92- implSym.owner, implSym.name.asTermName, Synthetic | Method ,
93- samInfo, coord = implSym.span).entered.asTerm
94- val wrapperDef = DefDef (wrapperSym, paramss => {
95- val implMt = implInfo.asInstanceOf [MethodType ]
96- val adaptedArgs = paramss.head.lazyZip(implMt.paramInfos).map { (arg, implPt) =>
97- if arg.tpe =:= implPt then arg else arg.cast(implPt)
98- }
99- ref(implSym).appliedToTermArgs(adaptedArgs)
100- })
101- cpy.Block (tree)(fn :: wrapperDef :: Nil ,
102- transformFollowingDeep :
103- AnonClass (List (tpe1),
104- List (samDenot.symbol.asTerm.name -> wrapperSym),
105- refinements.toList,
106- adaptVarargs = true
107- )
108- )
109- else
110- cpy.Block (tree)(stats,
111- transformFollowingDeep :
112- AnonClass (List (tpe1),
113- List (samDenot.symbol.asTerm.name -> implSym),
114- refinements.toList,
115- adaptVarargs = true
116- )
117- )
118- forwarderSym
88+ if needsArrayAdaptation then
89+ // Create a wrapper method with SAM's signature that casts args to impl's types
90+ val wrapperSym = newSymbol(
91+ implSym.owner, implSym.name.asTermName, Synthetic | Method ,
92+ samInfo, coord = implSym.span).entered.asTerm
93+ val wrapperDef = DefDef (wrapperSym, paramss => {
94+ val implMt = implInfo.stripPoly.asInstanceOf [MethodType ]
95+ val adaptedArgs = paramss.head.lazyZip(implMt.paramInfos).map { (arg, implPt) =>
96+ if arg.tpe =:= implPt then arg else arg.cast(implPt)
97+ }
98+ ref(implSym).appliedToTermArgs(adaptedArgs)
99+ })
100+ cpy.Block (tree)(fn :: wrapperDef :: Nil ,
101+ transformFollowingDeep :
102+ AnonClass (List (tpe1),
103+ List (samDenot.symbol.asTerm.name -> wrapperSym),
104+ refinements.toList,
105+ adaptVarargs = true
106+ )
107+ )
108+ else
109+ cpy.Block (tree)(stats,
110+ transformFollowingDeep :
111+ AnonClass (List (tpe1),
112+ List (samDenot.symbol.asTerm.name -> implSym),
113+ refinements.toList,
114+ adaptVarargs = true
115+ )
116+ )
119117 }
120118 case _ =>
121119 tree
0 commit comments