summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar Rustan Leino <leino@microsoft.com>2011-12-07 07:55:01 -0800
committerGravatar Rustan Leino <leino@microsoft.com>2011-12-07 07:55:01 -0800
commitd8d1996a574c972b24216f9bfd922cc215df2668 (patch)
tree6491c87cf916be40d9fbeb4836416e91203c5943
parent714f99d776c21d8a1b50e0020eb678414a0cf67d (diff)
parenta1fa34eaba18abe4d6c7e610d939806332930ead (diff)
Merge
-rw-r--r--Dafny/Compiler.cs2
-rw-r--r--Dafny/DafnyAst.cs4
-rw-r--r--Dafny/Translator.cs2
-rw-r--r--DafnyDriver/DafnyDriver.cs2
-rw-r--r--Test/dafny0/Answer12
-rw-r--r--Test/dafny0/SmallTests.dfy20
6 files changed, 34 insertions, 8 deletions
diff --git a/Dafny/Compiler.cs b/Dafny/Compiler.cs
index d0e0cb0e..b49c011f 100644
--- a/Dafny/Compiler.cs
+++ b/Dafny/Compiler.cs
@@ -1367,7 +1367,7 @@ namespace Microsoft.Dafny {
Type elType = cce.NonNull((MultiSetType)e.Type).Arg;
wr.Write("{0}<{1}>.FromElements", DafnyMultiSetClass, TypeName(elType));
TrExprList(e.Elements);
-
+
} else if (expr is SeqDisplayExpr) {
SeqDisplayExpr e = (SeqDisplayExpr)expr;
Type elType = cce.NonNull((SeqType)e.Type).Arg;
diff --git a/Dafny/DafnyAst.cs b/Dafny/DafnyAst.cs
index 8272736c..99ebe8da 100644
--- a/Dafny/DafnyAst.cs
+++ b/Dafny/DafnyAst.cs
@@ -262,7 +262,7 @@ namespace Microsoft.Dafny {
this.Arg = arg;
}
}
-
+
public class SetType : CollectionType {
public SetType(Type arg) : base(arg) {
Contract.Requires(arg != null);
@@ -2149,7 +2149,7 @@ namespace Microsoft.Dafny {
get { return Elements; }
}
}
-
+
public class SetDisplayExpr : DisplayExpression {
public SetDisplayExpr(IToken tok, List<Expression/*!*/>/*!*/ elements)
: base(tok, elements) {
diff --git a/Dafny/Translator.cs b/Dafny/Translator.cs
index d1e41663..5f382eb6 100644
--- a/Dafny/Translator.cs
+++ b/Dafny/Translator.cs
@@ -1499,7 +1499,7 @@ namespace Microsoft.Dafny {
Bpl.Expr.Eq(Bpl.Expr.Literal(mod.CallGraph.GetSCCRepresentativeId(f)), etran.FunctionContextHeight()));
req.Add(Requires(f.tok, true, context, null, null));
Bpl.Procedure proc = new Bpl.Procedure(f.tok, "CheckWellformed$$" + f.FullName, typeParams, inParams, new Bpl.VariableSeq(),
- req, new Bpl.IdentifierExprSeq(), new Bpl.EnsuresSeq());
+ req, new Bpl.IdentifierExprSeq(), new Bpl.EnsuresSeq(), etran.TrAttributes(f.Attributes, null));
sink.TopLevelDeclarations.Add(proc);
VariableSeq implInParams = Bpl.Formal.StripWhereClauses(proc.InParams);
diff --git a/DafnyDriver/DafnyDriver.cs b/DafnyDriver/DafnyDriver.cs
index 648fd84f..2c2e64e6 100644
--- a/DafnyDriver/DafnyDriver.cs
+++ b/DafnyDriver/DafnyDriver.cs
@@ -368,7 +368,7 @@ namespace Microsoft.Dafny
}
}
- /// <summary>
+ /// <summary>
/// Resolve, type check, infer invariants for, and verify the given Boogie program.
/// The intention is that this Boogie program has been produced by translation from something
/// else. Hence, any resolution errors and type checking errors are due to errors in
diff --git a/Test/dafny0/Answer b/Test/dafny0/Answer
index aab1990d..fdfdf823 100644
--- a/Test/dafny0/Answer
+++ b/Test/dafny0/Answer
@@ -213,12 +213,15 @@ Execution trace:
(0,0): anon0
SmallTests.dfy(266,19): anon3_Else
(0,0): anon2
-SmallTests.dfy(366,12): Error: assertion violation
+SmallTests.dfy(376,12): Error: assertion violation
Execution trace:
(0,0): anon0
-SmallTests.dfy(376,12): Error: assertion violation
+SmallTests.dfy(386,12): Error: assertion violation
Execution trace:
(0,0): anon0
+SmallTests.dfy(396,6): Error: cannot prove termination; try supplying a decreases clause
+Execution trace:
+ (0,0): anon3_Else
SmallTests.dfy(306,3): Error BP5003: A postcondition might not hold on this return path.
SmallTests.dfy(300,11): Related location: This is the postcondition that might not hold.
Execution trace:
@@ -237,8 +240,11 @@ Execution trace:
SmallTests.dfy(354,10): Error: assertion violation
Execution trace:
(0,0): anon0
+SmallTests.dfy(364,4): Error: cannot prove termination; try supplying a decreases clause
+Execution trace:
+ (0,0): anon3_Else
-Dafny program verifier finished with 47 verified, 18 errors
+Dafny program verifier finished with 47 verified, 20 errors
-------------------- Definedness.dfy --------------------
Definedness.dfy(8,7): Error: possible division by zero
diff --git a/Test/dafny0/SmallTests.dfy b/Test/dafny0/SmallTests.dfy
index d4a0ad9a..2074e484 100644
--- a/Test/dafny0/SmallTests.dfy
+++ b/Test/dafny0/SmallTests.dfy
@@ -359,6 +359,16 @@ method {:verify false} test1()
assert false;
}
+function test2() : bool
+{
+ !test2() // error
+}
+
+function {:verify false} test3() : bool
+{
+ !test3()
+}
+
class Test {
method test0()
@@ -381,4 +391,14 @@ class Test {
assert false;
}
+ function test2() : bool
+ {
+ !test2() // error
+ }
+
+ function {:verify false} test3() : bool
+ {
+ !test3()
+ }
+
}