From c558eecdcd6444919c0314043c0f328c85ca3b22 Mon Sep 17 00:00:00 2001 From: qunyanm Date: Fri, 26 Feb 2016 16:50:38 -0800 Subject: Fix issue 139. Allow bound variables in nested case patterns to shadow variables declared outside the enclosing match. --- Test/dafny4/Bug139.dfy | 25 +++++++++++++++++++++++++ Test/dafny4/Bug139.dfy.expect | 2 ++ 2 files changed, 27 insertions(+) create mode 100644 Test/dafny4/Bug139.dfy create mode 100644 Test/dafny4/Bug139.dfy.expect (limited to 'Test') diff --git a/Test/dafny4/Bug139.dfy b/Test/dafny4/Bug139.dfy new file mode 100644 index 00000000..bd4ded73 --- /dev/null +++ b/Test/dafny4/Bug139.dfy @@ -0,0 +1,25 @@ +// RUN: %dafny /compile:0 "%s" > "%t" +// RUN: %diff "%s.expect" "%t" + +datatype List = Nil | Cons(int, List) + +method R(xs: List) +{ + var a: int; + var b: int; + match xs + case Nil => + case Cons(a, Nil()) => // this 'a' is allowed + case Cons(x, Cons(b, tail)) => // this 'b' (which is in a nested position) generates an error +} + +function F(xs: List): int +{ + var a := 4; + var b := 7; + match xs + case Nil => 0 + case Cons(a, Nil()) => 1 + case Cons(x, Cons(b, tail)) => 2 +} + diff --git a/Test/dafny4/Bug139.dfy.expect b/Test/dafny4/Bug139.dfy.expect new file mode 100644 index 00000000..52595bf9 --- /dev/null +++ b/Test/dafny4/Bug139.dfy.expect @@ -0,0 +1,2 @@ + +Dafny program verifier finished with 3 verified, 0 errors -- cgit v1.2.3