REPLACE ALL/NEXT/WHILE/FOR lines with multiple changes were being
converted to broken code.
The problem was in the Declaration Buster. The Declaration Buster is now
able to distinguish a compound command, and entirely avoid it. It now
avoids converting any REPLACE containing ALL, NEXT, WHILE or FOR.
What was happening was:
replace all x with y, w with z
was processed by Pass 1 into:
replace all x with y
replace w with z
and then in pass 2:
replace all x with y
field->w := z
Fixed by avoidance.
---
There was a problem with alignment and recognition of @ SAY GET lines
when the command was followed by a value in parenthesis, such as:
@ 7, 25 get rdbf1 picture "@!" color (cCGetColor)
@ 9, 25 get rprefunc picture "@!" valid ChkPreFunc() color (cCGetColor)
@ 10, 25 get rpostfunc picture "@!" valid MakeStru() color (cCGetColor)
@ 11, 25 get reptype picture "@!" valid REP->reptype$"RP" color (cCGetColor)
@ 12, 25 get custom picture "@!" valid REP->custom$"YN" color (cCGetColor)
Click! failed to recognize the COLOR clause because it appeared to be a
function. Click! now uses 'SAY |GET |PICT|COLO|WHEN|RANG|VALI' to detect
@ SAY GET clauses.
This also caused type 3 @ SAY GET output to fail compile due to a missing ;
This is repaired.
---
Due to a problem with IF FUNCTION/COMMAND detection combined with a
problem with the line continue flag, the following code would cause a
control underflow because Click! was not breaking the line up correctly.
if empty(detail);delete;result:=1;endif
This was fixed but not documented in 1.10