diff options
-rw-r--r-- | compiler/src/dotty/tools/dotc/ast/Desugar.scala | 8 | ||||
-rw-r--r-- | tests/run/i2020.scala | 8 |
2 files changed, 15 insertions, 1 deletions
diff --git a/compiler/src/dotty/tools/dotc/ast/Desugar.scala b/compiler/src/dotty/tools/dotc/ast/Desugar.scala index deb239143..b5be89440 100644 --- a/compiler/src/dotty/tools/dotc/ast/Desugar.scala +++ b/compiler/src/dotty/tools/dotc/ast/Desugar.scala @@ -469,7 +469,13 @@ object desugar { val originalVparams = constr1.vparamss.toIterator.flatten val tparamAccessors = derivedTparams.map(_.withMods(originalTparams.next.mods)) val caseAccessor = if (isCaseClass) CaseAccessor else EmptyFlags - val vparamAccessors = derivedVparamss.flatten.map(_.withMods(originalVparams.next.mods | caseAccessor)) + val vparamAccessors = derivedVparamss match { + case first :: rest => + first.map(_.withMods(originalVparams.next.mods | caseAccessor)) ++ + rest.flatten.map(_.withMods(originalVparams.next.mods)) + case _ => + Nil + } cpy.TypeDef(cdef)( name = className, rhs = cpy.Template(impl)(constr, parents1, self1, diff --git a/tests/run/i2020.scala b/tests/run/i2020.scala new file mode 100644 index 000000000..78794a590 --- /dev/null +++ b/tests/run/i2020.scala @@ -0,0 +1,8 @@ +object Test { + + case class Foo(x: Int)(y: Int) + + def main(args: Array[String]) = + assert(Foo(1)(1) == Foo(1)(2)) + +} |