From b1fcc5923b866dfe77e6acaf282980f3671870f5 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?R=C3=A9gis=20Blanc?= <regwblanc@gmail.com>
Date: Fri, 8 Apr 2016 01:18:38 +0200
Subject: [PATCH] no dependency on leon List

---
 testcases/verification/xlang/DataRacing.scala | 25 +++++++++++--------
 1 file changed, 14 insertions(+), 11 deletions(-)

diff --git a/testcases/verification/xlang/DataRacing.scala b/testcases/verification/xlang/DataRacing.scala
index 259295594..2d094a1d5 100644
--- a/testcases/verification/xlang/DataRacing.scala
+++ b/testcases/verification/xlang/DataRacing.scala
@@ -12,29 +12,32 @@ object DataRacing {
 
   implicit def toInstr(instr: (SharedState) => Unit): AtomicInstr = AtomicInstr(instr)
 
+  abstract class Runnable
+  case class RunnableCons(instr: AtomicInstr, tail: Runnable) extends Runnable
+  case class RunnableNil() extends Runnable
 
-  def execute(t1: List[AtomicInstr], t2: List[AtomicInstr], state: SharedState): Unit = (t1, t2) match {
-    case (x::xs, y::ys) =>
+  def execute(t1: Runnable, t2: Runnable, state: SharedState): Unit = (t1, t2) match {
+    case (RunnableCons(x,xs), RunnableCons(y,ys)) =>
       if(Random.nextBoolean) {
         x.instr(state)
-        execute(xs, y::ys, state)
+        execute(xs, RunnableCons(y,ys), state)
       } else {
         y.instr(state)
-        execute(x::xs, ys, state)
+        execute(RunnableCons(x,xs), ys, state)
       }
-    case (Nil(), y::ys) =>
+    case (RunnableNil(), RunnableCons(y,ys)) =>
       y.instr(state)
-      execute(Nil(), ys, state)
-    case (x::xs, Nil()) =>
+      execute(RunnableNil(), ys, state)
+    case (RunnableCons(x,xs), RunnableNil()) =>
       x.instr(state)
-      execute(xs, Nil(), state)
-    case (Nil(), Nil()) => ()
+      execute(xs, RunnableNil(), state)
+    case (RunnableNil(), RunnableNil()) => ()
   }
 
   def main(): Unit = {
     val state = SharedState(0)
-    val t1 = List[AtomicInstr]((s: SharedState) => s.i = s.i + 1)
-    val t2 = List[AtomicInstr]((s: SharedState) => s.i = s.i * 2)
+    val t1 = RunnableCons((s: SharedState) => s.i = s.i + 1, RunnableNil())
+    val t2 = RunnableCons((s: SharedState) => s.i = s.i * 2, RunnableNil())
     execute(t1, t2, state)
     assert(state.i == 2)
   }
-- 
GitLab