summaryrefslogtreecommitdiff
path: root/Source/Dafny/Cloner.cs
diff options
context:
space:
mode:
authorGravatar Reza Ahmadi <reza.ahmadi@uta.fi>2014-12-02 22:27:39 +0200
committerGravatar Reza Ahmadi <reza.ahmadi@uta.fi>2014-12-02 22:27:39 +0200
commitbed9924162427012900237f9712fea35f2b814f4 (patch)
tree5cbbbd81964b1e662d4b82a73431915cc43687d6 /Source/Dafny/Cloner.cs
parent0b8dd32256eb10c27ee66b5f778e0af26ba7fc8f (diff)
- fixed a bug in merging fields that come from a parent trait
- added one more test
Diffstat (limited to 'Source/Dafny/Cloner.cs')
-rw-r--r--Source/Dafny/Cloner.cs5
1 files changed, 5 insertions, 0 deletions
diff --git a/Source/Dafny/Cloner.cs b/Source/Dafny/Cloner.cs
index 60e737b1..978bf5c4 100644
--- a/Source/Dafny/Cloner.cs
+++ b/Source/Dafny/Cloner.cs
@@ -147,14 +147,17 @@ namespace Microsoft.Dafny
Contract.Assert(!(member is SpecialField)); // we don't expect a SpecialField to be cloned (or do we?)
var f = (Field)member;
Field field = new Field(Tok(f.tok), f.Name, f.IsGhost, f.IsMutable, f.IsUserMutable, CloneType(f.Type), CloneAttributes(f.Attributes));
+ field.Inherited = member.Inherited;
return field;
} else if (member is Function) {
var f = (Function)member;
Function func = CloneFunction(f);
+ func.Inherited = member.Inherited;
return func;
} else {
var m = (Method)member;
Method method = CloneMethod(m);
+ method.Inherited = member.Inherited;
return method;
}
}
@@ -202,6 +205,8 @@ namespace Microsoft.Dafny
public Formal CloneFormal(Formal formal) {
Formal f = new Formal(Tok(formal.tok), formal.Name, CloneType(formal.Type), formal.InParam, formal.IsGhost);
+ if (f.Type is UserDefinedType && formal.Type is UserDefinedType)
+ ((UserDefinedType)f.Type).ResolvedClass = ((UserDefinedType)(formal.Type)).ResolvedClass;
return f;
}