@@ -333,13 +333,11 @@ 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)
336+ case x : tpd.PatternTree => None
339337 case x : (tpd.SeqLiteral & x.type ) => Some (x)
340338 case x : (tpd.Inlined & x.type ) => Some (x)
341339 case x : (tpd.NamedArg & x.type ) => Some (x)
342- case _ => None
340+ case _ => if x.isTerm then Some (x) else None
343341 end TermTypeTest
344342
345343 object Term extends TermModule :
@@ -1424,14 +1422,12 @@ class QuotesImpl private (using val ctx: Context) extends Quotes, QuoteUnpickler
14241422 end extension
14251423 end BindMethods
14261424
1427- type Unapply = tpd.UnApply | tpd. Typed // tpd.Typed containing a tpd.UnApply as expression
1425+ type Unapply = tpd.UnApply
14281426
14291427 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
1428+ def unapply (x : Tree ): Option [Unapply & x.type ] = x match
1429+ case x : (tpd.UnApply & x.type ) => Some (x)
1430+ case _ => None
14351431 end UnapplyTypeTest
14361432
14371433 object Unapply extends UnapplyModule :
@@ -1443,14 +1439,10 @@ class QuotesImpl private (using val ctx: Context) extends Quotes, QuoteUnpickler
14431439
14441440 given UnapplyMethods : UnapplyMethods with
14451441 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 ]
1442+ def fun : Term = self.fun
1443+ def implicits : List [Term ] = self.implicits
1444+ def patterns : List [Tree ] = effectivePatterns(self.patterns)
1445+ end extension
14541446 private def effectivePatterns (patterns : List [Tree ]): List [Tree ] =
14551447 patterns match
14561448 case patterns0 :+ dotc.ast.Trees .SeqLiteral (elems, _) => patterns0 ::: elems
0 commit comments