Question:
How do I say ‘reads if x then this`y else this`z’? Dafny complains about the ‘this’.
Answer:
Here is some sample code that show a workaround.
trait Test {
var y: int
var z: int
function {:opaque} MyFunc(x: bool): int
reads (if x then {this} else {})`y, (if x then {} else {this})`z {
if x then y else z
}
}