Merge remote-tracking branch 'origin/topic/jsiwek/outer_param_binding'

That works. Just renaming "param" to "ID", as locals are affected as
well.

BIT-1233 #merged

* origin/topic/jsiwek/outer_param_binding:
  Detect functions that try to bind variables from an outer scope.
This commit is contained in:
Robin Sommer 2014-08-22 15:22:15 -07:00
commit a3b2e3a2b4
6 changed files with 131 additions and 51 deletions

View file

@ -0,0 +1,3 @@
error in /home/robin/bro/master/testing/btest/.tmp/language.outer_param_binding/outer_param_binding.bro, line 16: referencing outer function IDs not supported (c)
error in /home/robin/bro/master/testing/btest/.tmp/language.outer_param_binding/outer_param_binding.bro, line 16: referencing outer function IDs not supported (d)
error in /home/robin/bro/master/testing/btest/.tmp/language.outer_param_binding/outer_param_binding.bro, line 17: referencing outer function IDs not supported (b)

View file

@ -0,0 +1,27 @@
# @TEST-EXEC-FAIL: bro -b %INPUT >out 2>&1
# @TEST-EXEC: TEST_DIFF_CANONIFIER=$SCRIPTS/diff-remove-abspath btest-diff out
type Foo: record {
x: function(a: string) : string;
};
function bar(b: string, c: string)
{
local f: Foo;
local d = 8;
f = [$x=function(a: string) : string
{
local x = 0;
print x;
print c, d;
return cat(a, " ", b);
}
];
print f$x("2");
}
event bro_init()
{
bar("1", "20");
}