Skip to content

Commit 70ddaa6

Browse files
committed
Wip
1 parent 69c91a0 commit 70ddaa6

File tree

3 files changed

+9
-2
lines changed

3 files changed

+9
-2
lines changed

compiler/src/dotty/tools/dotc/ast/tpd.scala

+3
Original file line numberDiff line numberDiff line change
@@ -373,6 +373,9 @@ object tpd extends Trees.Instance[Type] with TypedTreeInfo {
373373
def Throw(expr: Tree)(using Context): Tree =
374374
ref(defn.throwMethod).appliedTo(expr)
375375

376+
def Hole(isTerm: Boolean, idx: Int, args: List[Tree], content: Tree, tpt: Tree)(using Context): Hole =
377+
ta.assignType(untpd.Hole(isTerm, idx, args, content, tpt), tpt)
378+
376379
// ------ Making references ------------------------------------------------------
377380

378381
def prefixIsElidable(tp: NamedType)(using Context): Boolean = {

compiler/src/dotty/tools/dotc/transform/Splicing.scala

+2-2
Original file line numberDiff line numberDiff line change
@@ -120,7 +120,7 @@ class Splicing extends MacroTransform {
120120
case Some (hole) => cpy.Hole(hole)(content = EmptyTree)
121121
case None =>
122122
holeIdx += 1
123-
val hole = Hole(false, holeIdx, Nil, ref(qual), TypeTree(tp)).withType(tp).asInstanceOf[Hole]
123+
val hole = tpd.Hole(false, holeIdx, Nil, ref(qual), TypeTree(tp))
124124
typeHoles.put(qual.symbol, hole)
125125
hole
126126
cpy.TypeDef(tree)(rhs = hole)
@@ -162,7 +162,7 @@ class Splicing extends MacroTransform {
162162
val fnType = defn.FunctionType(bindings.size, isContextual = false).appliedTo(bindingsTypes :+ newTree.tpe)
163163
val closure = Block(ddef :: Nil, Closure(Nil, ref(meth), TypeTree(fnType)))
164164
holeIdx += 1
165-
Hole(true, holeIdx, refs, closure, TypeTree(tpe)).withType(tpe)
165+
tpd.Hole(true, holeIdx, refs, closure, TypeTree(tpe))
166166

167167
override def transform(tree: tpd.Tree)(using Context): tpd.Tree =
168168
tree match

compiler/src/dotty/tools/dotc/typer/TypeAssigner.scala

+4
Original file line numberDiff line numberDiff line change
@@ -525,6 +525,10 @@ trait TypeAssigner {
525525

526526
def assignType(tree: untpd.PackageDef, pid: Tree)(using Context): PackageDef =
527527
tree.withType(pid.symbol.termRef)
528+
529+
def assignType(tree: untpd.Hole, tpt: Tree)(using Context): Hole =
530+
tree.withType(tpt.tpe)
531+
528532
}
529533

530534

0 commit comments

Comments
 (0)