Commit dfe63ed8 authored by Maria Matejka's avatar Maria Matejka
Browse files

Filter: Fixing empty block and never-executed-statement bug

parent 70a4320b
Pipeline #51243 passed with stages
in 4 minutes and 51 seconds
......@@ -446,7 +446,7 @@ CF_KEYWORDS(FUNCTION, PRINT, PRINTN, UNSET, RETURN,
%nonassoc THEN
%nonassoc ELSE
%type <xp> cmds_int
%type <xp> cmds_int cmd_prep
%type <x> term block cmd cmds constant constructor print_list var_list function_call symbol_value bgp_path_expr bgp_path bgp_path_tail
%type <fda> dynamic_attr
%type <fsa> static_attr
......@@ -624,17 +624,25 @@ cmds: /* EMPTY */ { $$ = NULL; }
| cmds_int { $$ = $1.begin; }
;
cmds_int: cmd {
cmd_prep: cmd {
$$.begin = $$.end = $1;
while ($$.end->next)
$$.end = $$.end->next;
if ($1)
while ($$.end->next)
$$.end = $$.end->next;
}
;
cmds_int: cmd_prep
| cmds_int cmd_prep {
if (!$1.begin)
$$ = $2;
else if (!$2.begin)
$$ = $1;
else {
$$.begin = $1.begin;
$$.end = $2.end;
$1.end->next = $2.begin;
}
| cmds_int cmd {
$$.begin = $1.begin;
$1.end->next = $2;
$$.end = $2;
while ($$.end->next)
$$.end = $$.end->next;
}
;
......
......@@ -1178,6 +1178,10 @@ bt_test_suite(t_include, "Testing including another config file");
function t_if_else()
int i;
{
/* Empty blocks regression test */
if true then {}
else {}
if true then
bt_assert(true);
......@@ -1187,6 +1191,10 @@ int i;
bt_assert(true);
else
bt_assert(false);
/* Empty blocks regression test */
if true then {}
else {}
}
bt_test_suite(t_if_else, "Testing if-else statement");
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment