summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorPaul Phillips <paulp@improving.org>2013-01-06 12:25:03 -0800
committerPaul Phillips <paulp@improving.org>2013-01-07 05:43:23 -0800
commitc58647f5f25e9d99cb1890a32af4621c4d4645fa (patch)
tree38b6a393b0121d1a1527514d3d45671732bf84de /test
parent766bb97114b5932b75340a9169558de61899997e (diff)
downloadscala-c58647f5f25e9d99cb1890a32af4621c4d4645fa.tar.gz
scala-c58647f5f25e9d99cb1890a32af4621c4d4645fa.tar.bz2
scala-c58647f5f25e9d99cb1890a32af4621c4d4645fa.zip
SI-6928, VerifyError with self reference to super.
A bug in typers mishandled varargs. We should get more aggressive about eliminating all the ad hoc parameter/argument handling code spread everywhere. For varargs especially: any code which tries to make an adjustment based on a repeated parameter is more likely to be wrong than right. In aggregate these reinventions are a huge source of bugs.
Diffstat (limited to 'test')
-rw-r--r--test/files/neg/t6928.check7
-rw-r--r--test/files/neg/t6928.scala10
-rw-r--r--test/files/run/t6928-run.check1
-rw-r--r--test/files/run/t6928-run.scala10
4 files changed, 28 insertions, 0 deletions
diff --git a/test/files/neg/t6928.check b/test/files/neg/t6928.check
new file mode 100644
index 0000000000..28b8e382dc
--- /dev/null
+++ b/test/files/neg/t6928.check
@@ -0,0 +1,7 @@
+t6928.scala:2: error: super constructor cannot be passed a self reference unless parameter is declared by-name
+object B extends A(B)
+ ^
+t6928.scala:3: error: super constructor cannot be passed a self reference unless parameter is declared by-name
+object C extends A(null, null, C)
+ ^
+two errors found
diff --git a/test/files/neg/t6928.scala b/test/files/neg/t6928.scala
new file mode 100644
index 0000000000..84bdcde45a
--- /dev/null
+++ b/test/files/neg/t6928.scala
@@ -0,0 +1,10 @@
+abstract class A( val someAs: A* )
+object B extends A(B)
+object C extends A(null, null, C)
+
+object Test {
+ def main(args: Array[String]): Unit = {
+ println(B.someAs)
+ println(C.someAs)
+ }
+}
diff --git a/test/files/run/t6928-run.check b/test/files/run/t6928-run.check
new file mode 100644
index 0000000000..a640c3e5fd
--- /dev/null
+++ b/test/files/run/t6928-run.check
@@ -0,0 +1 @@
+3 As
diff --git a/test/files/run/t6928-run.scala b/test/files/run/t6928-run.scala
new file mode 100644
index 0000000000..87a8884d60
--- /dev/null
+++ b/test/files/run/t6928-run.scala
@@ -0,0 +1,10 @@
+abstract class A( val someAs: A* ) {
+ override def toString = someAs.length + " As"
+}
+object B extends A(null, null, null)
+
+object Test {
+ def main(args: Array[String]): Unit = {
+ println(B)
+ }
+}