Skip to content

Commit 5af5be0

Browse files
Merge pull request #10435 from dotty-staging/add-miising-refelct-methods
Add TypeBoundsTree and WildcardTypeTree constructors
2 parents 12d58ef + f721456 commit 5af5be0

File tree

2 files changed

+11
-2
lines changed

2 files changed

+11
-2
lines changed

compiler/src/scala/quoted/runtime/impl/QuoteContextImpl.scala

+5
Original file line numberDiff line numberDiff line change
@@ -1298,6 +1298,10 @@ class QuoteContextImpl private (using val ctx: Context) extends QuoteContext, Qu
12981298
end TypeBoundsTreeTypeTest
12991299

13001300
object TypeBoundsTree extends TypeBoundsTreeModule:
1301+
def apply(low: TypeTree, hi: TypeTree): TypeBoundsTree =
1302+
withDefaultPos(tpd.TypeBoundsTree(low, hi))
1303+
def copy(original: Tree)(low: TypeTree, hi: TypeTree): TypeBoundsTree =
1304+
tpd.cpy.TypeBoundsTree(original)(low, hi, tpd.EmptyTree)
13011305
def unapply(x: TypeBoundsTree): Option[(TypeTree, TypeTree)] =
13021306
Some((x.low, x.hi))
13031307
end TypeBoundsTree
@@ -1323,6 +1327,7 @@ class QuoteContextImpl private (using val ctx: Context) extends QuoteContext, Qu
13231327
end WildcardTypeTreeTypeTest
13241328

13251329
object WildcardTypeTree extends WildcardTypeTreeModule:
1330+
def apply(tpe: TypeRepr): WildcardTypeTree = withDefaultPos(tpd.Underscore(tpe))
13261331
def unapply(x: WildcardTypeTree): Boolean = true
13271332
end WildcardTypeTree
13281333

library/src/scala/quoted/QuoteContext.scala

+6-2
Original file line numberDiff line numberDiff line change
@@ -1561,6 +1561,8 @@ trait QuoteContext { self: runtime.QuoteUnpickler & runtime.QuoteMatching =>
15611561
val TypeBoundsTree: TypeBoundsTreeModule
15621562

15631563
trait TypeBoundsTreeModule { this: TypeBoundsTree.type =>
1564+
def apply(low: TypeTree, hi: TypeTree): TypeBoundsTree
1565+
def copy(original: Tree)(low: TypeTree, hi: TypeTree): TypeBoundsTree
15641566
def unapply(x: TypeBoundsTree): Option[(TypeTree, TypeTree)]
15651567
}
15661568

@@ -1587,6 +1589,7 @@ trait QuoteContext { self: runtime.QuoteUnpickler & runtime.QuoteMatching =>
15871589
val WildcardTypeTree: WildcardTypeTreeModule
15881590

15891591
trait WildcardTypeTreeModule { this: WildcardTypeTree.type =>
1592+
def apply(tpe: TypeRepr): WildcardTypeTree
15901593
/** Matches a TypeBoundsTree containing wildcard type bounds */
15911594
def unapply(x: WildcardTypeTree): Boolean
15921595
}
@@ -3548,8 +3551,9 @@ trait QuoteContext { self: runtime.QuoteUnpickler & runtime.QuoteMatching =>
35483551
case tree: Statement =>
35493552
transformStatement(tree)(owner)
35503553
case tree: TypeTree => transformTypeTree(tree)(owner)
3551-
case tree: TypeBoundsTree => tree // TODO traverse tree
3552-
case tree: WildcardTypeTree => tree // TODO traverse tree
3554+
case tree: TypeBoundsTree =>
3555+
TypeBoundsTree.copy(tree)(transformTypeTree(tree.low)(owner), transformTypeTree(tree.hi)(owner))
3556+
case tree: WildcardTypeTree => tree
35533557
case tree: CaseDef =>
35543558
transformCaseDef(tree)(owner)
35553559
case tree: TypeCaseDef =>

0 commit comments

Comments
 (0)