diff options
author | Martin Odersky <odersky@gmail.com> | 2017-02-22 16:15:30 +0100 |
---|---|---|
committer | Martin Odersky <odersky@gmail.com> | 2017-02-22 16:15:40 +0100 |
commit | e3bad2efa3abf4884e07c6222f5d152e18c64b2d (patch) | |
tree | dc3bec5c6960cc91101be9c141da9639cf61af16 /compiler | |
parent | 8a826ee3d7a7a7230dea8cc1fa4f87b70e8efe81 (diff) | |
download | dotty-e3bad2efa3abf4884e07c6222f5d152e18c64b2d.tar.gz dotty-e3bad2efa3abf4884e07c6222f5d152e18c64b2d.tar.bz2 dotty-e3bad2efa3abf4884e07c6222f5d152e18c64b2d.zip |
Fix #2020: Only the first parameters of a case class are caseaccessors
Only the parameters in the first parameter list of a case class should get
the `CaseAccessor` flag. Fixes #2020.
Diffstat (limited to 'compiler')
-rw-r--r-- | compiler/src/dotty/tools/dotc/ast/Desugar.scala | 8 |
1 files changed, 7 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, |