mirror of
https://github.com/zeek/zeek.git
synced 2025-10-02 06:38:20 +00:00
crash fixes for constructs that expect add/delete expressions to return values
This commit is contained in:
parent
eb6b4a0c46
commit
df7ed20455
5 changed files with 24 additions and 5 deletions
|
@ -220,9 +220,9 @@ bool Expr::CanAdd() const { return false; }
|
||||||
|
|
||||||
bool Expr::CanDel() const { return false; }
|
bool Expr::CanDel() const { return false; }
|
||||||
|
|
||||||
TypePtr Expr::AddType() const { return nullptr; }
|
TypePtr Expr::AddType() const { return base_type(TYPE_VOID); }
|
||||||
|
|
||||||
TypePtr Expr::DelType() const { return nullptr; }
|
TypePtr Expr::DelType() const { return base_type(TYPE_VOID); }
|
||||||
|
|
||||||
ValPtr Expr::Add(Frame* /* f */) { Internal("Expr::Add called"); }
|
ValPtr Expr::Add(Frame* /* f */) { Internal("Expr::Add called"); }
|
||||||
|
|
||||||
|
|
|
@ -730,9 +730,10 @@ ExprPtr AddExpr::BuildSub(const ExprPtr& op1, const ExprPtr& op2) {
|
||||||
}
|
}
|
||||||
|
|
||||||
ExprPtr AggrAddDelExpr::Reduce(Reducer* c, StmtPtr& red_stmt) {
|
ExprPtr AggrAddDelExpr::Reduce(Reducer* c, StmtPtr& red_stmt) {
|
||||||
if ( type )
|
// In the future, if we use add/delete for list operations or such,
|
||||||
return UnaryExpr::Reduce(c, red_stmt);
|
// then the following becomes germane.
|
||||||
|
// if ( type )
|
||||||
|
// return UnaryExpr::Reduce(c, red_stmt);
|
||||||
if ( c->Optimizing() )
|
if ( c->Optimizing() )
|
||||||
op = c->UpdateExpr(op);
|
op = c->UpdateExpr(op);
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,3 @@
|
||||||
|
### BTest baseline data generated by btest-diff. Do not edit. Use "btest -U/-u" to update. Requires BTest >= 0.63.
|
||||||
|
error in /Users/vern/warehouse/zeek/zeek-line-num/testing/btest/.tmp/language.add-del-expr-void/add-del-expr-void.zeek, line 11: can't assign void value (my_any1 = add my_set[3])
|
||||||
|
error in /Users/vern/warehouse/zeek/zeek-line-num/testing/btest/.tmp/language.add-del-expr-void/add-del-expr-void.zeek, line 12: can't assign void value (my_any2 = delete my_set[5])
|
1
testing/btest/Baseline/language.add-del-expr-void/out
Normal file
1
testing/btest/Baseline/language.add-del-expr-void/out
Normal file
|
@ -0,0 +1 @@
|
||||||
|
### BTest baseline data generated by btest-diff. Do not edit. Use "btest -U/-u" to update. Requires BTest >= 0.63.
|
14
testing/btest/language/add-del-expr-void.zeek
Normal file
14
testing/btest/language/add-del-expr-void.zeek
Normal file
|
@ -0,0 +1,14 @@
|
||||||
|
# @TEST-DOC: checks for type-checking for add/delete expressions
|
||||||
|
#
|
||||||
|
# @TEST-EXEC-FAIL: zeek -b %INPUT >out
|
||||||
|
# @TEST-EXEC: btest-diff out
|
||||||
|
# @TEST-EXEC: btest-diff .stderr
|
||||||
|
|
||||||
|
global my_set: set[count];
|
||||||
|
|
||||||
|
event zeek_init()
|
||||||
|
{
|
||||||
|
local my_any1: any = add my_set[3];
|
||||||
|
local my_any2: any = delete my_set[5];
|
||||||
|
print my_any1, my_any2;
|
||||||
|
}
|
Loading…
Add table
Add a link
Reference in a new issue