@@ -361,6 +361,9 @@ object Trees {
361361 def tpt : Tree [T ]
362362 def unforcedRhs : LazyTree = unforced
363363 def rhs (implicit ctx : Context ): Tree [T ] = forceIfLazy
364+
365+ /** Is this a `BackquotedValDef` or `BackquotedDefDef` ? */
366+ def isBackquoted : Boolean = false
364367 }
365368
366369 // ----------- Tree case classes ------------------------------------
@@ -704,9 +707,6 @@ object Trees {
704707 assert(isEmpty || tpt != genericEmptyTree)
705708 def unforced : LazyTree = preRhs
706709 protected def force (x : AnyRef ): Unit = preRhs = x
707-
708- /** Is this a `BackquotedValDef` ? */
709- def isBackquoted : Boolean = false
710710 }
711711
712712 class BackquotedValDef [- T >: Untyped ] private [ast] (name : TermName , tpt : Tree [T ], preRhs : LazyTree )(implicit @ constructorOnly src : SourceFile )
@@ -725,6 +725,13 @@ object Trees {
725725 protected def force (x : AnyRef ): Unit = preRhs = x
726726 }
727727
728+ class BackquotedDefDef [- T >: Untyped ] private [ast] (name : TermName , tparams : List [TypeDef [T ]],
729+ vparamss : List [List [ValDef [T ]]], tpt : Tree [T ], preRhs : LazyTree )(implicit @ constructorOnly src : SourceFile )
730+ extends DefDef [T ](name, tparams, vparamss, tpt, preRhs) {
731+ override def isBackquoted : Boolean = true
732+ override def productPrefix : String = " BackquotedDefDef"
733+ }
734+
728735 /** mods class name template or
729736 * mods trait name template or
730737 * mods type name = rhs or
@@ -943,6 +950,7 @@ object Trees {
943950 type ValDef = Trees .ValDef [T ]
944951 type BackquotedValDef = Trees .BackquotedValDef [T ]
945952 type DefDef = Trees .DefDef [T ]
953+ type BackquotedDefDef = Trees .BackquotedDefDef [T ]
946954 type TypeDef = Trees .TypeDef [T ]
947955 type Template = Trees .Template [T ]
948956 type Import = Trees .Import [T ]
@@ -1142,6 +1150,9 @@ object Trees {
11421150 case _ => finalize(tree, untpd.ValDef (name, tpt, rhs)(sourceFile(tree)))
11431151 }
11441152 def DefDef (tree : Tree )(name : TermName , tparams : List [TypeDef ], vparamss : List [List [ValDef ]], tpt : Tree , rhs : LazyTree )(implicit ctx : Context ): DefDef = tree match {
1153+ case tree : BackquotedDefDef =>
1154+ if ((name == tree.name) && (tparams eq tree.tparams) && (vparamss eq tree.vparamss) && (tpt eq tree.tpt) && (rhs eq tree.unforcedRhs)) tree
1155+ else finalize(tree, untpd.BackquotedDefDef (name, tparams, vparamss, tpt, rhs)(sourceFile(tree)))
11451156 case tree : DefDef if (name == tree.name) && (tparams eq tree.tparams) && (vparamss eq tree.vparamss) && (tpt eq tree.tpt) && (rhs eq tree.unforcedRhs) => tree
11461157 case _ => finalize(tree, untpd.DefDef (name, tparams, vparamss, tpt, rhs)(sourceFile(tree)))
11471158 }
0 commit comments