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
  }
}