summaryrefslogtreecommitdiff
path: root/src/compiler/scala/tools/nsc/typechecker/Typers.scala
diff options
context:
space:
mode:
authorSom Snytt <som.snytt@gmail.com>2012-04-27 02:02:55 -0700
committerSom Snytt <som.snytt@gmail.com>2012-04-28 01:39:54 -0700
commit77b577a5aeab782b64b39b3a812c35fdd8ab265a (patch)
treec8c832e553580257d67b90e23e8599e45182676a /src/compiler/scala/tools/nsc/typechecker/Typers.scala
parent2a9cce8a6859a34c259d0b399687df3a242de16b (diff)
downloadscala-77b577a5aeab782b64b39b3a812c35fdd8ab265a.tar.gz
scala-77b577a5aeab782b64b39b3a812c35fdd8ab265a.tar.bz2
scala-77b577a5aeab782b64b39b3a812c35fdd8ab265a.zip
SI-5543: Ctor default arg wrongly scoped (revised)
This patch fixes the motivating bug by detecting when a method is the default arg getter for a constructor parameter. That requires fixing a secondary bug where an arbitrary string was used to encode <init> in lieu of <init>.encode. There is no speculative mangling.
Diffstat (limited to 'src/compiler/scala/tools/nsc/typechecker/Typers.scala')
-rw-r--r--src/compiler/scala/tools/nsc/typechecker/Typers.scala4
1 files changed, 3 insertions, 1 deletions
diff --git a/src/compiler/scala/tools/nsc/typechecker/Typers.scala b/src/compiler/scala/tools/nsc/typechecker/Typers.scala
index 1392f39c48..ccccf2de99 100644
--- a/src/compiler/scala/tools/nsc/typechecker/Typers.scala
+++ b/src/compiler/scala/tools/nsc/typechecker/Typers.scala
@@ -4649,7 +4649,9 @@ trait Typers extends Modes with Adaptations with Taggings with PatMatVirtualiser
case ddef @ DefDef(_, _, _, _, _, _) =>
// flag default getters for constructors. An actual flag would be nice. See SI-5543.
- val flag = ddef.mods.hasDefaultFlag && nme.defaultGetterToMethod(sym.name) == nme.CONSTRUCTOR
+ //val flag = ddef.mods.hasDefaultFlag && ddef.mods.hasFlag(PRESUPER)
+ val flag = ddef.mods.hasDefaultFlag && sym.owner.isModuleClass &&
+ nme.defaultGetterToMethod(sym.name) == nme.CONSTRUCTOR
newTyper(context.makeNewScope(tree, sym)).constrTyperIf(flag).typedDefDef(ddef)
case tdef @ TypeDef(_, _, _, _) =>