diff options
author | Ken McMillan <unknown> | 2013-06-14 17:23:44 -0700 |
---|---|---|
committer | Ken McMillan <unknown> | 2013-06-14 17:23:44 -0700 |
commit | 4c7694f31f5a841a3d2eadc94c8e7f49aabbcc40 (patch) | |
tree | 495aa31c76de499319035d32955e95699eab77a2 /Source/VCExpr | |
parent | 6a9e8449f14e8c3858ab0809036e68a0a43c2d4e (diff) |
Fixes for duality under corral
Diffstat (limited to 'Source/VCExpr')
-rw-r--r-- | Source/VCExpr/Boogie2VCExpr.cs | 5 | ||||
-rw-r--r-- | Source/VCExpr/VCExprAST.cs | 8 |
2 files changed, 12 insertions, 1 deletions
diff --git a/Source/VCExpr/Boogie2VCExpr.cs b/Source/VCExpr/Boogie2VCExpr.cs index d08a4d4b..2ff93c54 100644 --- a/Source/VCExpr/Boogie2VCExpr.cs +++ b/Source/VCExpr/Boogie2VCExpr.cs @@ -272,7 +272,10 @@ namespace Microsoft.Boogie.VCExprAST { // global variables, local variables, incarnations, etc. are
// bound the first time they occur
if (!UnboundVariables.TryGetValue(boogieVar, out res)) {
- res = new VCExprVar(boogieVar.Name, boogieVar.TypedIdent.Type);
+ if (boogieVar is Constant)
+ res = new VCExprConstant(boogieVar.Name, boogieVar.TypedIdent.Type);
+ else
+ res = new VCExprVar(boogieVar.Name, boogieVar.TypedIdent.Type);
UnboundVariables.Bind(boogieVar, res);
}
return cce.NonNull(res);
diff --git a/Source/VCExpr/VCExprAST.cs b/Source/VCExpr/VCExprAST.cs index 82bdebbe..f56b6978 100644 --- a/Source/VCExpr/VCExprAST.cs +++ b/Source/VCExpr/VCExprAST.cs @@ -1868,6 +1868,14 @@ namespace Microsoft.Boogie.VCExprAST { }
}
+ public class VCExprConstant : VCExprVar
+ {
+ internal VCExprConstant(string name, Type type) : base(name,type) {
+ Contract.Requires(type != null);
+ Contract.Requires(name != null);
+ }
+ }
+
public abstract class VCExprBinder : VCExpr {
public readonly VCExpr/*!*/ Body;
public readonly List<TypeVariable/*!*/>/*!*/ TypeParameters;
|