summaryrefslogtreecommitdiff
path: root/test/checker-tests/fail4.scala
diff options
context:
space:
mode:
Diffstat (limited to 'test/checker-tests/fail4.scala')
-rw-r--r--test/checker-tests/fail4.scala136
1 files changed, 136 insertions, 0 deletions
diff --git a/test/checker-tests/fail4.scala b/test/checker-tests/fail4.scala
new file mode 100644
index 0000000000..7bf44617f9
--- /dev/null
+++ b/test/checker-tests/fail4.scala
@@ -0,0 +1,136 @@
+// Incompatible stacks in icode: BoxedUnit vs. empty.
+class Classy {
+ def f(b: Boolean): Unit = synchronized {
+ if (b) ()
+ }
+}
+
+// % work/check all -Xprint:icode work/fail4.scala
+// TypeStack init: REFERENCE(type AnyRef)
+// [Not checkable: parser]
+// [Not checkable: namer]
+// [Not checkable: packageobjects]
+// [Now checking: typer]
+// [Now checking: superaccessors]
+// [Now checking: pickler]
+// [Now checking: refchecks]
+// [Now checking: selectiveanf]
+// [Now checking: liftcode]
+// [Now checking: selectivecps]
+// [Now checking: uncurry]
+// [Now checking: tailcalls]
+// [Not checkable: specialize]
+// [Not checkable: explicitouter]
+// [Now checking: erasure]
+// [Now checking: lazyvals]
+// [Now checking: lambdalift]
+// [Now checking: constructors]
+// [Now checking: flatten]
+// [Now checking: mixin]
+// [Now checking: cleanup]
+// [[syntax trees at end of icode]]// Scala source: fail4.scala
+// package <empty> {
+// class Classy extends java.lang.Object with ScalaObject {
+// def f(b: Boolean): Unit = {
+// Classy.this.synchronized(if (b)
+// scala.runtime.BoxedUnit.UNIT
+// else
+// scala.runtime.BoxedUnit.UNIT);
+// ()
+// };
+// def this(): Classy = {
+// Classy.super.this();
+// ()
+// }
+// }
+// }
+//
+// [Now checking: icode]
+//
+// ** Checking class Classy
+//
+// ** Checking method Classy.f
+// ** Checking Block 1 [S: 4, 3] [P: N/A]
+// 1-> REFERENCE(class Classy)
+// 0<- REFERENCE(class Classy)
+// 1-> REFERENCE(class Classy)
+// 2-> REFERENCE(class Classy)
+// 1<- REFERENCE(class Classy)
+// 0<- REFERENCE(class Classy)
+// Output changed for Block 1 [S: 4, 3] [P: N/A]
+// ** Checking Block 4 [S: 3, 6, 5] [P: 1]
+// 1-> BOOL
+// 0<- BOOL
+// Output changed for Block 4 [S: 3, 6, 5] [P: 1]
+// ** Checking Block 3 [S: N/A] [P: 1, 4, 5, 6, 7]
+// 1-> REFERENCE(class Throwable)
+// 2-> REFERENCE(class Object)
+// 1<- REFERENCE(class Object)
+// 0<- REFERENCE(class Throwable)
+// 1-> REFERENCE(trait Nothing)
+// ** Checking Block 6 [S: 3, 7] [P: 4]
+// 1-> REFERENCE(class BoxedUnit)
+// Output changed for Block 6 [S: 3, 7] [P: 4]
+// ** Checking Block 5 [S: 3, 7] [P: 4]
+// 1-> REFERENCE(class BoxedUnit)
+// Output changed for Block 5 [S: 3, 7] [P: 4]
+// Checker created new stack: (List(REFERENCE(class BoxedUnit)), List(REFERENCE(class BoxedUnit))) => List(REFERENCE(class BoxedUnit))
+// TypeStack init: REFERENCE(class BoxedUnit)
+// Checker created new stack: (List(REFERENCE(class BoxedUnit)), List(REFERENCE(class BoxedUnit))) => List(REFERENCE(class BoxedUnit))
+// TypeStack init: REFERENCE(class BoxedUnit)
+// Checker created new stack: (List(REFERENCE(class BoxedUnit)), List(REFERENCE(class BoxedUnit))) => List(REFERENCE(class BoxedUnit))
+// TypeStack init: REFERENCE(class BoxedUnit)
+// ** Checking Block 3 [S: N/A] [P: 1, 4, 5, 6, 7] with initial stack [REFERENCE(class BoxedUnit)]
+// TypeStack init: REFERENCE(class BoxedUnit)
+// 0<- REFERENCE(class BoxedUnit)
+// 1-> REFERENCE(class Throwable)
+// 2-> REFERENCE(class Object)
+// 1<- REFERENCE(class Object)
+// 0<- REFERENCE(class Throwable)
+// 1-> REFERENCE(trait Nothing)
+// ** Checking Block 7 [S: 3, 2] [P: 5, 6] with initial stack [REFERENCE(class BoxedUnit)]
+// TypeStack init: REFERENCE(class BoxedUnit)
+// 0<- REFERENCE(class BoxedUnit)
+// 1-> REFERENCE(class Object)
+// 0<- REFERENCE(class Object)
+// Output changed for Block 7 [S: 3, 2] [P: 5, 6]
+// Checker created new stack: (List(REFERENCE(class BoxedUnit)), List(REFERENCE(class BoxedUnit))) => List(REFERENCE(class BoxedUnit))
+// TypeStack init: REFERENCE(class BoxedUnit)
+// Exception in thread "main" scala.tools.nsc.backend.icode.CheckerException: Incompatible stacks: TypeStack(1 elems) {
+// REFERENCE(class BoxedUnit)
+// } and TypeStack() in Classy.f at entry to block: 3
+// at scala.tools.nsc.backend.icode.Checkers$ICodeChecker.meet2$1(Checkers.scala:165)
+// at scala.tools.nsc.backend.icode.Checkers$ICodeChecker$$anonfun$meet$2.apply(Checkers.scala:174)
+// at scala.tools.nsc.backend.icode.Checkers$ICodeChecker$$anonfun$meet$2.apply(Checkers.scala:174)
+// at scala.collection.LinearSeqOptimized$class.foldLeft(LinearSeqOptimized.scala:123)
+// at scala.collection.immutable.List.foldLeft(List.scala:45)
+// at scala.collection.LinearSeqOptimized$class.reduceLeft(LinearSeqOptimized.scala:137)
+// at scala.collection.immutable.List.reduceLeft(List.scala:45)
+// at scala.tools.nsc.backend.icode.Checkers$ICodeChecker.meet(Checkers.scala:174)
+// at scala.tools.nsc.backend.icode.Checkers$ICodeChecker$$anonfun$check$5.apply(Checkers.scala:140)
+// at scala.tools.nsc.backend.icode.Checkers$ICodeChecker$$anonfun$check$5.apply(Checkers.scala:140)
+// at scala.collection.LinearSeqOptimized$class.foreach(LinearSeqOptimized.scala:61)
+// at scala.collection.immutable.List.foreach(List.scala:45)
+// at scala.tools.nsc.backend.icode.Checkers$ICodeChecker.check(Checkers.scala:140)
+// at scala.tools.nsc.backend.icode.Checkers$ICodeChecker.check(Checkers.scala:110)
+// at scala.tools.nsc.backend.icode.Checkers$ICodeChecker$$anonfun$check$3.apply(Checkers.scala:103)
+// at scala.tools.nsc.backend.icode.Checkers$ICodeChecker$$anonfun$check$3.apply(Checkers.scala:103)
+// at scala.collection.LinearSeqOptimized$class.foreach(LinearSeqOptimized.scala:61)
+// at scala.collection.immutable.List.foreach(List.scala:45)
+// at scala.tools.nsc.backend.icode.Checkers$ICodeChecker.check(Checkers.scala:103)
+// at scala.tools.nsc.backend.icode.Checkers$ICodeChecker$$anonfun$checkICodes$1.apply(Checkers.scala:81)
+// at scala.tools.nsc.backend.icode.Checkers$ICodeChecker$$anonfun$checkICodes$1.apply(Checkers.scala:81)
+// at scala.collection.mutable.HashMap$$anon$2$$anonfun$foreach$3.apply(HashMap.scala:89)
+// at scala.collection.mutable.HashMap$$anon$2$$anonfun$foreach$3.apply(HashMap.scala:89)
+// at scala.collection.Iterator$class.foreach(Iterator.scala:631)
+// at scala.collection.mutable.HashTable$$anon$1.foreach(HashTable.scala:161)
+// at scala.collection.mutable.HashTable$class.foreachEntry(HashTable.scala:194)
+// at scala.collection.mutable.HashMap.foreachEntry(HashMap.scala:39)
+// at scala.collection.mutable.HashMap$$anon$2.foreach(HashMap.scala:89)
+// at scala.tools.nsc.backend.icode.Checkers$ICodeChecker.checkICodes(Checkers.scala:81)
+// at scala.tools.nsc.Global$Run.compileSources(Global.scala:759)
+// at scala.tools.nsc.Global$Run.compile(Global.scala:823)
+// at scala.tools.nsc.Main$.process(Main.scala:106)
+// at scala.tools.nsc.Main$.main(Main.scala:120)
+// at scala.tools.nsc.Main.main(Main.scala)
+// [paulp@leaf trunk (check-all)]$