@@ -327,7 +327,9 @@ object PatternMatcher {
327
327
/** Plan for matching the result of an unapply against argument patterns `args` */
328
328
def unapplyPlan (unapp : Tree , args : List [Tree ]): Plan = {
329
329
def caseClass = unapp.symbol.owner.linkedClass
330
- lazy val caseAccessors = caseClass.caseAccessors.filter(sym => sym.is(Method ) || sym.owner.is(Scala2Tasty ))
330
+ lazy val scala2CaseAccessors =
331
+ if caseClass.is(Scala2Tasty ) then caseClass.caseAccessors
332
+ else caseClass.caseAccessors.filter(_.is(Method ))
331
333
332
334
def isSyntheticScala2Unapply (sym : Symbol ) =
333
335
sym.isAllOf(SyntheticCase ) && sym.owner.is(Scala2x )
@@ -337,11 +339,11 @@ object PatternMatcher {
337
339
.select(defn.RuntimeTuples_apply )
338
340
.appliedTo(receiver, Literal (Constant (i)))
339
341
340
- if (isSyntheticScala2Unapply(unapp.symbol) && caseAccessors .length == args.length)
342
+ if (isSyntheticScala2Unapply(unapp.symbol) && scala2CaseAccessors .length == args.length)
341
343
def tupleSel (sym : Symbol ) = ref(scrutinee).select(sym)
342
344
val isGenericTuple = defn.isTupleClass(caseClass) &&
343
345
! defn.isTupleNType(tree.tpe match { case tp : OrType => tp.join case tp => tp }) // widen even hard unions, to see if it's a union of tuples
344
- val components = if isGenericTuple then caseAccessors .indices.toList.map(tupleApp(_, ref(scrutinee))) else caseAccessors .map(tupleSel)
346
+ val components = if isGenericTuple then scala2CaseAccessors .indices.toList.map(tupleApp(_, ref(scrutinee))) else scala2CaseAccessors .map(tupleSel)
345
347
matchArgsPlan(components, args, onSuccess)
346
348
else if (unapp.tpe <:< (defn.BooleanType ))
347
349
TestPlan (GuardTest , unapp, unapp.span, onSuccess)
0 commit comments