@@ -16,7 +16,6 @@ import annotation.internal.sharable
1616import annotation .unchecked .uncheckedVariance
1717import annotation .constructorOnly
1818import Decorators ._
19- import dotty .tools .dotc .core .tasty .TreePickler .Hole
2019
2120object Trees {
2221
@@ -980,6 +979,15 @@ object Trees {
980979 def genericEmptyValDef [T >: Untyped ]: ValDef [T ] = theEmptyValDef.asInstanceOf [ValDef [T ]]
981980 def genericEmptyTree [T >: Untyped ]: Thicket [T ] = theEmptyTree.asInstanceOf [Thicket [T ]]
982981
982+ /** Tree that replaces a splice in pickled quotes.
983+ * It is only used when picking quotes (Will never be in a TASTy file).
984+ */
985+ case class Hole [- T >: Untyped ](isTermHole : Boolean , idx : Int , args : List [Tree [T ]])(implicit @ constructorOnly src : SourceFile ) extends Tree [T ] {
986+ type ThisTree [- T >: Untyped ] <: Hole [T ]
987+ override def isTerm : Boolean = isTermHole
988+ override def isType : Boolean = ! isTermHole
989+ }
990+
983991 def flatten [T >: Untyped ](trees : List [Tree [T ]]): List [Tree [T ]] = {
984992 def recur (buf : ListBuffer [Tree [T ]], remaining : List [Tree [T ]]): ListBuffer [Tree [T ]] =
985993 remaining match {
@@ -1104,6 +1112,8 @@ object Trees {
11041112 type Annotated = Trees .Annotated [T ]
11051113 type Thicket = Trees .Thicket [T ]
11061114
1115+ type Hole = Trees .Hole [T ]
1116+
11071117 @ sharable val EmptyTree : Thicket = genericEmptyTree
11081118 @ sharable val EmptyValDef : ValDef = genericEmptyValDef
11091119 @ sharable val ContextualEmptyTree : Thicket = new EmptyTree () // an empty tree marking a contextual closure
0 commit comments