Check for integral slice indexes, add extra test for [:]

This commit is contained in:
Tim Wojtulewicz 2019-06-13 13:36:10 -07:00
parent f1383d98c2
commit 964e2c91a3
3 changed files with 4 additions and 0 deletions

View file

@ -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);

View file

@ -62,3 +62,4 @@ slicing (PASS)
slicing (PASS)
slicing (PASS)
slicing (PASS)
slicing (PASS)

View file

@ -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) );
}