diff options
author | wuestholz <unknown> | 2015-01-09 15:57:10 +0100 |
---|---|---|
committer | wuestholz <unknown> | 2015-01-09 15:57:10 +0100 |
commit | 2d3e03bf14db160224eb31b1a1a99422f724147d (patch) | |
tree | d16af6f217448e79f1a630d9e3f8e03f0e931cc1 /Source/Core/DeadVarElim.cs | |
parent | 10e3dc7980ceaeb254d7ad94829fd2f2ebb2612c (diff) |
Made 2 invariants of class 'VariableCollector' robust by:
- making field protected
- exposing IEnumerables
(with help from David Rohr)
Diffstat (limited to 'Source/Core/DeadVarElim.cs')
-rw-r--r-- | Source/Core/DeadVarElim.cs | 36 |
1 files changed, 26 insertions, 10 deletions
diff --git a/Source/Core/DeadVarElim.cs b/Source/Core/DeadVarElim.cs index ad4dd4df..77086f0f 100644 --- a/Source/Core/DeadVarElim.cs +++ b/Source/Core/DeadVarElim.cs @@ -28,13 +28,13 @@ namespace Microsoft.Boogie { List<Variable>/*!*/ vars = new List<Variable>();
foreach (Variable/*!*/ var in impl.LocVars) {
Contract.Assert(var != null);
- if (usedVars.Contains(var))
+ if (_usedVars.Contains(var))
vars.Add(var);
}
impl.LocVars = vars;
//Console.WriteLine("New number of local variables = {0}", impl.LocVars.Length);
//Console.WriteLine("---------------------------------");
- usedVars.Clear();
+ _usedVars.Clear();
return impl;
}
}
@@ -274,19 +274,35 @@ namespace Microsoft.Boogie { }
public class VariableCollector : ReadOnlyVisitor {
- public HashSet<Variable/*!*/>/*!*/ usedVars;
- public HashSet<Variable/*!*/>/*!*/ oldVarsUsed;
+ protected HashSet<Variable/*!*/>/*!*/ _usedVars;
+ public IEnumerable<Variable /*!*/>/*!*/ usedVars
+ {
+ get
+ {
+ return _usedVars.AsEnumerable();
+ }
+ }
+
+ protected HashSet<Variable/*!*/>/*!*/ _oldVarsUsed;
+ public IEnumerable<Variable /*!*/>/*!*/ oldVarsUsed
+ {
+ get
+ {
+ return _oldVarsUsed.AsEnumerable();
+ }
+ }
+
[ContractInvariantMethod]
void ObjectInvariant() {
- Contract.Invariant(cce.NonNullElements(usedVars));
- Contract.Invariant(cce.NonNullElements(oldVarsUsed));
+ Contract.Invariant(cce.NonNullElements(_usedVars));
+ Contract.Invariant(cce.NonNullElements(_oldVarsUsed));
}
int insideOldExpr;
public VariableCollector() {
- usedVars = new System.Collections.Generic.HashSet<Variable/*!*/>();
- oldVarsUsed = new System.Collections.Generic.HashSet<Variable/*!*/>();
+ _usedVars = new System.Collections.Generic.HashSet<Variable/*!*/>();
+ _oldVarsUsed = new System.Collections.Generic.HashSet<Variable/*!*/>();
insideOldExpr = 0;
}
@@ -303,9 +319,9 @@ namespace Microsoft.Boogie { //Contract.Requires(node != null);
Contract.Ensures(Contract.Result<Expr>() != null);
if (node.Decl != null) {
- usedVars.Add(node.Decl);
+ _usedVars.Add(node.Decl);
if (insideOldExpr > 0) {
- oldVarsUsed.Add(node.Decl);
+ _oldVarsUsed.Add(node.Decl);
}
}
return node;
|