@@ -333,13 +333,10 @@ class QuotesImpl private (using val ctx: Context) extends Quotes, QuoteUnpickler
333333
334334 object TermTypeTest extends TypeTest [Tree , Term ]:
335335 def unapply (x : Tree ): Option [Term & x.type ] = x match
336- case _ if UnapplyTypeTest .unapply(x).isDefined => None
337- case _ : tpd.PatternTree => None
338- case x : (tpd.Tree & x.type ) if x.isTerm => Some (x)
339336 case x : (tpd.SeqLiteral & x.type ) => Some (x)
340337 case x : (tpd.Inlined & x.type ) => Some (x)
341338 case x : (tpd.NamedArg & x.type ) => Some (x)
342- case _ => None
339+ case _ => if x.isTerm then Some (x) else None
343340 end TermTypeTest
344341
345342 object Term extends TermModule :
@@ -1424,14 +1421,12 @@ class QuotesImpl private (using val ctx: Context) extends Quotes, QuoteUnpickler
14241421 end extension
14251422 end BindMethods
14261423
1427- type Unapply = tpd.UnApply | tpd. Typed // tpd.Typed containing a tpd.UnApply as expression
1424+ type Unapply = tpd.UnApply
14281425
14291426 object UnapplyTypeTest extends TypeTest [Tree , Unapply ]:
1430- def unapply (x : Tree ): Option [Unapply & x.type ] =
1431- x match // keep in sync with UnapplyMethodsImpl.selfUnApply
1432- case x : (tpd.UnApply & x.type ) => Some (x)
1433- case x : (tpd.Typed & x.type ) if x.expr.isInstanceOf [tpd.UnApply ] => Some (x)
1434- case _ => None
1427+ def unapply (x : Tree ): Option [Unapply & x.type ] = x match
1428+ case x : (tpd.UnApply & x.type ) => Some (x)
1429+ case _ => None
14351430 end UnapplyTypeTest
14361431
14371432 object Unapply extends UnapplyModule :
@@ -1443,14 +1438,10 @@ class QuotesImpl private (using val ctx: Context) extends Quotes, QuoteUnpickler
14431438
14441439 given UnapplyMethods : UnapplyMethods with
14451440 extension (self : Unapply )
1446- def fun : Term = selfUnApply(self).fun
1447- def implicits : List [Term ] = selfUnApply(self).implicits
1448- def patterns : List [Tree ] = effectivePatterns(selfUnApply(self).patterns)
1449- end extension
1450- private def selfUnApply (self : Unapply ): tpd.UnApply =
1451- self match // keep in sync with UnapplyTypeTest
1452- case self : tpd.UnApply => self
1453- case self : tpd.Typed => self.expr.asInstanceOf [tpd.UnApply ]
1441+ def fun : Term = self.fun
1442+ def implicits : List [Term ] = self.implicits
1443+ def patterns : List [Tree ] = effectivePatterns(self.patterns)
1444+ end extension
14541445 private def effectivePatterns (patterns : List [Tree ]): List [Tree ] =
14551446 patterns match
14561447 case patterns0 :+ dotc.ast.Trees .SeqLiteral (elems, _) => patterns0 ::: elems
0 commit comments