@@ -47,25 +47,20 @@ class QuoteContextImpl private (ctx: Context) extends QuoteContext, QuoteUnpickl
4747
4848 extension [T ](self : scala.quoted.Expr [T ]):
4949 def show : String =
50- reflect.TreeMethodsImpl .show(self.asReflectTree )
50+ reflect.TreeMethodsImpl .show(reflect. Term .of(self) )
5151
5252 def showAnsiColored : String =
53- reflect.TreeMethodsImpl .showAnsiColored(self.asReflectTree )
53+ reflect.TreeMethodsImpl .showAnsiColored(reflect. Term .of(self) )
5454
5555 def matches (that : scala.quoted.Expr [Any ]): Boolean =
56- treeMatch(self.asReflectTree, that.asReflectTree).nonEmpty
57-
58- def asReflectTree : reflect.Term =
59- val expr = self.asInstanceOf [ExprImpl ]
60- expr.checkScopeId(QuoteContextImpl .this .hashCode)
61- expr.tree
56+ treeMatch(reflect.Term .of(self), reflect.Term .of(that)).nonEmpty
6257
6358 end extension
6459
6560 extension [X ](self : scala.quoted.Expr [Any ]):
6661 /** Checks is the `quoted.Expr[?]` is valid expression of type `X` */
6762 def isExprOf (using scala.quoted.Type [X ]): Boolean =
68- reflect.TypeReprMethodsImpl .<:< (self.asReflectTree .tpe)(reflect.TypeRepr .of[X ])
63+ reflect.TypeReprMethodsImpl .<:< (reflect. Term .of(self) .tpe)(reflect.TypeRepr .of[X ])
6964
7065 /** Convert this to an `quoted.Expr[X]` if this expression is a valid expression of type `X` or throws */
7166 def asExprOf (using scala.quoted.Type [X ]): scala.quoted.Expr [X ] = {
@@ -74,7 +69,7 @@ class QuoteContextImpl private (ctx: Context) extends QuoteContext, QuoteUnpickl
7469 else
7570 throw Exception (
7671 s """ Expr cast exception: ${self.show}
77- |of type: ${reflect.TypeReprMethodsImpl .show(self.asReflectTree .tpe)}
72+ |of type: ${reflect.TypeReprMethodsImpl .show(reflect. Term .of(self) .tpe)}
7873 |did not conform to type: ${reflect.TypeReprMethodsImpl .show(reflect.TypeRepr .of[X ])}
7974 | """ .stripMargin
8075 )
@@ -89,7 +84,9 @@ class QuoteContextImpl private (ctx: Context) extends QuoteContext, QuoteUnpickl
8984
9085 type Tree = tpd.Tree
9186
92- object Tree extends TreeModule
87+ object Tree extends TreeModule :
88+ def of (expr : Expr [Any ]): Tree = Term .of(expr)
89+ end Tree
9390
9491 object TreeMethodsImpl extends TreeMethods :
9592 extension (self : Tree ):
@@ -328,6 +325,11 @@ class QuoteContextImpl private (ctx: Context) extends QuoteContext, QuoteUnpickl
328325 end TermTypeTest
329326
330327 object Term extends TermModule :
328+ def of (expr : Expr [Any ]): Term =
329+ val exprImpl = expr.asInstanceOf [ExprImpl ]
330+ exprImpl.checkScopeId(QuoteContextImpl .this .hashCode)
331+ exprImpl.tree
332+
331333 def betaReduce (tree : Term ): Option [Term ] =
332334 tree match
333335 case app @ tpd.Apply (tpd.Select (fn, nme.apply), args) if dotc.core.Symbols .defn.isFunctionType(fn.tpe) =>
@@ -2551,8 +2553,8 @@ class QuoteContextImpl private (ctx: Context) extends QuoteContext, QuoteUnpickl
25512553
25522554 object ExprMatch extends ExprMatchModule :
25532555 def unapply [TypeBindings <: Tuple , Tup <: Tuple ](scrutinee : scala.quoted.Expr [Any ])(using pattern : scala.quoted.Expr [Any ]): Option [Tup ] =
2554- val scrutineeTree = QuoteContextImpl . this .asReflectTree (scrutinee)
2555- val patternTree = QuoteContextImpl . this .asReflectTree (pattern)
2556+ val scrutineeTree = reflect. Term .of (scrutinee)
2557+ val patternTree = reflect. Term .of (pattern)
25562558 treeMatch(scrutineeTree, patternTree).asInstanceOf [Option [Tup ]]
25572559 end ExprMatch
25582560
0 commit comments