aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--compiler/src/dotty/tools/dotc/ast/Desugar.scala8
-rw-r--r--tests/run/i2020.scala8
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))
+
+}