Member predicate Assignable::AssignableDefinition::getAFirstUncertainRead

Gets a first uncertain read of the same underlying assignable. That is, a read that can be reached from this definition without passing through any other reads, and which may read the value assigned in this definition. Example:

int Field;

void SetField(int i) {
  this.Field = i;
  Use(this.Field);
  if (i > 0)
    this.Field = i - 1;
  else if (i < 0)
    SetField(1);
  Use(this.Field);
  Use(this.Field);
}
  • The read of i on line 4 is a first read of the implicit parameter definition on line 3.
  • The read of this.Field on line 5 is a first read of the definition on line 4.
  • The read of this.Field on line 10 is a first read of the definition on line 7. (This is the only truly uncertain read.)

Subsequent uncertain reads can be found by following the steps defined by AssignableRead.getANextUncertainRead().

AssignableRead getAFirstUncertainRead()