summaryrefslogtreecommitdiff
path: root/Source/Core/StandardVisitor.cs
diff options
context:
space:
mode:
authorGravatar wuestholz <unknown>2015-01-09 15:49:10 +0100
committerGravatar wuestholz <unknown>2015-01-09 15:49:10 +0100
commitb1d0db908bb3cfe22f6162eb7930492f3c548e01 (patch)
tree72a3d64ecbe99ef48abf1f67aafeae45e9e22323 /Source/Core/StandardVisitor.cs
parentfb2b56ff6734b210315f1bb31f27552d0b0ebaa4 (diff)
Made invariant of class 'QKeyValue' robust by:
- making field private - exposing read-only list - copying incoming list - adding methods 'AddParam', 'AddParams', and 'ClearParams' (with help from David Rohr)
Diffstat (limited to 'Source/Core/StandardVisitor.cs')
-rw-r--r--Source/Core/StandardVisitor.cs7
1 files changed, 4 insertions, 3 deletions
diff --git a/Source/Core/StandardVisitor.cs b/Source/Core/StandardVisitor.cs
index 98ea4df3..68de45f6 100644
--- a/Source/Core/StandardVisitor.cs
+++ b/Source/Core/StandardVisitor.cs
@@ -438,12 +438,13 @@ namespace Microsoft.Boogie {
public virtual QKeyValue VisitQKeyValue(QKeyValue node) {
Contract.Requires(node != null);
Contract.Ensures(Contract.Result<QKeyValue>() != null);
+ var newParams = new List<object>();
for (int i = 0, n = node.Params.Count; i < n; i++) {
var e = node.Params[i] as Expr;
- if (e != null) {
- node.Params[i] = (Expr)this.Visit(e);
- }
+ newParams.Add(e != null ? this.Visit(e) : node.Params[i]);
}
+ node.ClearParams();
+ node.AddParams(newParams);
if (node.Next != null) {
node.Next = (QKeyValue)this.Visit(node.Next);
}