aboutsummaryrefslogtreecommitdiff
path: root/tests/run/colltest6
diff options
context:
space:
mode:
authorMartin Odersky <odersky@gmail.com>2016-07-27 14:22:59 +0200
committerMartin Odersky <odersky@gmail.com>2016-07-27 14:23:23 +0200
commit2e725908c3bd340daf140906885fdb43fba13a0f (patch)
treedbfa85317ade1dcf8db45a7f30b1b68a5d6f9ffc /tests/run/colltest6
parentaa0bf126cee8c738e7dba2494ce62b70b9aefb1e (diff)
downloaddotty-2e725908c3bd340daf140906885fdb43fba13a0f.tar.gz
dotty-2e725908c3bd340daf140906885fdb43fba13a0f.tar.bz2
dotty-2e725908c3bd340daf140906885fdb43fba13a0f.zip
Fix problem related to cbn parameters in supercalls
The closures generated by elimByName did not get the InSuperCall flag set. This caused problems in lambda lift which led to a verify error for the new version CollectionStrawMan6. That version replaces explicit function parameters in class LazyList by by-name parameters. Also: Clarify logic for liftLocals in LambdaLift (liftLocals caused the immediate problem but was in the end not to blame).
Diffstat (limited to 'tests/run/colltest6')
-rw-r--r--tests/run/colltest6/CollectionStrawMan6_1.scala10
1 files changed, 5 insertions, 5 deletions
diff --git a/tests/run/colltest6/CollectionStrawMan6_1.scala b/tests/run/colltest6/CollectionStrawMan6_1.scala
index f4d5e006b..5889782d6 100644
--- a/tests/run/colltest6/CollectionStrawMan6_1.scala
+++ b/tests/run/colltest6/CollectionStrawMan6_1.scala
@@ -562,14 +562,14 @@ object CollectionStrawMan6 extends LowPriority {
override def className = "ArrayBufferView"
}
- class LazyList[+A](expr: () => LazyList.Evaluated[A])
+ class LazyList[+A](expr: => LazyList.Evaluated[A])
extends LinearSeq[A] with SeqLike[A, LazyList] { self =>
private[this] var evaluated = false
private[this] var result: LazyList.Evaluated[A] = _
def force: LazyList.Evaluated[A] = {
if (!evaluated) {
- result = expr()
+ result = expr
evaluated = true
}
result
@@ -579,7 +579,7 @@ object CollectionStrawMan6 extends LowPriority {
override def head = force.get._1
override def tail = force.get._2
- def #:: [B >: A](elem: => B): LazyList[B] = new LazyList(() => Some((elem, self)))
+ def #:: [B >: A](elem: => B): LazyList[B] = new LazyList(Some((elem, self)))
def fromIterable[B](c: Iterable[B]): LazyList[B] = LazyList.fromIterable(c)
@@ -600,10 +600,10 @@ object CollectionStrawMan6 extends LowPriority {
def fromIterable[B](coll: Iterable[B]): LazyList[B] = coll match {
case coll: LazyList[B] => coll
- case _ => new LazyList(() => if (coll.isEmpty) None else Some((coll.head, fromIterable(coll.tail))))
+ case _ => new LazyList(if (coll.isEmpty) None else Some((coll.head, fromIterable(coll.tail))))
}
- object Empty extends LazyList[Nothing](() => None)
+ object Empty extends LazyList[Nothing](None)
object #:: {
def unapply[A](s: LazyList[A]): Evaluated[A] = s.force