@@ -333,13 +333,11 @@ class QuotesImpl private (using val ctx: Context) extends Quotes, QuoteUnpickler
333
333
334
334
object TermTypeTest extends TypeTest [Tree , Term ]:
335
335
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
339
337
case x : (tpd.SeqLiteral & x.type ) => Some (x)
340
338
case x : (tpd.Inlined & x.type ) => Some (x)
341
339
case x : (tpd.NamedArg & x.type ) => Some (x)
342
- case _ => None
340
+ case _ => if x.isTerm then Some (x) else None
343
341
end TermTypeTest
344
342
345
343
object Term extends TermModule :
@@ -1424,14 +1422,12 @@ class QuotesImpl private (using val ctx: Context) extends Quotes, QuoteUnpickler
1424
1422
end extension
1425
1423
end BindMethods
1426
1424
1427
- type Unapply = tpd.UnApply | tpd. Typed // tpd.Typed containing a tpd.UnApply as expression
1425
+ type Unapply = tpd.UnApply
1428
1426
1429
1427
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
1435
1431
end UnapplyTypeTest
1436
1432
1437
1433
object Unapply extends UnapplyModule :
@@ -1443,14 +1439,10 @@ class QuotesImpl private (using val ctx: Context) extends Quotes, QuoteUnpickler
1443
1439
1444
1440
given UnapplyMethods : UnapplyMethods with
1445
1441
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
1454
1446
private def effectivePatterns (patterns : List [Tree ]): List [Tree ] =
1455
1447
patterns match
1456
1448
case patterns0 :+ dotc.ast.Trees .SeqLiteral (elems, _) => patterns0 ::: elems
0 commit comments