diff --git a/src/CompHash.cc b/src/CompHash.cc index a5da4b606a..de5bb5fbc7 100644 --- a/src/CompHash.cc +++ b/src/CompHash.cc @@ -22,12 +22,13 @@ CompositeHash::CompositeHash(TypeListPtr composite_type) { singleton_tag = TYPE_INTERNAL_ERROR; - // If the only element is a record, don't treat it as a + // If the only element is a record or vector, don't treat it as a // singleton, since it needs to be evaluated specially. if ( type->GetTypes().size() == 1 ) { - if ( type->GetTypes()[0]->Tag() == TYPE_RECORD ) + if ( type->GetTypes()[0]->Tag() == TYPE_RECORD || + type->GetTypes()[0]->Tag() == TYPE_VECTOR) { is_complex_type = true; is_singleton = false; diff --git a/testing/btest/Baseline/language.set-vector-index/out b/testing/btest/Baseline/language.set-vector-index/out new file mode 100644 index 0000000000..07bb1d8630 --- /dev/null +++ b/testing/btest/Baseline/language.set-vector-index/out @@ -0,0 +1,18 @@ +### BTest baseline data generated by btest-diff. Do not edit. Use "btest -U/-u" to update. Requires BTest >= 0.63. +{ +[2, 3], +[4, 5, 6], +[1] +} +T +T +T +T +{ +[[1], [2]] , +[[1, 2], [3, 4, 5]] +} +T +T +T +T diff --git a/testing/btest/language/set-vector-index.zeek b/testing/btest/language/set-vector-index.zeek new file mode 100644 index 0000000000..58a22538da --- /dev/null +++ b/testing/btest/language/set-vector-index.zeek @@ -0,0 +1,24 @@ +# @TEST-EXEC: zeek -b %INPUT >out +# @TEST-EXEC: btest-diff out + +local s: set[vector of count] = set(); +local ss: set[vector of count, vector of count] = set(); + +add s[vector(1)]; +add s[vector(2, 3)]; +add s[vector(4, 5, 6)]; + +add ss[vector(1), vector(2)]; +add ss[vector(1, 2), vector(3, 4, 5)]; + +print s; +print vector(1) in s; +print vector(2) !in s; +print vector(2, 3) in s; +print vector(4, 5, 6) in s; + +print ss; +print [vector(1), vector(2)] in ss; +print [vector(1), vector(1)] !in ss; +print [vector(1, 2), vector(3, 4)] !in ss; +print [vector(1, 2), vector(3, 4, 5)] in ss;