Feature #3164
missing undoable behaviour with global vars and persistent procedures
0%
History
#2 Updated by Constantin Asofiei almost 8 years ago
The remaining issue I was investigating as part of 3109c, regarding shared/extent vars and their undo support, is strange.
After expanding the test cases (see testcases/uast/variables/var_persistent.p
and associated programs), the issue is more complex.
When undoing at a greater scope than the defining one, it survives only the first global var - any other global shared var defined in the same scope gets 'deleted', getting this error:
Attempt to reference an UNDO GLOBAL variable after a transaction backout has removed its definition. (9084) Error attempting to push run time parameters onto the stack. (984)
For dynamic extent vars, the issue is even weirder: only the first extent var which has its size set survives (in terms of its size being set) after an undo at the caller's scope; any other var has its extent undone (thus extent(x) reports unknown for these vars).
When (and if) we decide to implement this, we will need to 1. expand the var_persistent.p
set some more and 2. add conversion changes to keep track of the very first global shared and dyn ext var defined in a program; this way, when undoing at an outer scope, these can be handled differently than the other vars.