mirror of
https://github.com/Sei-Lisa/LSL-PyOptimizer
synced 2025-07-01 23:58:20 +00:00
This caused "Label not defined within scope" when breakcont was active: default{timer(){jump x;while(0)@x;}} The problem was that breakcont opens a new scope for the case where it has to deal with a loop which is the single statement of an outer statement, e.g. default{timer(){if(1)while(1)break;}} would add braces to jump to the correct break point: default{timer(){if(1){while(1)jump brk;@brk;}} To avoid excessive complication, a new scope was always opened for the whole statement in each of the loops, regardless of whether we needed braces later on or not. That should be transparent most of the time, but then if the statement was a label declaration, the label would be in a new scope that would be invisible outside the loop. Fix that by checking explicitly for a label to temporarily get rid of the new scope in that case, and add a test case for it. |
||
---|---|---|
.. | ||
__init__.py | ||
lslbasefuncs.py | ||
lslcommon.py | ||
lsldeadcode.py | ||
lslextrafuncs.py | ||
lslfoldconst.py | ||
lslfuncparams.py | ||
lslfuncs.py | ||
lsljson.py | ||
lsloptimizer.py | ||
lsloutput.py | ||
lslparse.py | ||
lslrenamer.py |