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