Filter: Fixing empty block and never-executed-statement bug
This commit is contained in:
parent
70a4320bdd
commit
dfe63ed84d
2 changed files with 26 additions and 10 deletions
|
@ -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;
|
||||
if ($1)
|
||||
while ($$.end->next)
|
||||
$$.end = $$.end->next;
|
||||
}
|
||||
| cmds_int cmd {
|
||||
;
|
||||
|
||||
cmds_int: cmd_prep
|
||||
| cmds_int cmd_prep {
|
||||
if (!$1.begin)
|
||||
$$ = $2;
|
||||
else if (!$2.begin)
|
||||
$$ = $1;
|
||||
else {
|
||||
$$.begin = $1.begin;
|
||||
$1.end->next = $2;
|
||||
$$.end = $2;
|
||||
while ($$.end->next)
|
||||
$$.end = $$.end->next;
|
||||
$$.end = $2.end;
|
||||
$1.end->next = $2.begin;
|
||||
}
|
||||
}
|
||||
;
|
||||
|
||||
|
|
|
@ -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");
|
||||
|
|
Loading…
Reference in a new issue