summaryrefslogtreecommitdiff
path: root/tests/typ/bugs
diff options
context:
space:
mode:
authorLeedehai <18319900+Leedehai@users.noreply.github.com>2024-02-11 08:08:43 -0500
committerGitHub <noreply@github.com>2024-02-11 13:08:43 +0000
commit17d687b6a2ea510759d798a03bb80c507ade573e (patch)
tree15950b2ab65a5da826be9aaa476c45ad9742c945 /tests/typ/bugs
parenta1f111dfa6b2dd7771addb02d094a39a490d36ac (diff)
Better errors for array/dictionary method calls that return mutable (#3370)
Diffstat (limited to 'tests/typ/bugs')
-rw-r--r--tests/typ/bugs/3154-array-dict-mut-entry.typ109
1 files changed, 109 insertions, 0 deletions
diff --git a/tests/typ/bugs/3154-array-dict-mut-entry.typ b/tests/typ/bugs/3154-array-dict-mut-entry.typ
new file mode 100644
index 00000000..b5a52814
--- /dev/null
+++ b/tests/typ/bugs/3154-array-dict-mut-entry.typ
@@ -0,0 +1,109 @@
+// Issue #3154: Confusing errors from methods supposed to return a mutable entry
+// https://github.com/typst/typst/issues/3154
+// Ref: false
+
+---
+#{
+ let array = ()
+ // Error: 3-16 array is empty
+ array.first()
+}
+
+---
+#{
+ let array = ()
+ // Error: 3-16 array is empty
+ array.first() = 9
+}
+
+---
+#{
+ let array = ()
+ // Error: 3-15 array is empty
+ array.last()
+}
+
+---
+#{
+ let array = ()
+ // Error: 3-15 array is empty
+ array.last() = 9
+}
+
+---
+#{
+ let array = (1,)
+ // Error: 3-14 array index out of bounds (index: 1, len: 1) and no default value was specified
+ array.at(1)
+}
+
+---
+#{
+ let array = (1,)
+ test(array.at(1, default: 0), 0)
+}
+
+---
+#{
+ let array = (1,)
+ // Error: 3-14 array index out of bounds (index: 1, len: 1)
+ array.at(1) = 9
+}
+
+---
+#{
+ let array = (1,)
+ // Error: 3-26 array index out of bounds (index: 1, len: 1)
+ array.at(1, default: 0) = 9
+}
+
+---
+#{
+ let dict = (a: 1)
+ // Error: 3-15 dictionary does not contain key "b" and no default value was specified
+ dict.at("b")
+}
+
+---
+#{
+ let dict = (a: 1)
+ test(dict.at("b", default: 0), 0)
+}
+
+---
+#{
+ let dict = (a: 1)
+ // Error: 3-15 dictionary does not contain key "b"
+ // Hint: 3-15 use `insert` to add or update values
+ dict.at("b") = 9
+}
+
+---
+#{
+ let dict = (a: 1)
+ // Error: 3-27 dictionary does not contain key "b"
+ // Hint: 3-27 use `insert` to add or update values
+ dict.at("b", default: 0) = 9
+}
+
+---
+#{
+ let dict = (a: 1)
+ // Error: 8-9 dictionary does not contain key "b"
+ dict.b
+}
+
+---
+#{
+ let dict = (a: 1)
+ dict.b = 9
+ test(dict, (a: 1, b: 9))
+}
+
+---
+#{
+ let dict = (a: 1)
+ // Error: 3-9 dictionary does not contain key "b"
+ // Hint: 3-9 use `insert` to add or update values
+ dict.b += 9
+}