summaryrefslogtreecommitdiff
path: root/Source/VCExpr
diff options
context:
space:
mode:
authorGravatar MichalMoskal <unknown>2010-08-18 00:13:29 +0000
committerGravatar MichalMoskal <unknown>2010-08-18 00:13:29 +0000
commita54af4e97ccf24b7bd8802d7411b67bc2b4c5e55 (patch)
treed45fdf422341f6b8df670c0bd8b3e7c5fff9b782 /Source/VCExpr
parent94b94b49c7efdf737c6b54fb6d7ae9dd2ab189e4 (diff)
Make /typeEncoding:m work with arrays
Diffstat (limited to 'Source/VCExpr')
-rw-r--r--Source/VCExpr/TypeErasure.cs2
-rw-r--r--Source/VCExpr/TypeErasureArguments.cs4
-rw-r--r--Source/VCExpr/TypeErasurePremisses.cs2
-rw-r--r--Source/VCExpr/VCExprASTVisitors.cs1
4 files changed, 5 insertions, 4 deletions
diff --git a/Source/VCExpr/TypeErasure.cs b/Source/VCExpr/TypeErasure.cs
index c4deb76c..5029ba53 100644
--- a/Source/VCExpr/TypeErasure.cs
+++ b/Source/VCExpr/TypeErasure.cs
@@ -727,7 +727,7 @@ Contract.Ensures(Contract.ValueAtReturn(out var) != null);
[Pure]
public override bool UnchangedType(Type type) {
Contract.Requires(type != null);
- return type.IsInt || type.IsBool || type.IsBv || (type.IsMap && CommandLineOptions.Clo.UseArrayTheory);
+ return type.IsInt || type.IsBool || type.IsBv || (type.IsMap && CommandLineOptions.Clo.MonomorphicArrays);
}
public VCExpr Cast(VCExpr expr, Type toType) {
diff --git a/Source/VCExpr/TypeErasureArguments.cs b/Source/VCExpr/TypeErasureArguments.cs
index c1a32aba..62bc72ea 100644
--- a/Source/VCExpr/TypeErasureArguments.cs
+++ b/Source/VCExpr/TypeErasureArguments.cs
@@ -192,7 +192,7 @@ Contract.Ensures(Contract.ValueAtReturn(out store) != null);
storeTypes[i] = AxBuilder.T;
}
// Fill in the map type
- if (CommandLineOptions.Clo.UseArrayTheory) {
+ if (CommandLineOptions.Clo.MonomorphicArrays) {
selectTypes[i] = abstractedType;
storeTypes[i] = abstractedType;
} else {
@@ -223,7 +223,7 @@ Contract.Ensures(Contract.ValueAtReturn(out store) != null);
}
i++;
// Fill in the map type which is the output of the store function
- if (CommandLineOptions.Clo.UseArrayTheory)
+ if (CommandLineOptions.Clo.MonomorphicArrays)
storeTypes[i] = abstractedType;
else
storeTypes[i] = AxBuilder.U;
diff --git a/Source/VCExpr/TypeErasurePremisses.cs b/Source/VCExpr/TypeErasurePremisses.cs
index 9d5eef26..cf0bcaa4 100644
--- a/Source/VCExpr/TypeErasurePremisses.cs
+++ b/Source/VCExpr/TypeErasurePremisses.cs
@@ -634,7 +634,7 @@ Contract.Requires(var != null);
mapTypeParams.Add(var);
}
- if (CommandLineOptions.Clo.UseArrayTheory)
+ if (CommandLineOptions.Clo.MonomorphicArrays)
mapTypeSynonym = abstractedType;
else
mapTypeSynonym = new CtorType(Token.NoToken, synonymDecl, mapTypeParams);
diff --git a/Source/VCExpr/VCExprASTVisitors.cs b/Source/VCExpr/VCExprASTVisitors.cs
index 4a13cbb5..1675a3a7 100644
--- a/Source/VCExpr/VCExprASTVisitors.cs
+++ b/Source/VCExpr/VCExprASTVisitors.cs
@@ -256,6 +256,7 @@ namespace Microsoft.Boogie.VCExprAST {
Contract.Requires(node != null);
Result res = StandardResult(node, arg);
+
if (node.TypeParamArity == 0) {
Contract.Assert(node.Op != null);
VCExprOp op = node.Op;