GH-3060: Support negative index lookups for vectors

This commit is contained in:
Tim Wojtulewicz 2023-05-23 13:48:58 -07:00
parent cdb9c74054
commit 351e68b66a
3 changed files with 15 additions and 1 deletions

View file

@ -2932,7 +2932,13 @@ ValPtr IndexExpr::Fold(Val* v1, Val* v2) const
const ListVal* lv = v2->AsListVal();
if ( lv->Length() == 1 )
v = vect->ValAt(lv->Idx(0)->CoerceToUnsigned());
{
auto index = lv->Idx(0)->CoerceToInt();
if ( index < 0 )
index = vect->Size() + index;
v = vect->ValAt(index);
}
else
return index_slice(vect, lv);
}