summaryrefslogtreecommitdiff
path: root/Source/VCExpr
diff options
context:
space:
mode:
authorGravatar mikebarnett <unknown>2011-03-07 05:15:14 +0000
committerGravatar mikebarnett <unknown>2011-03-07 05:15:14 +0000
commit241de8264a32285d371a53d8d91a219625d76922 (patch)
treebde7c8c1dead587fc23a131810cf32779d7e9c8f /Source/VCExpr
parent0cd15d2b78a68bcdc566b31d53287f63625560e7 (diff)
Fix contracts so runtime checking can be turned on.
Diffstat (limited to 'Source/VCExpr')
-rw-r--r--Source/VCExpr/NameClashResolver.cs1
-rw-r--r--Source/VCExpr/SimplifyLikeLineariser.cs4
-rw-r--r--Source/VCExpr/TypeErasure.cs4
-rw-r--r--Source/VCExpr/VCExprASTVisitors.cs5
4 files changed, 7 insertions, 7 deletions
diff --git a/Source/VCExpr/NameClashResolver.cs b/Source/VCExpr/NameClashResolver.cs
index 4c6fcbb5..7c06af18 100644
--- a/Source/VCExpr/NameClashResolver.cs
+++ b/Source/VCExpr/NameClashResolver.cs
@@ -146,7 +146,6 @@ namespace Microsoft.Boogie.VCExprAST {
public string this[Object/*!*/ thingie] {
get {
Contract.Requires(thingie != null);
- Contract.Ensures(Contract.Result<String>() != null);
string res;
for (int i = LocalNames.Count - 1; i >= 0; --i) {
diff --git a/Source/VCExpr/SimplifyLikeLineariser.cs b/Source/VCExpr/SimplifyLikeLineariser.cs
index 45eeda43..c907bd9f 100644
--- a/Source/VCExpr/SimplifyLikeLineariser.cs
+++ b/Source/VCExpr/SimplifyLikeLineariser.cs
@@ -335,14 +335,14 @@ namespace Microsoft.Boogie.VCExprAST {
public static string StoreOpName(VCExprNAry node) {
Contract.Requires(node != null);
- Contract.Requires((node.Op is VCExprStoreOp));
+ Contract.Requires((node.Op is VCExprSelectOp) || (node.Op is VCExprStoreOp));
Contract.Ensures(Contract.Result<string>() != null);
return "Store_" + TypeToString(node[0].Type);
}
public static string SelectOpName(VCExprNAry node) {
Contract.Requires(node != null);
- Contract.Requires((node.Op is VCExprSelectOp));
+ Contract.Requires((node.Op is VCExprSelectOp) || (node.Op is VCExprStoreOp));
Contract.Ensures(Contract.Result<string>() != null);
return "Select_" + TypeToString(node[0].Type);
}
diff --git a/Source/VCExpr/TypeErasure.cs b/Source/VCExpr/TypeErasure.cs
index 20c946e5..5f3dbc36 100644
--- a/Source/VCExpr/TypeErasure.cs
+++ b/Source/VCExpr/TypeErasure.cs
@@ -633,7 +633,7 @@ namespace Microsoft.Boogie.TypeErasure {
protected VCExpr GenReverseCastEq(Function castToU, Function castFromU, out VCExprVar var, out List<VCTrigger/*!*/>/*!*/ triggers) {
Contract.Requires((castFromU != null));
Contract.Requires((castToU != null));
- Contract.Requires((cce.NonNullElements(Contract.ValueAtReturn(out triggers))));
+ Contract.Ensures((cce.NonNullElements(Contract.ValueAtReturn(out triggers))));
Contract.Ensures(Contract.ValueAtReturn(out var) != null);
Contract.Ensures(Contract.Result<VCExpr>() != null);
var = Gen.Variable("x", U);
@@ -1588,7 +1588,7 @@ namespace Microsoft.Boogie.TypeErasure {
[ContractInvariantMethod]
void ObjectInvariant() {
Contract.Invariant(cce.NonNullElements(varsInCasts));
- Contract.Invariant(cce.NonNullElements(varsOutsideCasts));
+ Contract.Invariant(varsOutsideCasts != null && Contract.ForAll(varsOutsideCasts, voc => voc.Key != null));
Contract.Invariant(AxBuilder != null);
}
diff --git a/Source/VCExpr/VCExprASTVisitors.cs b/Source/VCExpr/VCExprASTVisitors.cs
index 3e65ec23..c43ee478 100644
--- a/Source/VCExpr/VCExprASTVisitors.cs
+++ b/Source/VCExpr/VCExprASTVisitors.cs
@@ -634,9 +634,10 @@ namespace Microsoft.Boogie.VCExprAST {
return true;
}
- public static Dictionary<VCExprVar/*!*/, object/*!*/>/*!*/ FreeTermVariables(VCExpr node) {
+ public static Dictionary<VCExprVar/*!*/, object>/*!*/ FreeTermVariables(VCExpr node) {
Contract.Requires(node != null);
- Contract.Ensures(cce.NonNullElements(Contract.Result<Dictionary<VCExprVar, object>>()));
+ Contract.Ensures(Contract.Result<Dictionary<VCExprVar, object>>() != null);
+ Contract.Ensures(Contract.ForAll(Contract.Result<Dictionary<VCExprVar, object>>(), ftv => ftv.Key != null));
FreeVariableCollector collector = new FreeVariableCollector();
collector.Traverse(node, true);
return collector.FreeTermVars;