diff options
author | Iulian Dragos <jaguarul@gmail.com> | 2010-06-14 11:27:45 +0000 |
---|---|---|
committer | Iulian Dragos <jaguarul@gmail.com> | 2010-06-14 11:27:45 +0000 |
commit | f492b003234d3c6e03fb0c1e71ac1eb5269f66a4 (patch) | |
tree | 5cc0b044a0587f4a1faf3ac7d4f4dcb2cd7b9523 | |
parent | d3a77021622a2ab214020cc9186480a1fe3e850c (diff) | |
download | scala-f492b003234d3c6e03fb0c1e71ac1eb5269f66a4.tar.gz scala-f492b003234d3c6e03fb0c1e71ac1eb5269f66a4.tar.bz2 scala-f492b003234d3c6e03fb0c1e71ac1eb5269f66a4.zip |
Closes #3558.
-rw-r--r-- | src/compiler/scala/tools/nsc/transform/Constructors.scala | 8 | ||||
-rw-r--r-- | test/files/run/spec-constr.check | 2 | ||||
-rw-r--r-- | test/files/run/spec-constr.scala | 14 |
3 files changed, 20 insertions, 4 deletions
diff --git a/src/compiler/scala/tools/nsc/transform/Constructors.scala b/src/compiler/scala/tools/nsc/transform/Constructors.scala index c9049d9ab1..21db224eef 100644 --- a/src/compiler/scala/tools/nsc/transform/Constructors.scala +++ b/src/compiler/scala/tools/nsc/transform/Constructors.scala @@ -16,6 +16,7 @@ import util.TreeSet abstract class Constructors extends Transform with ast.TreeDSL { import global._ import definitions._ + import collection.mutable /** the following two members override abstract members in Transform */ val phaseName: String = "constructors" @@ -23,11 +24,10 @@ abstract class Constructors extends Transform with ast.TreeDSL { protected def newTransformer(unit: CompilationUnit): Transformer = new ConstructorTransformer(unit) - class ConstructorTransformer(unit: CompilationUnit) extends Transformer { - import collection.mutable + private val guardedCtorStats: mutable.Map[Symbol, List[Tree]] = new mutable.HashMap[Symbol, List[Tree]] + private val ctorParams: mutable.Map[Symbol, List[Symbol]] = new mutable.HashMap[Symbol, List[Symbol]] - private val guardedCtorStats: mutable.Map[Symbol, List[Tree]] = new mutable.HashMap[Symbol, List[Tree]] - private val ctorParams: mutable.Map[Symbol, List[Symbol]] = new mutable.HashMap[Symbol, List[Symbol]] + class ConstructorTransformer(unit: CompilationUnit) extends Transformer { def transformClassTemplate(impl: Template): Template = { val clazz = impl.symbol.owner // the transformed class diff --git a/test/files/run/spec-constr.check b/test/files/run/spec-constr.check new file mode 100644 index 0000000000..29d70d9de8 --- /dev/null +++ b/test/files/run/spec-constr.check @@ -0,0 +1,2 @@ +hello? +goodbye diff --git a/test/files/run/spec-constr.scala b/test/files/run/spec-constr.scala new file mode 100644 index 0000000000..4c80d0954d --- /dev/null +++ b/test/files/run/spec-constr.scala @@ -0,0 +1,14 @@ +object Test { + class E[@specialized(Int) A](var f: A => Boolean) { + def this() = this(null) + + println("hello?") + if (f == null) f = { _ => false } + } + + def main(args: Array[String]) { + new E[Int] + println("goodbye") + } +} + |