summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/compiler/scala/tools/nsc/typechecker/Typers.scala8
-rw-r--r--test/files/neg/t5799.check4
-rw-r--r--test/files/neg/t5799.scala8
3 files changed, 18 insertions, 2 deletions
diff --git a/src/compiler/scala/tools/nsc/typechecker/Typers.scala b/src/compiler/scala/tools/nsc/typechecker/Typers.scala
index 393cbadc6a..130b03ebec 100644
--- a/src/compiler/scala/tools/nsc/typechecker/Typers.scala
+++ b/src/compiler/scala/tools/nsc/typechecker/Typers.scala
@@ -1386,8 +1386,12 @@ trait Typers extends Modes with Adaptations with Tags {
}
}
body foreach {
- case md: ModuleDef => unit.error(md.pos, "value class may not have nested module definitions")
- case cd: ClassDef => unit.error(cd.pos, "value class may not have nested class definitions")
+ case md: ModuleDef =>
+ unit.error(md.pos, "value class may not have nested module definitions")
+ case cd: ClassDef =>
+ unit.error(cd.pos, "value class may not have nested class definitions")
+ case md: DefDef if md.symbol.isConstructor && !md.symbol.isPrimaryConstructor =>
+ unit.error(md.pos, "value class may not have secondary constructors")
case _ =>
}
for (tparam <- clazz.typeParams)
diff --git a/test/files/neg/t5799.check b/test/files/neg/t5799.check
new file mode 100644
index 0000000000..10e2658d56
--- /dev/null
+++ b/test/files/neg/t5799.check
@@ -0,0 +1,4 @@
+t5799.scala:2: error: value class may not have secondary constructors
+ def this(s: String) = this(s.toDouble)
+ ^
+one error found
diff --git a/test/files/neg/t5799.scala b/test/files/neg/t5799.scala
new file mode 100644
index 0000000000..9bd6ab7dd1
--- /dev/null
+++ b/test/files/neg/t5799.scala
@@ -0,0 +1,8 @@
+class Foo(val bar: Double) extends AnyVal {
+ def this(s: String) = this(s.toDouble)
+}
+object Test {
+ def main(args: Array[String]): Unit =
+ new Foo("")
+ }
+