@@ -667,18 +667,20 @@ object desugar {
667
667
DefDef (name, Nil , tpt, rhs).withMods(synthetic)
668
668
669
669
def productElemMeths =
670
- val caseParams = derivedVparamss.head.toArray
671
- val selectorNamesInBody = normalizedBody.collect {
672
- case vdef : ValDef if vdef.name.isSelectorName =>
673
- vdef.name
674
- case ddef : DefDef if ddef.name.isSelectorName && ddef.paramss.isEmpty =>
675
- ddef.name
676
- }
677
- for i <- List .range(0 , arity)
678
- selName = nme.selectorName(i)
679
- if (selName ne caseParams(i).name) && ! selectorNamesInBody.contains(selName)
680
- yield syntheticProperty(selName, caseParams(i).tpt,
681
- Select (This (EmptyTypeIdent ), caseParams(i).name))
670
+ if caseClassInScala2StdLib then Nil
671
+ else
672
+ val caseParams = derivedVparamss.head.toArray
673
+ val selectorNamesInBody = normalizedBody.collect {
674
+ case vdef : ValDef if vdef.name.isSelectorName =>
675
+ vdef.name
676
+ case ddef : DefDef if ddef.name.isSelectorName && ddef.paramss.isEmpty =>
677
+ ddef.name
678
+ }
679
+ for i <- List .range(0 , arity)
680
+ selName = nme.selectorName(i)
681
+ if (selName ne caseParams(i).name) && ! selectorNamesInBody.contains(selName)
682
+ yield syntheticProperty(selName, caseParams(i).tpt,
683
+ Select (This (EmptyTypeIdent ), caseParams(i).name))
682
684
683
685
def enumCaseMeths =
684
686
if isEnumCase then
@@ -768,11 +770,13 @@ object desugar {
768
770
val unapplyMeth = {
769
771
def scala2LibCompatUnapplyRhs (unapplyParamName : Name ) =
770
772
assert(arity <= Definitions .MaxTupleArity , " Unexpected case class with tuple larger than 22: " + cdef.show)
771
- if arity == 1 then Apply (scalaDot(nme.Option ), Select (Ident (unapplyParamName), nme._1))
772
- else
773
- val tupleApply = Select (Ident (nme.scala), s " Tuple $arity" .toTermName)
774
- val members = List .tabulate(arity) { n => Select (Ident (unapplyParamName), s " _ ${n+ 1 }" .toTermName) }
775
- Apply (scalaDot(nme.Option ), Apply (tupleApply, members))
773
+ derivedVparamss.head match
774
+ case vparam :: Nil =>
775
+ Apply (scalaDot(nme.Option ), Select (Ident (unapplyParamName), vparam.name))
776
+ case vparams =>
777
+ val tupleApply = Select (Ident (nme.scala), s " Tuple $arity" .toTermName)
778
+ val members = vparams.map(vparam => Select (Ident (unapplyParamName), vparam.name))
779
+ Apply (scalaDot(nme.Option ), Apply (tupleApply, members))
776
780
777
781
val hasRepeatedParam = constrVparamss.head.exists {
778
782
case ValDef (_, tpt, _) => isRepeated(tpt)
0 commit comments