diff options
-rw-r--r-- | src/dotty/tools/dotc/ast/Desugar.scala | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/src/dotty/tools/dotc/ast/Desugar.scala b/src/dotty/tools/dotc/ast/Desugar.scala index 513dee2ff..ba2b62faa 100644 --- a/src/dotty/tools/dotc/ast/Desugar.scala +++ b/src/dotty/tools/dotc/ast/Desugar.scala @@ -241,6 +241,14 @@ object desugar { val constr = cpy.DefDef(constr1, constr1.mods, constr1.name, constrTparams, constrVparamss, constr1.tpt, constr1.rhs) + // Add constructor type parameters to auxiliary constructors + val normalizedBody = body map { + case ddef: DefDef if ddef.name.isConstructorName => + cpy.DefDef(ddef, ddef.mods, ddef.name, constrTparams, ddef.vparamss, ddef.tpt, ddef.rhs) + case stat => + stat + } + val derivedTparams = constrTparams map derivedTypeParam val derivedVparamss = constrVparamss nestedMap derivedTermParam val arity = constrVparamss.head.length @@ -376,7 +384,7 @@ object desugar { } cpy.TypeDef(cdef, mods, name, cpy.Template(impl, constr, parents1, self1, - tparamAccessors ::: vparamAccessors ::: body ::: caseClassMeths)) + tparamAccessors ::: vparamAccessors ::: normalizedBody ::: caseClassMeths)) } // install the watch on classTycon |