aboutsummaryrefslogtreecommitdiff
path: root/compiler/src
diff options
context:
space:
mode:
authorGuillaume Martres <smarter@ubuntu.com>2016-11-14 23:05:51 +0100
committerGuillaume Martres <smarter@ubuntu.com>2016-11-22 01:35:08 +0100
commit574a53f9913ca48c28ea2ea34ab153537ab329de (patch)
tree85755afa667fbe9ec01fae720c337c74cce0a6dc /compiler/src
parent6acdc1e85f04cc3a240ddb91983588897786d8ca (diff)
downloaddotty-574a53f9913ca48c28ea2ea34ab153537ab329de.tar.gz
dotty-574a53f9913ca48c28ea2ea34ab153537ab329de.tar.bz2
dotty-574a53f9913ca48c28ea2ea34ab153537ab329de.zip
Fix flags for default getters of constructors
This manifested itself as a pickling difference in tasty_tools
Diffstat (limited to 'compiler/src')
-rw-r--r--compiler/src/dotty/tools/dotc/ast/Desugar.scala2
-rw-r--r--compiler/src/dotty/tools/dotc/transform/TreeChecker.scala8
2 files changed, 9 insertions, 1 deletions
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