@@ -127,22 +127,21 @@ class TypeUtils:
127127 case Some (types) => TypeOps .nestedPairs(types)
128128 case None => throw new AssertionError (" not a tuple" )
129129
130- def namedTupleElementTypesUpTo (bound : Int , derived : Boolean , normalize : Boolean = true )(using Context ): List [(TermName , Type )] =
131- ( if normalize then self.normalized else self) .dealias match
132- // for desugaring and printer , ignore derived types to avoid infinite recursion in NamedTuple.unapply
130+ def namedTupleElementTypesUpTo (bound : Int , derived : Boolean )(using Context ): List [(TermName , Type )] =
131+ self.normalized.dealias match
132+ // for desugaring, ignore derived types to avoid infinite recursion in NamedTuple.unapply
133133 case AppliedType (tycon, nmes :: vals :: Nil ) if ! derived && tycon.typeSymbol == defn.NamedTupleTypeRef .symbol =>
134- val names = nmes.tupleElementTypesUpTo(bound, normalize ).getOrElse(Nil ).map(_.dealias).map:
134+ val names = nmes.tupleElementTypesUpTo(bound).getOrElse(Nil ).map(_.dealias).map:
135135 case ConstantType (Constant (str : String )) => str.toTermName
136136 case t => throw TypeError (em " Malformed NamedTuple: names must be string types, but $t was found. " )
137- val values = vals.tupleElementTypesUpTo(bound, normalize ).getOrElse(Nil )
137+ val values = vals.tupleElementTypesUpTo(bound, true ).getOrElse(Nil )
138138 names.zip(values)
139- case t if ! derived => Nil
140139 // default cause, used for post-typing
141- case defn.NamedTuple (nmes, vals) =>
142- val names = nmes.tupleElementTypesUpTo(bound, normalize ).getOrElse(Nil ).map(_.dealias).map:
140+ case defn.NamedTuple (nmes, vals) if derived =>
141+ val names = nmes.tupleElementTypesUpTo(bound).getOrElse(Nil ).map(_.dealias).map:
143142 case ConstantType (Constant (str : String )) => str.toTermName
144143 case t => throw TypeError (em " Malformed NamedTuple: names must be string types, but $t was found. " )
145- val values = vals.tupleElementTypesUpTo(bound, normalize ).getOrElse(Nil )
144+ val values = vals.tupleElementTypesUpTo(bound, derived ).getOrElse(Nil )
146145 names.zip(values)
147146 case t =>
148147 Nil
0 commit comments