diff --git a/aux/broker b/aux/broker index 88242c8ca0..054eac2988 160000 --- a/aux/broker +++ b/aux/broker @@ -1 +1 @@ -Subproject commit 88242c8ca0e8745df1fe6ba115b54d9f5c160095 +Subproject commit 054eac298890a6de6eed8c6d9395ccf0f829054a diff --git a/src/Expr.cc b/src/Expr.cc index 07034db1a8..996a36625e 100644 --- a/src/Expr.cc +++ b/src/Expr.cc @@ -455,7 +455,7 @@ Val* UnaryExpr::Eval(Frame* f) const if ( ! v ) return 0; - if ( is_vector(v) ) + if ( is_vector(v) && Tag() != EXPR_IS && Tag() != EXPR_CAST ) { VectorVal* v_op = v->AsVectorVal(); VectorType* out_t; diff --git a/testing/btest/Baseline/language.type-check-vector/output b/testing/btest/Baseline/language.type-check-vector/output new file mode 100644 index 0000000000..5663c772f2 --- /dev/null +++ b/testing/btest/Baseline/language.type-check-vector/output @@ -0,0 +1,4 @@ +T +[one, two, 3] +T +[one, two, three] diff --git a/testing/btest/language/type-check-vector.bro b/testing/btest/language/type-check-vector.bro new file mode 100644 index 0000000000..461fb312fb --- /dev/null +++ b/testing/btest/language/type-check-vector.bro @@ -0,0 +1,18 @@ +# @TEST-EXEC: bro -b %INPUT >output 2>&1 +# @TEST-EXEC: TEST_DIFF_CANONIFIER=$SCRIPTS/diff-remove-abspath btest-diff output + +type myvec: vector of any; + +function check(a: any) + { + print a is myvec; + print a as myvec; + } + +event bro_init() + { + local v = myvec("one", "two", 3); + check(v); + local sv = string_vec("one", "two", "three"); + check(sv); + }