plum
git clone https://git.pyrossh.dev/plum
A statically typed, imperative programming language inspired by rust, python
8f886ad
— Peter John
2026-10-26T21:37:55+05:30
docs(plans): no hints for obsolete syntax; migrate everything in E4
docs/plans/2026-10-27-zig-errors.md
CHANGED
|
@@ -31,7 +31,7 @@
|
|
|
31
31
|
|
|
32
32
|
## Tasks (sequential)
|
|
33
33
|
|
|
34
|
-
- **E1 grammar and parser:** `!T` type prefix, postfix `!`, `catch` (optional binder and block), `fail`, legacy hints (
|
|
34
|
+
- **E1 grammar and parser:** `!T` type prefix, postfix `!`, `catch` (optional binder and block), `fail`, NO legacy hints (user: no hints for obsolete syntax; the legacySyntaxHint mechanism and its tests are deleted), formatter and highlights.
|
|
35
35
|
- **E2 checker:** `!T` types, `fail`, `try`, `catch` default and block, error-set inference fixpoint, pinned-set checks, and nullable unification. Tests:
|
|
36
36
|
- `inferred_set_union` (two `try`s plus a `fail` give the exact set);
|
|
37
37
|
- `pinned_set_rejects_extra`;
|
|
@@ -109,3 +109,9 @@ Update the docs, the iteration cheat sheet, highlighting and the LSP method comp
|
|
|
109
109
|
- Every for loop is written `for <binders> := range <source>[, clauses]`, and `range` is a keyword. A loop without `range` is an error with a hint.
|
|
110
110
|
- `range n` on an Int iterates 0..n-1.
|
|
111
111
|
- `times()` is dropped. `until`, `to` and `downTo` stay.
|
|
112
|
+
|
|
113
|
+
### User decision: migrate everything, no hints
|
|
114
|
+
|
|
115
|
+
- There are no migration hints for obsolete syntax anywhere: `legacySyntaxHint` and its tests are deleted, and removed syntax is an ordinary parse or type error.
|
|
116
|
+
- E4 migrates every caller and deletes the old syntax outright: Try/Ok/Err, `??`, `? |e|`, tag-union types, payload tags and `.unwrap()`/`.expect()`.
|
|
117
|
+
- Every hint test listed in E2 (`return_bare_tag_hint`, `elvis_removed_hint`, `tag_union_type_removed_hint`, `try_ok_err_removed_hints`, `fail_with_payload_rejected_hint`) is dropped.
|