From 1e1f181b82e06fca77d34cedeb927b37e9ef55fa Mon Sep 17 00:00:00 2001 From: Sei Lisa Date: Sat, 20 Apr 2024 20:03:58 +0200 Subject: [PATCH] Fix deletion of `if (SEF_expr) ;` Fixes #29. Thanks @KrsityKu for the test case, which was added to the test suite. --- lslopt/lslfoldconst.py | 2 +- unit_tests/regression.suite/issue-29.lsl | 12 ++++++++++++ unit_tests/regression.suite/issue-29.out | 7 +++++++ 3 files changed, 20 insertions(+), 1 deletion(-) create mode 100644 unit_tests/regression.suite/issue-29.lsl create mode 100644 unit_tests/regression.suite/issue-29.out diff --git a/lslopt/lslfoldconst.py b/lslopt/lslfoldconst.py index b86bcb8..6b17a8a 100644 --- a/lslopt/lslfoldconst.py +++ b/lslopt/lslfoldconst.py @@ -1819,7 +1819,7 @@ class foldconst(object): # if (X) ; -> X; if len(child) == 2: parent[index] = nr(nt='EXPR', t=child[0].t, - ch=[child[0]]) + ch=[child[0]], SEF=child[0].SEF) # It has been promoted to statement. Fold it as such. # (Will remove it if SEF) self.FoldStmt(parent, index) diff --git a/unit_tests/regression.suite/issue-29.lsl b/unit_tests/regression.suite/issue-29.lsl new file mode 100644 index 0000000..9cd330c --- /dev/null +++ b/unit_tests/regression.suite/issue-29.lsl @@ -0,0 +1,12 @@ +default +{ + touch(integer num) + { + integer dead = 0; + if (num == 5) + dead = 1; + else + dead = 2; + llOwnerSay("Not Dead"); + } +} diff --git a/unit_tests/regression.suite/issue-29.out b/unit_tests/regression.suite/issue-29.out new file mode 100644 index 0000000..6dbd3c3 --- /dev/null +++ b/unit_tests/regression.suite/issue-29.out @@ -0,0 +1,7 @@ +default +{ + touch(integer num) + { + llOwnerSay("Not Dead"); + } +}