diff options
author | Paul Phillips <paulp@improving.org> | 2010-12-01 21:16:28 +0000 |
---|---|---|
committer | Paul Phillips <paulp@improving.org> | 2010-12-01 21:16:28 +0000 |
commit | 1660cfc41e6e58d19db6cfdb6a768831c57033f8 (patch) | |
tree | 1d88c2c16d85cc909f90b15c552c98e95e186ad2 /test/checker-tests/fail4.scala | |
parent | a37284fdf7e2b2917c9e894a9b93c02d1defc983 (diff) | |
download | scala-1660cfc41e6e58d19db6cfdb6a768831c57033f8.tar.gz scala-1660cfc41e6e58d19db6cfdb6a768831c57033f8.tar.bz2 scala-1660cfc41e6e58d19db6cfdb6a768831c57033f8.zip |
A patch authored by martin to fix one of the bi...
A patch authored by martin to fix one of the big outstanding issues with
-Ycheck. The typer had a vision of the world which fell to pieces if
presented with a tree from after phase constructors. Now it is wiser:
perhaps a bit sadder as well, but every typer must face this day sooner
or later.
Also removed the various passing tests from test/checker-tests, but
still plenty of fascinating failures in there for anyone interested in
helping push to the finish line! No review.
Diffstat (limited to 'test/checker-tests/fail4.scala')
-rw-r--r-- | test/checker-tests/fail4.scala | 136 |
1 files changed, 0 insertions, 136 deletions
diff --git a/test/checker-tests/fail4.scala b/test/checker-tests/fail4.scala deleted file mode 100644 index 7bf44617f9..0000000000 --- a/test/checker-tests/fail4.scala +++ /dev/null @@ -1,136 +0,0 @@ -// 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)]$ |