Skip to content

Commit 80cbe11

Browse files
committed
Get rid of SelectFromType tree node.
Roll its functionality into Select. Since we can always tell whether a tree is a type or term there is no expressiveness gained by having a separate tree node.
1 parent 2d908c7 commit 80cbe11

File tree

14 files changed

+51
-115
lines changed

14 files changed

+51
-115
lines changed

src/dotty/tools/dotc/ast/TreeInfo.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -182,7 +182,7 @@ trait TreeInfo[T >: Untyped <: Type] { self: Trees.Instance[T] =>
182182
case OrTypeTree(tpt1, tpt2) => mayBeTypePat(tpt1) || mayBeTypePat(tpt2)
183183
case RefinedTypeTree(tpt, refinements) => mayBeTypePat(tpt) || refinements.exists(_.isInstanceOf[Bind])
184184
case AppliedTypeTree(tpt, args) => mayBeTypePat(tpt) || args.exists(_.isInstanceOf[Bind])
185-
case SelectFromTypeTree(tpt, _) => mayBeTypePat(tpt)
185+
case Select(tpt, _) => mayBeTypePat(tpt)
186186
case Annotated(tpt, _) => mayBeTypePat(tpt)
187187
case _ => false
188188
}

src/dotty/tools/dotc/ast/Trees.scala

Lines changed: 1 addition & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -364,7 +364,7 @@ object Trees {
364364
override def toString = s"BackquotedIdent($name)"
365365
}
366366

367-
/** qualifier.name */
367+
/** qualifier.name, or qualifier#name, if qualifier is a type */
368368
case class Select[-T >: Untyped] private[ast] (qualifier: Tree[T], name: Name)
369369
extends RefTree[T] {
370370
type ThisTree[-T >: Untyped] = Select[T]
@@ -549,15 +549,6 @@ object Trees {
549549
type ThisTree[-T >: Untyped] = SingletonTypeTree[T]
550550
}
551551

552-
/** qualifier # name
553-
* In Scala, this always refers to a type, but in a Java
554-
* compilation unit this might refer to a term.
555-
*/
556-
case class SelectFromTypeTree[-T >: Untyped] private[ast] (qualifier: Tree[T], name: Name)
557-
extends RefTree[T] {
558-
type ThisTree[-T >: Untyped] = SelectFromTypeTree[T]
559-
}
560-
561552
/** left & right */
562553
case class AndTypeTree[-T >: Untyped] private[ast] (left: Tree[T], right: Tree[T])
563554
extends TypTree[T] {
@@ -841,7 +832,6 @@ object Trees {
841832
type JavaSeqLiteral = Trees.JavaSeqLiteral[T]
842833
type TypeTree = Trees.TypeTree[T]
843834
type SingletonTypeTree = Trees.SingletonTypeTree[T]
844-
type SelectFromTypeTree = Trees.SelectFromTypeTree[T]
845835
type AndTypeTree = Trees.AndTypeTree[T]
846836
type OrTypeTree = Trees.OrTypeTree[T]
847837
type RefinedTypeTree = Trees.RefinedTypeTree[T]
@@ -1000,10 +990,6 @@ object Trees {
1000990
case tree: SingletonTypeTree if ref eq tree.ref => tree
1001991
case _ => finalize(tree, untpd.SingletonTypeTree(ref))
1002992
}
1003-
def SelectFromTypeTree(tree: Tree)(qualifier: Tree, name: Name): SelectFromTypeTree = tree match {
1004-
case tree: SelectFromTypeTree if (qualifier eq tree.qualifier) && (name == tree.name) => tree
1005-
case _ => finalize(tree, untpd.SelectFromTypeTree(qualifier, name))
1006-
}
1007993
def AndTypeTree(tree: Tree)(left: Tree, right: Tree): AndTypeTree = tree match {
1008994
case tree: AndTypeTree if (left eq tree.left) && (right eq tree.right) => tree
1009995
case _ => finalize(tree, untpd.AndTypeTree(left, right))
@@ -1144,8 +1130,6 @@ object Trees {
11441130
tree
11451131
case SingletonTypeTree(ref) =>
11461132
cpy.SingletonTypeTree(tree)(transform(ref))
1147-
case SelectFromTypeTree(qualifier, name) =>
1148-
cpy.SelectFromTypeTree(tree)(transform(qualifier), name)
11491133
case AndTypeTree(left, right) =>
11501134
cpy.AndTypeTree(tree)(transform(left), transform(right))
11511135
case OrTypeTree(left, right) =>
@@ -1248,8 +1232,6 @@ object Trees {
12481232
x
12491233
case SingletonTypeTree(ref) =>
12501234
this(x, ref)
1251-
case SelectFromTypeTree(qualifier, name) =>
1252-
this(x, qualifier)
12531235
case AndTypeTree(left, right) =>
12541236
this(this(x, left), right)
12551237
case OrTypeTree(left, right) =>
@@ -1325,7 +1307,6 @@ object Trees {
13251307
case tree: DefDef => cpy.DefDef(tree)(name = newName.asTermName)
13261308
case tree: untpd.PolyTypeDef => untpd.cpy.PolyTypeDef(tree)(newName.asTypeName, tree.tparams, tree.rhs).withMods(tree.rawMods)
13271309
case tree: TypeDef => cpy.TypeDef(tree)(name = newName.asTypeName)
1328-
case tree: SelectFromTypeTree => cpy.SelectFromTypeTree(tree)(tree.qualifier, newName)
13291310
}
13301311
}.asInstanceOf[tree.ThisTree[T]]
13311312
}

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

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -30,11 +30,8 @@ object tpd extends Trees.Instance[Type] with TypedTreeInfo {
3030
def Select(qualifier: Tree, name: Name)(implicit ctx: Context): Select =
3131
ta.assignType(untpd.Select(qualifier, name), qualifier)
3232

33-
def SelectFromTypeTree(qualifier: Tree, name: Name)(implicit ctx: Context): SelectFromTypeTree =
34-
ta.assignType(untpd.SelectFromTypeTree(qualifier, name), qualifier)
35-
36-
def SelectFromTypeTree(qualifier: Tree, tp: NamedType)(implicit ctx: Context): SelectFromTypeTree =
37-
untpd.SelectFromTypeTree(qualifier, tp.name).withType(tp)
33+
def Select(qualifier: Tree, tp: NamedType)(implicit ctx: Context): Select =
34+
untpd.Select(qualifier, tp.name).withType(tp)
3835

3936
def This(cls: ClassSymbol)(implicit ctx: Context): This =
4037
untpd.This(cls.name).withType(cls.thisType)
@@ -333,7 +330,7 @@ object tpd extends Trees.Instance[Type] with TypedTreeInfo {
333330
Ident(tp)
334331
else tp.prefix match {
335332
case pre: SingletonType => followOuterLinks(singleton(pre)).select(tp)
336-
case pre => SelectFromTypeTree(TypeTree(pre), tp)
333+
case pre => Select(TypeTree(pre), tp)
337334
} // no checks necessary
338335

339336
def ref(sym: Symbol)(implicit ctx: Context): Tree =

src/dotty/tools/dotc/ast/untpd.scala

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -154,7 +154,6 @@ object untpd extends Trees.Instance[Untyped] with UntypedTreeInfo {
154154
def TypeTree(original: Tree): TypeTree = new TypeTree(original)
155155
def TypeTree() = new TypeTree(EmptyTree)
156156
def SingletonTypeTree(ref: Tree): SingletonTypeTree = new SingletonTypeTree(ref)
157-
def SelectFromTypeTree(qualifier: Tree, name: Name): SelectFromTypeTree = new SelectFromTypeTree(qualifier, name)
158157
def AndTypeTree(left: Tree, right: Tree): AndTypeTree = new AndTypeTree(left, right)
159158
def OrTypeTree(left: Tree, right: Tree): OrTypeTree = new OrTypeTree(left, right)
160159
def RefinedTypeTree(tpt: Tree, refinements: List[Tree]): RefinedTypeTree = new RefinedTypeTree(tpt, refinements)

src/dotty/tools/dotc/core/unpickleScala2/Scala2Unpickler.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1194,7 +1194,7 @@ class Scala2Unpickler(bytes: Array[Byte], classRoot: ClassDenotation, moduleClas
11941194
case SELECTFROMTYPEtree =>
11951195
val qualifier = readTreeRef()
11961196
val selector = readTypeNameRef()
1197-
SelectFromTypeTree(qualifier, symbol.namedType)
1197+
Select(qualifier, symbol.namedType)
11981198

11991199
case COMPOUNDTYPEtree =>
12001200
readTemplateRef()

src/dotty/tools/dotc/parsing/JavaParsers.scala

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -227,7 +227,7 @@ object JavaParsers {
227227
def convertToTypeId(tree: Tree): Tree = convertToTypeName(tree) match {
228228
case Some(t) => t withPos tree.pos
229229
case _ => tree match {
230-
case AppliedTypeTree(_, _) | SelectFromTypeTree(_, _) =>
230+
case AppliedTypeTree(_, _) | Select(_, _) =>
231231
tree
232232
case _ =>
233233
syntaxError("identifier expected", tree.pos)
@@ -285,10 +285,10 @@ object JavaParsers {
285285
// SelectFromTypeTree otherwise. See #3567.
286286
// Select nodes can be later
287287
// converted in the typechecker to SelectFromTypeTree if the class
288-
// turns out to be an instance ionner class instead of a static inner class.
288+
// turns out to be an instance inner class instead of a static inner class.
289289
def typeSelect(t: Tree, name: Name) = t match {
290290
case Ident(_) | Select(_, _) => Select(t, name)
291-
case _ => SelectFromTypeTree(t, name.toTypeName)
291+
case _ => Select(t, name.toTypeName)
292292
}
293293
while (in.token == DOT) {
294294
in.nextToken()

src/dotty/tools/dotc/parsing/Parsers.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -795,7 +795,7 @@ object Parsers {
795795
private def typeProjection(t: Tree): Tree = {
796796
accept(HASH)
797797
val id = typeIdent()
798-
atPos(t.pos.start, id.pos.start) { SelectFromTypeTree(t, id.name) }
798+
atPos(t.pos.start, id.pos.start) { Select(t, id.name) }
799799
}
800800

801801
/** NamedTypeArg ::= id `=' Type

src/dotty/tools/dotc/printing/RefinedPrinter.scala

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -281,7 +281,8 @@ class RefinedPrinter(_ctx: Context) extends PlainPrinter(_ctx) {
281281
case _ => toText(name)
282282
}
283283
case tree @ Select(qual, name) =>
284-
toTextLocal(qual) ~ ("." ~ nameIdText(tree) provided name != nme.CONSTRUCTOR)
284+
if (qual.isType) toTextLocal(qual) ~ "#" ~ toText(name)
285+
else toTextLocal(qual) ~ ("." ~ nameIdText(tree) provided name != nme.CONSTRUCTOR)
285286
case tree: This =>
286287
optDotPrefix(tree) ~ "this" ~ idText(tree)
287288
case Super(qual: This, mix) =>
@@ -349,8 +350,6 @@ class RefinedPrinter(_ctx: Context) extends PlainPrinter(_ctx) {
349350
if (tree.hasType) toText(tree.typeOpt) else toText(orig)
350351
case SingletonTypeTree(ref) =>
351352
toTextLocal(ref) ~ ".type"
352-
case SelectFromTypeTree(qual, name) =>
353-
toTextLocal(qual) ~ "#" ~ toText(name)
354353
case AndTypeTree(l, r) =>
355354
changePrec(AndPrec) { toText(l) ~ " & " ~ toText(r) }
356355
case OrTypeTree(l, r) =>

src/dotty/tools/dotc/transform/Erasure.scala

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -388,9 +388,6 @@ object Erasure extends TypeTestsCasts{
388388
recur(typed(tree.qualifier, AnySelectionProto))
389389
}
390390

391-
override def typedSelectFromTypeTree(tree: untpd.SelectFromTypeTree, pt: Type)(implicit ctx: Context) =
392-
untpd.Ident(tree.name).withPos(tree.pos).withType(erasedType(tree))
393-
394391
override def typedThis(tree: untpd.This)(implicit ctx: Context): Tree =
395392
if (tree.symbol == ctx.owner.enclosingClass || tree.symbol.isStaticOwner) promote(tree)
396393
else {

src/dotty/tools/dotc/transform/TreeTransform.scala

Lines changed: 0 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,6 @@ object TreeTransforms {
8282
def prepareForTry(tree: Try)(implicit ctx: Context) = this
8383
def prepareForSeqLiteral(tree: SeqLiteral)(implicit ctx: Context) = this
8484
def prepareForTypeTree(tree: TypeTree)(implicit ctx: Context) = this
85-
def prepareForSelectFromTypeTree(tree: SelectFromTypeTree)(implicit ctx: Context) = this
8685
def prepareForBind(tree: Bind)(implicit ctx: Context) = this
8786
def prepareForAlternative(tree: Alternative)(implicit ctx: Context) = this
8887
def prepareForTypeDef(tree: TypeDef)(implicit ctx: Context) = this
@@ -114,7 +113,6 @@ object TreeTransforms {
114113
def transformTry(tree: Try)(implicit ctx: Context, info: TransformerInfo): Tree = tree
115114
def transformSeqLiteral(tree: SeqLiteral)(implicit ctx: Context, info: TransformerInfo): Tree = tree
116115
def transformTypeTree(tree: TypeTree)(implicit ctx: Context, info: TransformerInfo): Tree = tree
117-
def transformSelectFromTypeTree(tree: SelectFromTypeTree)(implicit ctx: Context, info: TransformerInfo): Tree = tree
118116
def transformBind(tree: Bind)(implicit ctx: Context, info: TransformerInfo): Tree = tree
119117
def transformAlternative(tree: Alternative)(implicit ctx: Context, info: TransformerInfo): Tree = tree
120118
def transformUnApply(tree: UnApply)(implicit ctx: Context, info: TransformerInfo): Tree = tree
@@ -276,7 +274,6 @@ object TreeTransforms {
276274
nxPrepTry = index(transformations, "prepareForTry")
277275
nxPrepSeqLiteral = index(transformations, "prepareForSeqLiteral")
278276
nxPrepTypeTree = index(transformations, "prepareForTypeTree")
279-
nxPrepSelectFromTypeTree = index(transformations, "prepareForSelectFromTypeTree")
280277
nxPrepBind = index(transformations, "prepareForBind")
281278
nxPrepAlternative = index(transformations, "prepareForAlternative")
282279
nxPrepUnApply = index(transformations, "prepareForUnApply")
@@ -307,7 +304,6 @@ object TreeTransforms {
307304
nxTransTry = index(transformations, "transformTry")
308305
nxTransSeqLiteral = index(transformations, "transformSeqLiteral")
309306
nxTransTypeTree = index(transformations, "transformTypeTree")
310-
nxTransSelectFromTypeTree = index(transformations, "transformSelectFromTypeTree")
311307
nxTransBind = index(transformations, "transformBind")
312308
nxTransAlternative = index(transformations, "transformAlternative")
313309
nxTransUnApply = index(transformations, "transformUnApply")
@@ -348,7 +344,6 @@ object TreeTransforms {
348344
nxPrepTry = indexUpdate(prev.nxPrepTry, changedTransformationClass, transformationIndex, "prepareForTry", copy)
349345
nxPrepSeqLiteral = indexUpdate(prev.nxPrepSeqLiteral, changedTransformationClass, transformationIndex, "prepareForSeqLiteral", copy)
350346
nxPrepTypeTree = indexUpdate(prev.nxPrepTypeTree, changedTransformationClass, transformationIndex, "prepareForTypeTree", copy)
351-
nxPrepSelectFromTypeTree = indexUpdate(prev.nxPrepSelectFromTypeTree, changedTransformationClass, transformationIndex, "prepareForSelectFromTypeTree", copy)
352347
nxPrepBind = indexUpdate(prev.nxPrepBind, changedTransformationClass, transformationIndex, "prepareForBind", copy)
353348
nxPrepAlternative = indexUpdate(prev.nxPrepAlternative, changedTransformationClass, transformationIndex, "prepareForAlternative", copy)
354349
nxPrepUnApply = indexUpdate(prev.nxPrepUnApply, changedTransformationClass, transformationIndex, "prepareForUnApply", copy)
@@ -378,7 +373,6 @@ object TreeTransforms {
378373
nxTransTry = indexUpdate(prev.nxTransTry, changedTransformationClass, transformationIndex, "transformTry", copy)
379374
nxTransSeqLiteral = indexUpdate(prev.nxTransSeqLiteral, changedTransformationClass, transformationIndex, "transformSeqLiteral", copy)
380375
nxTransTypeTree = indexUpdate(prev.nxTransTypeTree, changedTransformationClass, transformationIndex, "transformTypeTree", copy)
381-
nxTransSelectFromTypeTree = indexUpdate(prev.nxTransSelectFromTypeTree, changedTransformationClass, transformationIndex, "transformSelectFromTypeTree", copy)
382376
nxTransBind = indexUpdate(prev.nxTransBind, changedTransformationClass, transformationIndex, "transformBind", copy)
383377
nxTransAlternative = indexUpdate(prev.nxTransAlternative, changedTransformationClass, transformationIndex, "transformAlternative", copy)
384378
nxTransUnApply = indexUpdate(prev.nxTransUnApply, changedTransformationClass, transformationIndex, "transformUnApply", copy)
@@ -414,7 +408,6 @@ object TreeTransforms {
414408
var nxPrepTry: Array[Int] = _
415409
var nxPrepSeqLiteral: Array[Int] = _
416410
var nxPrepTypeTree: Array[Int] = _
417-
var nxPrepSelectFromTypeTree: Array[Int] = _
418411
var nxPrepBind: Array[Int] = _
419412
var nxPrepAlternative: Array[Int] = _
420413
var nxPrepUnApply: Array[Int] = _
@@ -445,7 +438,6 @@ object TreeTransforms {
445438
var nxTransTry: Array[Int] = _
446439
var nxTransSeqLiteral: Array[Int] = _
447440
var nxTransTypeTree: Array[Int] = _
448-
var nxTransSelectFromTypeTree: Array[Int] = _
449441
var nxTransBind: Array[Int] = _
450442
var nxTransAlternative: Array[Int] = _
451443
var nxTransUnApply: Array[Int] = _
@@ -524,7 +516,6 @@ object TreeTransforms {
524516
val prepForTry: Mutator[Try] = (trans, tree, ctx) => trans.prepareForTry(tree)(ctx)
525517
val prepForSeqLiteral: Mutator[SeqLiteral] = (trans, tree, ctx) => trans.prepareForSeqLiteral(tree)(ctx)
526518
val prepForTypeTree: Mutator[TypeTree] = (trans, tree, ctx) => trans.prepareForTypeTree(tree)(ctx)
527-
val prepForSelectFromTypeTree: Mutator[SelectFromTypeTree] = (trans, tree, ctx) => trans.prepareForSelectFromTypeTree(tree)(ctx)
528519
val prepForBind: Mutator[Bind] = (trans, tree, ctx) => trans.prepareForBind(tree)(ctx)
529520
val prepForAlternative: Mutator[Alternative] = (trans, tree, ctx) => trans.prepareForAlternative(tree)(ctx)
530521
val prepForUnApply: Mutator[UnApply] = (trans, tree, ctx) => trans.prepareForUnApply(tree)(ctx)
@@ -760,17 +751,6 @@ object TreeTransforms {
760751
} else tree
761752
}
762753

763-
@tailrec
764-
final private[TreeTransforms] def goSelectFromTypeTree(tree: SelectFromTypeTree, cur: Int)(implicit ctx: Context, info: TransformerInfo): Tree = {
765-
if (cur < info.transformers.length) {
766-
val trans = info.transformers(cur)
767-
trans.transformSelectFromTypeTree(tree)(ctx.withPhase(trans.treeTransformPhase), info) match {
768-
case t: SelectFromTypeTree => goSelectFromTypeTree(t, info.nx.nxTransSelectFromTypeTree(cur + 1))
769-
case t => transformSingle(t, cur + 1)
770-
}
771-
} else tree
772-
}
773-
774754
@tailrec
775755
final private[TreeTransforms] def goBind(tree: Bind, cur: Int)(implicit ctx: Context, info: TransformerInfo): Tree = {
776756
if (cur < info.transformers.length) {
@@ -880,8 +860,6 @@ object TreeTransforms {
880860
tree match {
881861
case tree: Ident => goIdent(tree, info.nx.nxTransIdent(cur))
882862
case tree: Select => goSelect(tree, info.nx.nxTransSelect(cur))
883-
case tree: SelectFromTypeTree =>
884-
goSelectFromTypeTree(tree, info.nx.nxTransSelectFromTypeTree(cur))
885863
case tree: Bind => goBind(tree, cur)
886864
case tree: ValDef if !tree.isEmpty => goValDef(tree, info.nx.nxTransValDef(cur))
887865
case tree: DefDef => goDefDef(tree, info.nx.nxTransDefDef(cur))
@@ -946,13 +924,6 @@ object TreeTransforms {
946924
val qual = transform(tree.qualifier, mutatedInfo, cur)
947925
goSelect(cpy.Select(tree)(qual, tree.name), mutatedInfo.nx.nxTransSelect(cur))
948926
}
949-
case tree: SelectFromTypeTree =>
950-
implicit val mutatedInfo: TransformerInfo = mutateTransformers(info, prepForSelectFromTypeTree, info.nx.nxPrepSelectFromTypeTree, tree, cur)
951-
if (mutatedInfo eq null) tree
952-
else {
953-
val qual = transform(tree.qualifier, mutatedInfo, cur)
954-
goSelectFromTypeTree(cpy.SelectFromTypeTree(tree)(qual, tree.name), mutatedInfo.nx.nxTransSelectFromTypeTree(cur))
955-
}
956927
case tree: Bind =>
957928
implicit val mutatedInfo: TransformerInfo = mutateTransformers(info, prepForBind, info.nx.nxPrepBind, tree, cur)
958929
if (mutatedInfo eq null) tree

src/dotty/tools/dotc/typer/Checking.scala

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -99,8 +99,6 @@ object Checking {
9999
checkValidIfHKApply(ctx.addMode(Mode.AllowLambdaWildcardApply))
100100
case Select(qual, name) if name.isTypeName =>
101101
checkRealizable(qual.tpe, qual.pos)
102-
case SelectFromTypeTree(qual, name) if name.isTypeName =>
103-
checkRealizable(qual.tpe, qual.pos)
104102
case SingletonTypeTree(ref) =>
105103
checkRealizable(ref.tpe, ref.pos)
106104
case _ =>

src/dotty/tools/dotc/typer/ReTyper.scala

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -38,12 +38,6 @@ class ReTyper extends Typer {
3838
untpd.cpy.Select(tree)(qual1, tree.name).withType(tree.typeOpt)
3939
}
4040

41-
override def typedSelectFromTypeTree(tree: untpd.SelectFromTypeTree, pt: Type)(implicit ctx: Context): Tree = {
42-
assert(tree.hasType)
43-
val qual1 = typed(tree.qualifier, AnySelectionProto)
44-
untpd.cpy.SelectFromTypeTree(tree)(qual1, tree.name).withType(tree.typeOpt)
45-
}
46-
4741
override def typedLiteral(tree: untpd.Literal)(implicit ctc: Context): Literal =
4842
promote(tree)
4943

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

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -263,9 +263,6 @@ trait TypeAssigner {
263263
tree.withType(tp)
264264
}
265265

266-
def assignType(tree: untpd.SelectFromTypeTree, qual: Tree)(implicit ctx: Context) =
267-
tree.withType(accessibleSelectionType(tree, qual))
268-
269266
def assignType(tree: untpd.New, tpt: Tree)(implicit ctx: Context) =
270267
tree.withType(tpt.tpe)
271268

0 commit comments

Comments
 (0)