address 0x2 {
module Footprint {
struct S { f: address }
// expected: empty summary
public fun reassign_constant(a: address): address {
a = @0x2;
a
}
// expected: returns Footprint(a2)
public fun reassign_other_param(a1: address, a2: address): address {
a1 = a2;
a1
}
// expected: returns Footprint({a, 0x2})
public fun reassign_cond(a: address, b: bool): address {
if (b) {
a = @0x2;
};
_ = 2 + 2;
a
}
// expected: s.f |-> 0x2
public fun reassign_field(s: &mut S) {
s.f = @0x2;
}
// expected: s.f |-> {0x2, Footprint(s.f)}
public fun reassign_field_cond(s: &mut S, b: bool) {
if (b) {
s.f = @0x2
}
}
}
}