An enquiry clause is a serial clause in a meek context that doesn’t immediately contain labels, and therefore nor completers. Serial clauses that appear in the enquiry clause can feature labels and completers on their own.
Enquiry clauses (or just “enquiries”) can be found in the following constructions:
int
.
int
.
bool
.
Early drafts of the language used regular serial clauses in these contexts, which led to an unexpected problem. Consider the following conditional clause:
if int i := x + 10; xxx: i = 0 then ... else ... i := 0; go to xxx ... fi
In conditional clauses the if-part introduces a range that is visible
in the rest of the clause. In the example above, if x
is not
zero when the clause is elaborated the else
part gets
elaborated and jumps back to the if-part. Similar situations happen
in case, loop and conformity clauses. To avoid these difficulties,
enquiry clauses got introduced with the restrictions explained above.