@@ -677,6 +677,11 @@ object Trees {
677
677
override def isType = expansion.isType
678
678
}
679
679
680
+ case class QuotedExpr [+ T <: Untyped ] private [ast] (expr : Tree [T ], tpt : Tree [T ])(implicit @ constructorOnly src : SourceFile )
681
+ extends TermTree [T ] {
682
+ type ThisTree [+ T <: Untyped ] = QuotedExpr [T ]
683
+ }
684
+
680
685
/** A type tree that represents an existing or inferred type */
681
686
case class TypeTree [+ T <: Untyped ]()(implicit @ constructorOnly src : SourceFile )
682
687
extends DenotingTree [T ] with TypTree [T ] {
@@ -1087,6 +1092,7 @@ object Trees {
1087
1092
type SeqLiteral = Trees .SeqLiteral [T ]
1088
1093
type JavaSeqLiteral = Trees .JavaSeqLiteral [T ]
1089
1094
type Inlined = Trees .Inlined [T ]
1095
+ type QuotedExpr = Trees .QuotedExpr [T ]
1090
1096
type TypeTree = Trees .TypeTree [T ]
1091
1097
type InferredTypeTree = Trees .InferredTypeTree [T ]
1092
1098
type SingletonTypeTree = Trees .SingletonTypeTree [T ]
@@ -1257,6 +1263,10 @@ object Trees {
1257
1263
case tree : Inlined if (call eq tree.call) && (bindings eq tree.bindings) && (expansion eq tree.expansion) => tree
1258
1264
case _ => finalize(tree, untpd.Inlined (call, bindings, expansion)(sourceFile(tree)))
1259
1265
}
1266
+ def QuotedExpr (tree : Tree )(expr : Tree , tpt : Tree )(using Context ): QuotedExpr = tree match {
1267
+ case tree : QuotedExpr if (expr eq tree.expr) && (tpt eq tree.tpt) => tree
1268
+ case _ => finalize(tree, untpd.QuotedExpr (expr, tpt)(sourceFile(tree)))
1269
+ }
1260
1270
def SingletonTypeTree (tree : Tree )(ref : Tree )(using Context ): SingletonTypeTree = tree match {
1261
1271
case tree : SingletonTypeTree if (ref eq tree.ref) => tree
1262
1272
case _ => finalize(tree, untpd.SingletonTypeTree (ref)(sourceFile(tree)))
@@ -1494,6 +1504,8 @@ object Trees {
1494
1504
case Thicket (trees) =>
1495
1505
val trees1 = transform(trees)
1496
1506
if (trees1 eq trees) tree else Thicket (trees1)
1507
+ case tree @ QuotedExpr (expr, tpt) =>
1508
+ cpy.QuotedExpr (tree)(transform(expr), transform(tpt))
1497
1509
case tree @ Hole (_, _, args, content, tpt) =>
1498
1510
cpy.Hole (tree)(args = transform(args), content = transform(content), tpt = transform(tpt))
1499
1511
case _ =>
@@ -1635,6 +1647,8 @@ object Trees {
1635
1647
this (this (x, arg), annot)
1636
1648
case Thicket (ts) =>
1637
1649
this (x, ts)
1650
+ case QuotedExpr (expr, tpt) =>
1651
+ this (this (x, expr), tpt)
1638
1652
case Hole (_, _, args, content, tpt) =>
1639
1653
this (this (this (x, args), content), tpt)
1640
1654
case _ =>
0 commit comments