diff options
Diffstat (limited to 'tests/typ/compiler/array.typ')
| -rw-r--r-- | tests/typ/compiler/array.typ | 98 |
1 files changed, 98 insertions, 0 deletions
diff --git a/tests/typ/compiler/array.typ b/tests/typ/compiler/array.typ new file mode 100644 index 00000000..cb8433cb --- /dev/null +++ b/tests/typ/compiler/array.typ @@ -0,0 +1,98 @@ +// Test arrays. +// Ref: false + +--- +// Ref: true + +#set page(width: 150pt) + +// Empty. +{()} + +// Not an array, just a parenthesized expression. +{(1)} + +// One item and trailing comma. +{(-1,)} + +// No trailing comma. +{(true, false)} + +// Multiple lines and items and trailing comma. +{("1" + , rgb("002") + ,)} + +--- +// Test lvalue and rvalue access. +{ + let array = (1, 2) + array(1) += 5 + array(0) + test(array, (1, 8)) +} + +--- +// Test rvalue out of bounds. +// Error: 2-14 array index out of bounds (index: 5, len: 3) +{(1, 2, 3)(5)} + +--- +// Test lvalue out of bounds. +{ + let array = (1, 2, 3) + // Error: 3-11 array index out of bounds (index: 3, len: 3) + array(3) = 5 +} + +--- +// Test negative indices. +{ + let array = (1, 2, 3, 4) + test(array(0), 1) + test(array(-1), 4) + test(array(-2), 3) + test(array(-3), 2) + test(array(-4), 1) +} + +--- +// Error: 2-15 array index out of bounds (index: -4, len: 3) +{(1, 2, 3)(-4)} + +--- +// Test non-collection indexing. + +{ + let x = 10pt + // Error: 3-4 expected collection, found length + x() = 1 +} + +--- +// Error: 3 expected closing paren +{(} + +// Error: 2-3 expected expression, found closing paren +{)} + +// Error: 4 expected comma +// Error: 4-6 unexpected end of block comment +{(1*/2)} + +// Error: 6-8 invalid number suffix +{(1, 1u 2)} + +// Error: 3-4 expected expression, found comma +{(,1)} + +// Missing expression makes named pair incomplete, making this an empty array. +// Error: 5 expected expression +{(a:)} + +// Named pair after this is already identified as an array. +// Error: 6-10 expected expression, found named pair +{(1, b: 2)} + +// Keyed pair after this is already identified as an array. +// Error: 6-14 expected expression, found keyed pair +{(1, "key": 2)} |
