@@ -298,13 +298,6 @@ class Synthesizer(typer: Typer)(using @constructorOnly c: Context):
298
298
n == m
299
299
case _ => this .asClass eq that.asClass // class equality otherwise
300
300
301
- def isSub (that : MirrorSource )(using Context ): Boolean = (this .arity, that.arity) match
302
- case (n, m) if n > 0 || m > 0 =>
303
- // we shortcut when at least one was a tuple.
304
- // This protects us from comparing classes for two TupleXXL with different arities.
305
- n == m
306
- case _ => this .asClass isSubClass that.asClass
307
-
308
301
def asClass (using Context ): Symbol = this match
309
302
case ClassSymbol (cls) => cls
310
303
case GenericTuple (arity, _) =>
@@ -374,9 +367,11 @@ class Synthesizer(typer: Typer)(using @constructorOnly c: Context):
374
367
val mirroredClass = msrc.asClass
375
368
val accessors = mirroredClass.caseAccessors.filterNot(_.isAllOf(PrivateLocal ))
376
369
val elemLabels = accessors.map(acc => ConstantType (Constant (acc.name.toString)))
377
- val nestedPairs = msrc match
378
- case MirrorSource .GenericTuple (_, args) => TypeOps .nestedPairs(args)
379
- case _ => TypeOps .nestedPairs(accessors.map(mirroredType.resultType.memberInfo(_).widenExpr))
370
+ val (arity, nestedPairs) = msrc match
371
+ case MirrorSource .GenericTuple (arity, args) =>
372
+ (Some (arity), TypeOps .nestedPairs(args))
373
+ case MirrorSource .ClassSymbol (cls) =>
374
+ (None , TypeOps .nestedPairs(accessors.map(mirroredType.resultType.memberInfo(_).widenExpr)))
380
375
val (monoType, elemsType) = mirroredType match
381
376
case mirroredType : HKTypeLambda =>
382
377
(mkMirroredMonoType(mirroredType), mirroredType.derivedLambdaType(resType = nestedPairs))
@@ -391,11 +386,7 @@ class Synthesizer(typer: Typer)(using @constructorOnly c: Context):
391
386
.refinedWith(tpnme.MirroredElemLabels , TypeAlias (elemsLabels))
392
387
val mirrorRef =
393
388
if mirroredClass.useCompanionAsProductMirror then companionPath(mirroredType, span)
394
- else
395
- val arity = msrc match
396
- case MirrorSource .GenericTuple (arity, _) => Some (arity)
397
- case _ => None
398
- anonymousMirror(monoType, ExtendsProductMirror , arity, span)
389
+ else anonymousMirror(monoType, ExtendsProductMirror , arity, span)
399
390
withNoErrors(mirrorRef.cast(mirrorType))
400
391
end makeProductMirror
401
392
0 commit comments