@@ -298,13 +298,6 @@ class Synthesizer(typer: Typer)(using @constructorOnly c: Context):
298298 n == m
299299 case _ => this .asClass eq that.asClass // class equality otherwise
300300
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-
308301 def asClass (using Context ): Symbol = this match
309302 case ClassSymbol (cls) => cls
310303 case GenericTuple (arity, _) =>
@@ -375,9 +368,11 @@ class Synthesizer(typer: Typer)(using @constructorOnly c: Context):
375368 val mirroredClass = msrc.asClass
376369 val accessors = mirroredClass.caseAccessors.filterNot(_.isAllOf(PrivateLocal ))
377370 val elemLabels = accessors.map(acc => ConstantType (Constant (acc.name.toString)))
378- val nestedPairs = msrc match
379- case MirrorSource .GenericTuple (_, args) => TypeOps .nestedPairs(args)
380- case _ => TypeOps .nestedPairs(accessors.map(mirroredType.resultType.memberInfo(_).widenExpr))
371+ val (arity, nestedPairs) = msrc match
372+ case MirrorSource .GenericTuple (arity, args) =>
373+ (Some (arity), TypeOps .nestedPairs(args))
374+ case MirrorSource .ClassSymbol (cls) =>
375+ (None , TypeOps .nestedPairs(accessors.map(mirroredType.resultType.memberInfo(_).widenExpr)))
381376 val (monoType, elemsType) = mirroredType match
382377 case mirroredType : HKTypeLambda =>
383378 (mkMirroredMonoType(mirroredType), mirroredType.derivedLambdaType(resType = nestedPairs))
@@ -392,11 +387,7 @@ class Synthesizer(typer: Typer)(using @constructorOnly c: Context):
392387 .refinedWith(tpnme.MirroredElemLabels , TypeAlias (elemsLabels))
393388 val mirrorRef =
394389 if mirroredClass.useCompanionAsProductMirror then companionPath(mirroredType, span)
395- else
396- val arity = msrc match
397- case MirrorSource .GenericTuple (arity, _) => Some (arity)
398- case _ => None
399- anonymousMirror(monoType, ExtendsProductMirror , arity, span)
390+ else anonymousMirror(monoType, ExtendsProductMirror , arity, span)
400391 withNoErrors(mirrorRef.cast(mirrorType))
401392 end makeProductMirror
402393
0 commit comments