@@ -16,7 +16,6 @@ import annotation.internal.sharable
16
16
import annotation .unchecked .uncheckedVariance
17
17
import annotation .constructorOnly
18
18
import Decorators ._
19
- import dotty .tools .dotc .core .tasty .TreePickler .Hole
20
19
21
20
object Trees {
22
21
@@ -980,6 +979,15 @@ object Trees {
980
979
def genericEmptyValDef [T >: Untyped ]: ValDef [T ] = theEmptyValDef.asInstanceOf [ValDef [T ]]
981
980
def genericEmptyTree [T >: Untyped ]: Thicket [T ] = theEmptyTree.asInstanceOf [Thicket [T ]]
982
981
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
+
983
991
def flatten [T >: Untyped ](trees : List [Tree [T ]]): List [Tree [T ]] = {
984
992
def recur (buf : ListBuffer [Tree [T ]], remaining : List [Tree [T ]]): ListBuffer [Tree [T ]] =
985
993
remaining match {
@@ -1104,6 +1112,8 @@ object Trees {
1104
1112
type Annotated = Trees .Annotated [T ]
1105
1113
type Thicket = Trees .Thicket [T ]
1106
1114
1115
+ type Hole = Trees .Hole [T ]
1116
+
1107
1117
@ sharable val EmptyTree : Thicket = genericEmptyTree
1108
1118
@ sharable val EmptyValDef : ValDef = genericEmptyValDef
1109
1119
@ sharable val ContextualEmptyTree : Thicket = new EmptyTree () // an empty tree marking a contextual closure
0 commit comments