@@ -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, _) =>
@@ -374,9 +367,11 @@ class Synthesizer(typer: Typer)(using @constructorOnly c: Context):
374367 val mirroredClass = msrc.asClass
375368 val accessors = mirroredClass.caseAccessors.filterNot(_.isAllOf(PrivateLocal ))
376369 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)))
380375 val (monoType, elemsType) = mirroredType match
381376 case mirroredType : HKTypeLambda =>
382377 (mkMirroredMonoType(mirroredType), mirroredType.derivedLambdaType(resType = nestedPairs))
@@ -391,11 +386,7 @@ class Synthesizer(typer: Typer)(using @constructorOnly c: Context):
391386 .refinedWith(tpnme.MirroredElemLabels , TypeAlias (elemsLabels))
392387 val mirrorRef =
393388 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)
399390 withNoErrors(mirrorRef.cast(mirrorType))
400391 end makeProductMirror
401392
0 commit comments