Skip to content

Commit 8d8abc1

Browse files
mergify[bot]mkurz
andauthored
Handle TypeBoundsTree in Scala 3 mirror extraction (#1313) (#1315)
Scala 3.3.4 changed quoted reflection so TypeTree no longer matches TypeBoundsTree. Explicit custom Mirror.Product type aliases such as MirroredElemTypes and MirroredElemLabels can therefore appear as TypeBoundsTree nodes, causing product element extraction to return no fields. Match TypeBoundsTree before TypeTree so manually provided mirrors keep resolving their element labels and types on current Scala 3.3 releases while preserving the existing TypeTree path. (cherry picked from commit b54fecc) Co-authored-by: Matthias Kurz <m.kurz@irregular.at>
1 parent ed3ad5d commit 8d8abc1

1 file changed

Lines changed: 6 additions & 0 deletions

File tree

play-json/shared/src/main/scala-3/play/api/libs/json/QuotesHelper.scala

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -273,6 +273,12 @@ private[json] trait QuotesHelper {
273273
case ClassDef(_, _, _, _, members) =>
274274
members
275275
.collect {
276+
case TypeDef(
277+
n @ ("MirroredElemTypes" | "MirroredElemLabels"),
278+
tt: TypeBoundsTree
279+
) if tt.tpe <:< TypeRepr.of[Product] =>
280+
n -> tt.tpe
281+
276282
case TypeDef(
277283
n @ ("MirroredElemTypes" | "MirroredElemLabels"),
278284
tt: TypeTree

0 commit comments

Comments
 (0)