diff --git a/src/script_opt/CPP/Exprs.cc b/src/script_opt/CPP/Exprs.cc index a35b2a46e2..c8e60b6f28 100644 --- a/src/script_opt/CPP/Exprs.cc +++ b/src/script_opt/CPP/Exprs.cc @@ -541,7 +541,9 @@ string CPPCompile::GenAddToExpr(const Expr* e, GenType gt, bool top_level) if ( t->Tag() == TYPE_VECTOR ) { - if ( same_type(lhs->GetType(), rhs->GetType()) ) + auto& rt = rhs->GetType(); + + if ( IsVector(rt->Tag()) && same_type(lhs->GetType(), rt) ) add_to_func = "vector_vec_append__CPP"; else add_to_func = "vector_append__CPP"; diff --git a/src/script_opt/CPP/RuntimeVec.h b/src/script_opt/CPP/RuntimeVec.h index 267974b95d..19719f6c16 100644 --- a/src/script_opt/CPP/RuntimeVec.h +++ b/src/script_opt/CPP/RuntimeVec.h @@ -24,7 +24,8 @@ inline ValPtr vector_append__CPP(VectorValPtr v1, const ValPtr& v2) // Appends vector v2 to the vector v1. inline ValPtr vector_vec_append__CPP(VectorValPtr v1, const VectorValPtr& v2) { - v2->AddTo(v1.get(), false); + if ( ! v2->AddTo(v1.get(), false) ) + reporter->CPPRuntimeError("incompatible vector element assignment"); return v1; } diff --git a/testing/btest/Baseline.cpp/broker.store.create-failure/zeek.err b/testing/btest/Baseline.cpp/broker.store.create-failure/zeek.err index 5bcccc80da..982e06a3ca 100644 --- a/testing/btest/Baseline.cpp/broker.store.create-failure/zeek.err +++ b/testing/btest/Baseline.cpp/broker.store.create-failure/zeek.err @@ -1,6 +1,6 @@ ### BTest baseline data generated by btest-diff. Do not edit. Use "btest -U/-u" to update. Requires BTest >= 0.63. -error in <...>/create-failure.zeek (C++), line 61: Failed to attach master store backend_failure: (<___>testing_btest__tmp_broker_store_create_failure_create_failure_zeek__zeek_init__35__zf()) -error in <...>/create-failure.zeek (C++), line 61: Could not create Broker master store '../fail' (<___>testing_btest__tmp_broker_store_create_failure_create_failure_zeek__zeek_init__35__zf()) +error in <...>/create-failure.zeek (C++), line 61: Failed to attach master store backend_failure: (<___>testing_btest__tmp_broker_store_create_failure_create_failure_zeek__zeek_init__36__zf()) +error in <...>/create-failure.zeek (C++), line 61: Could not create Broker master store '../fail' (<___>testing_btest__tmp_broker_store_create_failure_create_failure_zeek__zeek_init__36__zf()) error in : invalid Broker store handle (broker::store::{}) error in : invalid Broker store handle (broker::store::{}) error in : invalid Broker store handle (broker::store::{}) diff --git a/testing/btest/Baseline.cpp/language.vector-any-append/.stderr b/testing/btest/Baseline.cpp/language.vector-any-append/.stderr new file mode 100644 index 0000000000..e718e01320 --- /dev/null +++ b/testing/btest/Baseline.cpp/language.vector-any-append/.stderr @@ -0,0 +1,2 @@ +### BTest baseline data generated by btest-diff. Do not edit. Use "btest -U/-u" to update. Requires BTest >= 0.63. +runtime error in compiled code: incompatible vector element assignment diff --git a/testing/btest/Baseline.cpp/language.vector-any-append/out b/testing/btest/Baseline.cpp/language.vector-any-append/out new file mode 100644 index 0000000000..5345b03b2d --- /dev/null +++ b/testing/btest/Baseline.cpp/language.vector-any-append/out @@ -0,0 +1,6 @@ +### BTest baseline data generated by btest-diff. Do not edit. Use "btest -U/-u" to update. Requires BTest >= 0.63. +[0, 1, 2, 3] +[4, 0, 1, 2, 3] +[1, 2, 3, [4, 5]], 4, count, count, vector of count +[[r=r], [r=r], [s=s], [s=s]] +[a, -3] diff --git a/testing/btest/Baseline.cpp/scripts.base.frameworks.cluster.publish-hrw-type-check/.stderr b/testing/btest/Baseline.cpp/scripts.base.frameworks.cluster.publish-hrw-type-check/.stderr index 5762b99341..ebe46a79b0 100644 --- a/testing/btest/Baseline.cpp/scripts.base.frameworks.cluster.publish-hrw-type-check/.stderr +++ b/testing/btest/Baseline.cpp/scripts.base.frameworks.cluster.publish-hrw-type-check/.stderr @@ -1,5 +1,5 @@ ### BTest baseline data generated by btest-diff. Do not edit. Use "btest -U/-u" to update. Requires BTest >= 0.63. -error in <...>/publish-hrw-type-check.zeek (C++), line 13: expected type Cluster::Pool for pool (<___>testing_btest__tmp_scripts_base_frameworks_cluster_publish_hrw_type_check_publish_hrw_type_check_zeek__zeek_init__35__zf()) -error in <...>/publish-hrw-type-check.zeek (C++), line 13: expected type Cluster::Pool for pool (<___>testing_btest__tmp_scripts_base_frameworks_cluster_publish_hrw_type_check_publish_hrw_type_check_zeek__zeek_init__35__zf()) -error in <...>/publish-hrw-type-check.zeek (C++), line 13: expected type Cluster::Pool for pool (<___>testing_btest__tmp_scripts_base_frameworks_cluster_publish_hrw_type_check_publish_hrw_type_check_zeek__zeek_init__35__zf()) -error in <...>/publish-hrw-type-check.zeek (C++), line 13: expected type string for key, got port (<___>testing_btest__tmp_scripts_base_frameworks_cluster_publish_hrw_type_check_publish_hrw_type_check_zeek__zeek_init__35__zf()) +error in <...>/publish-hrw-type-check.zeek (C++), line 13: expected type Cluster::Pool for pool (<___>testing_btest__tmp_scripts_base_frameworks_cluster_publish_hrw_type_check_publish_hrw_type_check_zeek__zeek_init__36__zf()) +error in <...>/publish-hrw-type-check.zeek (C++), line 13: expected type Cluster::Pool for pool (<___>testing_btest__tmp_scripts_base_frameworks_cluster_publish_hrw_type_check_publish_hrw_type_check_zeek__zeek_init__36__zf()) +error in <...>/publish-hrw-type-check.zeek (C++), line 13: expected type Cluster::Pool for pool (<___>testing_btest__tmp_scripts_base_frameworks_cluster_publish_hrw_type_check_publish_hrw_type_check_zeek__zeek_init__36__zf()) +error in <...>/publish-hrw-type-check.zeek (C++), line 13: expected type string for key, got port (<___>testing_btest__tmp_scripts_base_frameworks_cluster_publish_hrw_type_check_publish_hrw_type_check_zeek__zeek_init__36__zf())