From 574a53f9913ca48c28ea2ea34ab153537ab329de Mon Sep 17 00:00:00 2001 From: Guillaume Martres Date: Mon, 14 Nov 2016 23:05:51 +0100 Subject: Fix flags for default getters of constructors This manifested itself as a pickling difference in tasty_tools --- compiler/src/dotty/tools/dotc/ast/Desugar.scala | 2 +- compiler/src/dotty/tools/dotc/transform/TreeChecker.scala | 8 ++++++++ 2 files changed, 9 insertions(+), 1 deletion(-) (limited to 'compiler') diff --git a/compiler/src/dotty/tools/dotc/ast/Desugar.scala b/compiler/src/dotty/tools/dotc/ast/Desugar.scala index 366a0e225..4b2ff1bc3 100644 --- a/compiler/src/dotty/tools/dotc/ast/Desugar.scala +++ b/compiler/src/dotty/tools/dotc/ast/Desugar.scala @@ -179,7 +179,7 @@ object desugar { DefDef( name = meth.name.defaultGetterName(n), tparams = meth.tparams.map(tparam => dropContextBound(toDefParam(tparam))), - vparamss = takeUpTo(normalizedVparamss, n), + vparamss = takeUpTo(normalizedVparamss.nestedMap(toDefParam), n), tpt = TypeTree(), rhs = vparam.rhs ).withMods(Modifiers(mods.flags & AccessFlags, mods.privateWithin)) diff --git a/compiler/src/dotty/tools/dotc/transform/TreeChecker.scala b/compiler/src/dotty/tools/dotc/transform/TreeChecker.scala index 4a09d2fef..aa4eefe43 100644 --- a/compiler/src/dotty/tools/dotc/transform/TreeChecker.scala +++ b/compiler/src/dotty/tools/dotc/transform/TreeChecker.scala @@ -397,6 +397,14 @@ class TreeChecker extends Phase with SymTransformer { withDefinedSyms(ddef.tparams) { withDefinedSymss(ddef.vparamss) { if (!sym.isClassConstructor && !(sym.name eq Names.STATIC_CONSTRUCTOR)) assert(isValidJVMMethodName(sym.name), s"${sym.fullName} name is invalid on jvm") + + ddef.vparamss.foreach(_.foreach { vparam => + assert(vparam.symbol.is(Param), + s"Parameter ${vparam.symbol} of ${sym.fullName} does not have flag `Param` set") + assert(!vparam.symbol.is(AccessFlags), + s"Parameter ${vparam.symbol} of ${sym.fullName} has invalid flag(s): ${vparam.symbol.flags & AccessFlags}") + }) + val tpdTree = super.typedDefDef(ddef, sym) assert(isMethodType(sym.info), i"wrong type, expect a method type for ${sym.fullName}, but found: ${sym.info}") tpdTree -- cgit v1.2.3