@@ -16,8 +16,8 @@ object untpd extends Trees.Instance[Untyped] with UntypedTreeInfo {
1616
1717 abstract class OpTree (implicit @ constructorOnly src : SourceFile ) extends Tree {
1818 def op : Ident
19- override def isTerm : Boolean = op.name.isTermName
20- override def isType : Boolean = op.name.isTypeName
19+ override def isTerm : Boolean = op.isTerm
20+ override def isType : Boolean = op.isType
2121 }
2222
2323 /** A typed subtree of an untyped tree needs to be wrapped in a TypedSplice
@@ -84,10 +84,7 @@ object untpd extends Trees.Instance[Untyped] with UntypedTreeInfo {
8484
8585 case class InfixOp (left : Tree , op : Ident , right : Tree )(implicit @ constructorOnly src : SourceFile ) extends OpTree
8686 case class PostfixOp (od : Tree , op : Ident )(implicit @ constructorOnly src : SourceFile ) extends OpTree
87- case class PrefixOp (op : Ident , od : Tree )(implicit @ constructorOnly src : SourceFile ) extends OpTree {
88- override def isType : Boolean = op.isType
89- override def isTerm : Boolean = op.isTerm
90- }
87+ case class PrefixOp (op : Ident , od : Tree )(implicit @ constructorOnly src : SourceFile ) extends OpTree
9188 case class Parens (t : Tree )(implicit @ constructorOnly src : SourceFile ) extends ProxyTree {
9289 def forwardTo : Tree = t
9390 }
@@ -96,7 +93,9 @@ object untpd extends Trees.Instance[Untyped] with UntypedTreeInfo {
9693 override def isType : Boolean = ! isTerm
9794 }
9895 case class Throw (expr : Tree )(implicit @ constructorOnly src : SourceFile ) extends TermTree
99- case class Quote (expr : Tree )(implicit @ constructorOnly src : SourceFile ) extends TermTree
96+ case class Quote (t : Tree )(implicit @ constructorOnly src : SourceFile ) extends TermTree
97+ case class Splice (expr : Tree )(implicit @ constructorOnly src : SourceFile ) extends TermTree
98+ case class TypSplice (expr : Tree )(implicit @ constructorOnly src : SourceFile ) extends TypTree
10099 case class DoWhile (body : Tree , cond : Tree )(implicit @ constructorOnly src : SourceFile ) extends TermTree
101100 case class ForYield (enums : List [Tree ], expr : Tree )(implicit @ constructorOnly src : SourceFile ) extends TermTree
102101 case class ForDo (enums : List [Tree ], body : Tree )(implicit @ constructorOnly src : SourceFile ) extends TermTree
@@ -493,9 +492,17 @@ object untpd extends Trees.Instance[Untyped] with UntypedTreeInfo {
493492 case tree : Throw if expr eq tree.expr => tree
494493 case _ => finalize(tree, untpd.Throw (expr)(tree.source))
495494 }
496- def Quote (tree : Tree )(expr : Tree )(implicit ctx : Context ): TermTree = tree match {
497- case tree : Quote if expr eq tree.expr => tree
498- case _ => finalize(tree, untpd.Quote (expr)(tree.source))
495+ def Quote (tree : Tree )(t : Tree )(implicit ctx : Context ): Tree = tree match {
496+ case tree : Quote if t eq tree.t => tree
497+ case _ => finalize(tree, untpd.Quote (t)(tree.source))
498+ }
499+ def Splice (tree : Tree )(expr : Tree )(implicit ctx : Context ): Tree = tree match {
500+ case tree : Splice if expr eq tree.expr => tree
501+ case _ => finalize(tree, untpd.Splice (expr)(tree.source))
502+ }
503+ def TypSplice (tree : Tree )(expr : Tree )(implicit ctx : Context ): Tree = tree match {
504+ case tree : TypSplice if expr eq tree.expr => tree
505+ case _ => finalize(tree, untpd.TypSplice (expr)(tree.source))
499506 }
500507 def DoWhile (tree : Tree )(body : Tree , cond : Tree )(implicit ctx : Context ): TermTree = tree match {
501508 case tree : DoWhile if (body eq tree.body) && (cond eq tree.cond) => tree
@@ -557,8 +564,12 @@ object untpd extends Trees.Instance[Untyped] with UntypedTreeInfo {
557564 cpy.Tuple (tree)(transform(trees))
558565 case Throw (expr) =>
559566 cpy.Throw (tree)(transform(expr))
560- case Quote (expr) =>
561- cpy.Quote (tree)(transform(expr))
567+ case Quote (t) =>
568+ cpy.Quote (tree)(transform(t))
569+ case Splice (expr) =>
570+ cpy.Splice (tree)(transform(expr))
571+ case TypSplice (expr) =>
572+ cpy.TypSplice (tree)(transform(expr))
562573 case DoWhile (body, cond) =>
563574 cpy.DoWhile (tree)(transform(body), transform(cond))
564575 case ForYield (enums, expr) =>
@@ -606,7 +617,11 @@ object untpd extends Trees.Instance[Untyped] with UntypedTreeInfo {
606617 this (x, trees)
607618 case Throw (expr) =>
608619 this (x, expr)
609- case Quote (expr) =>
620+ case Quote (t) =>
621+ this (x, t)
622+ case Splice (expr) =>
623+ this (x, expr)
624+ case TypSplice (expr) =>
610625 this (x, expr)
611626 case DoWhile (body, cond) =>
612627 this (this (x, body), cond)
0 commit comments