@@ -249,21 +249,12 @@ class Synthesizer(typer: Typer)(using @constructorOnly c: Context):
249
249
val cls = mirroredType.classSymbol
250
250
val accessors = cls.caseAccessors.filterNot(_.isAllOf(PrivateLocal ))
251
251
val elemLabels = accessors.map(acc => ConstantType (Constant (acc.name.toString)))
252
+ val nestedPairs = TypeOps .nestedPairs(accessors.map(mirroredType.resultType.memberInfo(_).widenExpr))
252
253
val (monoType, elemsType) = mirroredType match
253
254
case mirroredType : HKTypeLambda =>
254
- def accessorType (acc : Symbol ) =
255
- if cls.typeParams.hasSameLengthAs(mirroredType.paramRefs) then
256
- acc.info.subst(cls.typeParams, mirroredType.paramRefs)
257
- else
258
- acc.info
259
- val elems =
260
- mirroredType.derivedLambdaType(
261
- resType = TypeOps .nestedPairs(accessors.map(accessorType))
262
- )
263
- (mkMirroredMonoType(mirroredType), elems)
255
+ (mkMirroredMonoType(mirroredType), mirroredType.derivedLambdaType(resType = nestedPairs))
264
256
case _ =>
265
- val elems = TypeOps .nestedPairs(accessors.map(mirroredType.memberInfo(_).widenExpr))
266
- (mirroredType, elems)
257
+ (mirroredType, nestedPairs)
267
258
val elemsLabels = TypeOps .nestedPairs(elemLabels)
268
259
checkRefinement(formal, tpnme.MirroredElemTypes , elemsType, span)
269
260
checkRefinement(formal, tpnme.MirroredElemLabels , elemsLabels, span)
@@ -344,7 +335,7 @@ class Synthesizer(typer: Typer)(using @constructorOnly c: Context):
344
335
(using Context ): Tree =
345
336
if checkFormal(formal) then
346
337
formal.member(tpnme.MirroredType ).info match
347
- case TypeBounds (mirroredType, _) => synth(mirroredType.stripTypeVar , formal, span)
338
+ case TypeBounds (mirroredType, _) => synth(TypeOps .stripTypeVars(mirroredType) , formal, span)
348
339
case other => EmptyTree
349
340
else EmptyTree
350
341
0 commit comments