From 964e2c91a3e5330431eb6d82e7e0b901a6fe1f00 Mon Sep 17 00:00:00 2001 From: Tim Wojtulewicz Date: Thu, 13 Jun 2019 13:36:10 -0700 Subject: [PATCH] Check for integral slice indexes, add extra test for [:] --- src/parse.y | 2 ++ testing/btest/Baseline/language.vector/out | 1 + testing/btest/language/vector.zeek | 1 + 3 files changed, 4 insertions(+) diff --git a/src/parse.y b/src/parse.y index 2861b95dc8..07a544bb64 100644 --- a/src/parse.y +++ b/src/parse.y @@ -484,6 +484,8 @@ expr: set_location(@1, @6); Expr* low = $3 ? $3 : new ConstExpr(val_mgr->GetCount(0)); Expr* high = $5 ? $5 : new SizeExpr($1); + if ( ! IsIntegral(low->Type()->Tag()) || ! IsIntegral(high->Type()->Tag()) ) + reporter->FatalError("slice notation must have integral values as indexes"); ListExpr* le = new ListExpr(low); le->Append(high); $$ = new IndexExpr($1, le, true); diff --git a/testing/btest/Baseline/language.vector/out b/testing/btest/Baseline/language.vector/out index d6ead054f1..9e12403ef7 100644 --- a/testing/btest/Baseline/language.vector/out +++ b/testing/btest/Baseline/language.vector/out @@ -62,3 +62,4 @@ slicing (PASS) slicing (PASS) slicing (PASS) slicing (PASS) +slicing (PASS) diff --git a/testing/btest/language/vector.zeek b/testing/btest/language/vector.zeek index c4147b76ad..04218eb023 100644 --- a/testing/btest/language/vector.zeek +++ b/testing/btest/language/vector.zeek @@ -174,4 +174,5 @@ event zeek_init() test_case( "slicing", all_set(v17[-3:-1] == vector( 3, 4 )) ); test_case( "slicing", all_set(v17[:2] == vector( 1, 2 )) ); test_case( "slicing", all_set(v17[2:] == vector( 3, 4, 5 )) ); + test_case( "slicing", all_set(v17[:] == v17) ); }