diff --git a/src/parse.y b/src/parse.y index 25b6c17873..33ce1b5390 100644 --- a/src/parse.y +++ b/src/parse.y @@ -1142,9 +1142,16 @@ decl: | func_hdr func_body { } + | func_hdr conditional_list func_body + { } + | conditional ; +conditional_list: + conditional + | conditional conditional_list + conditional: TOK_ATIF '(' expr ')' { do_atif($3); } diff --git a/testing/btest/Baseline/language.at-if-event/out b/testing/btest/Baseline/language.at-if-event/out new file mode 100644 index 0000000000..01e79c32a8 --- /dev/null +++ b/testing/btest/Baseline/language.at-if-event/out @@ -0,0 +1,3 @@ +1 +2 +3 diff --git a/testing/btest/language/at-if-event.bro b/testing/btest/language/at-if-event.bro new file mode 100644 index 0000000000..1a9016b743 --- /dev/null +++ b/testing/btest/language/at-if-event.bro @@ -0,0 +1,31 @@ +# @TEST-EXEC: bro -b %INPUT >out +# @TEST-EXEC: btest-diff out +# Check if @if can be used to alternative function/event definitions + +@if ( 1==1 ) +function test_case(msg: string) +@else +lalala +@endif + { + print msg; + } + +@if ( 1==1 ) +event bro_init() +@else +lalala +@endif + { + print "1"; + test_case("2"); + } + +@if ( 1==0 ) +lalala +@else +event bro_init() +@endif + { + print "3"; + }