Problem
@position accepts integer coordinates, including negative canvas coordinates emitted by describe for existing microflows. The parser accepts a leading minus syntactically, but the visitor currently reads only direct NUMBER_LITERAL nodes when converting annotation parameters to integers.
Because -150 is parsed as a unary expression, the coordinate silently falls back to 0. A describe/exec/describe cycle can therefore move activities from negative canvas positions to zero.
Expected behavior
Negative integer annotation coordinates should round-trip as authored:
@position(-150, -210)
log info node 'SyntheticLog' 'message';
should keep X = -150 and Y = -210 in the AST and generated microflow object.
Proposed fix
Parse the raw annotation parameter text as an integer before falling back to the existing literal-only path. This preserves signed integer coordinates without evaluating arbitrary annotation expressions.
Problem
@positionaccepts integer coordinates, including negative canvas coordinates emitted bydescribefor existing microflows. The parser accepts a leading minus syntactically, but the visitor currently reads only directNUMBER_LITERALnodes when converting annotation parameters to integers.Because
-150is parsed as a unary expression, the coordinate silently falls back to0. A describe/exec/describe cycle can therefore move activities from negative canvas positions to zero.Expected behavior
Negative integer annotation coordinates should round-trip as authored:
should keep
X = -150andY = -210in the AST and generated microflow object.Proposed fix
Parse the raw annotation parameter text as an integer before falling back to the existing literal-only path. This preserves signed integer coordinates without evaluating arbitrary annotation expressions.