summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIulian Dragos <jaguarul@gmail.com>2008-11-18 11:20:05 +0000
committerIulian Dragos <jaguarul@gmail.com>2008-11-18 11:20:05 +0000
commit7f72290295636bc98822dee5994260c480ff42bd (patch)
tree04e48dab81f048ef34a8cfe0eaee23fbd826d61a
parentbc452c0ef2889e1071e1685688771900903b8527 (diff)
downloadscala-7f72290295636bc98822dee5994260c480ff42bd.tar.gz
scala-7f72290295636bc98822dee5994260c480ff42bd.tar.bz2
scala-7f72290295636bc98822dee5994260c480ff42bd.zip
Fixed #1453.
-rw-r--r--src/compiler/scala/tools/nsc/backend/icode/GenICode.scala4
-rw-r--r--src/library/scala/runtime/Nothing$.scala2
-rw-r--r--test/files/run/verify-ctor.check1
-rw-r--r--test/files/run/verify-ctor.scala13
4 files changed, 16 insertions, 4 deletions
diff --git a/src/compiler/scala/tools/nsc/backend/icode/GenICode.scala b/src/compiler/scala/tools/nsc/backend/icode/GenICode.scala
index 736780a435..5a257571a8 100644
--- a/src/compiler/scala/tools/nsc/backend/icode/GenICode.scala
+++ b/src/compiler/scala/tools/nsc/backend/icode/GenICode.scala
@@ -1036,9 +1036,7 @@ abstract class GenICode extends SubComponent {
ctx.bb.emit(CALL_PRIMITIVE(Conversion(from, to)), pos);
}
} else if (from == SCALA_ALL) {
- ctx.bb.emit(DROP(from))
- ctx.bb.emit(getZeroOf(ctx.method.returnType))
- ctx.bb.emit(RETURN(ctx.method.returnType))
+ ctx.bb.emit(THROW())
ctx.bb.enterIgnoreMode
} else if (from == SCALA_ALLREF) {
ctx.bb.emit(DROP(from))
diff --git a/src/library/scala/runtime/Nothing$.scala b/src/library/scala/runtime/Nothing$.scala
index c101637ff7..0aabaf6da8 100644
--- a/src/library/scala/runtime/Nothing$.scala
+++ b/src/library/scala/runtime/Nothing$.scala
@@ -18,4 +18,4 @@ package scala.runtime
* signatures, it is erased to this one.
*/
-sealed abstract class Nothing$
+sealed abstract class Nothing$ extends Throwable
diff --git a/test/files/run/verify-ctor.check b/test/files/run/verify-ctor.check
new file mode 100644
index 0000000000..8baef1b4ab
--- /dev/null
+++ b/test/files/run/verify-ctor.check
@@ -0,0 +1 @@
+abc
diff --git a/test/files/run/verify-ctor.scala b/test/files/run/verify-ctor.scala
new file mode 100644
index 0000000000..bbba17e821
--- /dev/null
+++ b/test/files/run/verify-ctor.scala
@@ -0,0 +1,13 @@
+class Test(val str: String) {
+ def this(arr: Array[Char]) = this({
+ if (arr.length == 0) exit(1)
+ new String(arr)
+ })
+}
+
+object Test {
+ def main(args: Array[String]) = {
+ val t = new Test(Array('a', 'b', 'c'))
+ println(t.str)
+ }
+}