mirror of
https://github.com/zeek/zeek.git
synced 2025-10-03 15:18:20 +00:00
Make using local IDs in @if directives an error.
Addresses BIT-1296.
This commit is contained in:
parent
379593c7fd
commit
cdbe459f20
4 changed files with 94 additions and 3 deletions
4
testing/btest/Baseline/language.at-if-invalid/out
Normal file
4
testing/btest/Baseline/language.at-if-invalid/out
Normal file
|
@ -0,0 +1,4 @@
|
|||
error in /Users/jsiwek/Projects/bro/bro/testing/btest/.tmp/language.at-if-invalid/at-if-invalid.bro, line 28: referencing a local name in @if (xyz)
|
||||
error in /Users/jsiwek/Projects/bro/bro/testing/btest/.tmp/language.at-if-invalid/at-if-invalid.bro, line 28: invalid expression in @if (F && foo(xyz))
|
||||
error in /Users/jsiwek/Projects/bro/bro/testing/btest/.tmp/language.at-if-invalid/at-if-invalid.bro, line 36: referencing a local name in @if (local_true_condition)
|
||||
error in /Users/jsiwek/Projects/bro/bro/testing/btest/.tmp/language.at-if-invalid/at-if-invalid.bro, line 36: invalid expression in @if (T && TRUE_CONDITION && local_true_condition)
|
41
testing/btest/language/at-if-invalid.bro
Normal file
41
testing/btest/language/at-if-invalid.bro
Normal file
|
@ -0,0 +1,41 @@
|
|||
# @TEST-EXEC-FAIL: bro -b %INPUT >out 2>&1
|
||||
# @TEST-EXEC: TEST_DIFF_CANONIFIER=$SCRIPTS/diff-remove-abspath btest-diff out
|
||||
|
||||
function foo(c: count): bool
|
||||
{ return c == 42 ? T : F; }
|
||||
|
||||
global TRUE_CONDITION = T;
|
||||
|
||||
event bro_init()
|
||||
{
|
||||
local xyz = 0;
|
||||
local local_true_condition = T;
|
||||
|
||||
@if ( F )
|
||||
xyz += 1;
|
||||
@endif
|
||||
|
||||
@if ( foo(0) )
|
||||
xyz += 1;
|
||||
@endif
|
||||
|
||||
@if ( T && foo(42) )
|
||||
xyz += 2;
|
||||
@endif
|
||||
|
||||
xyz = 0;
|
||||
|
||||
@if ( F && foo(xyz) )
|
||||
xyz += 1;
|
||||
@else
|
||||
xyz += 2;
|
||||
@endif
|
||||
|
||||
xyz = 0;
|
||||
|
||||
@if ( T && TRUE_CONDITION && local_true_condition )
|
||||
xyz += 1;
|
||||
@else
|
||||
xyz += 2;
|
||||
@endif
|
||||
}
|
|
@ -6,6 +6,10 @@ function test_case(msg: string, expect: bool)
|
|||
print fmt("%s (%s)", msg, expect ? "PASS" : "FAIL");
|
||||
}
|
||||
|
||||
function foo(c: count): bool
|
||||
{ return c == 42 ? T : F; }
|
||||
|
||||
global TRUE_CONDITION = T;
|
||||
|
||||
event bro_init()
|
||||
{
|
||||
|
@ -17,7 +21,11 @@ event bro_init()
|
|||
xyz += 1;
|
||||
@endif
|
||||
|
||||
@if ( T )
|
||||
@if ( foo(0) )
|
||||
xyz += 1;
|
||||
@endif
|
||||
|
||||
@if ( T && foo(42) )
|
||||
xyz += 2;
|
||||
@endif
|
||||
|
||||
|
@ -37,7 +45,7 @@ event bro_init()
|
|||
|
||||
xyz = 0;
|
||||
|
||||
@if ( T )
|
||||
@if ( T && TRUE_CONDITION )
|
||||
xyz += 1;
|
||||
@else
|
||||
xyz += 2;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue