@@ -35,16 +35,16 @@ internal compiler modules (`use Ast`, `use Sema`, `use Types`,
3535These tests verify internal constants or data structures already
3636validated by fixpoint (` stage2 == stage3 ` ). Delete outright.
3737
38- - [ ] Delete ` test/cases/ast_test.w ` (tests AstPool node storage internals)
39- - [ ] Delete ` test/cases/intern_test.w ` (tests InternPool symbol dedup internals)
40- - [ ] Delete ` test/cases/codegen_test.w ` (tests LLVM type IDs, instruction opcodes)
41- - [ ] Delete ` test/cases/mir_test.w ` (tests MirBody, basic blocks, terminators)
42- - [ ] Delete ` test/cases/safety_checks.w ` (tests MIR terminator kind constants)
43- - [ ] Delete ` test/cases/driver_test.w ` (tests SourceFile, CImport, render, Driver internals)
44- - [ ] Delete ` test/cases/err_diag_codes.w ` (tests ` E_UNDECLARED == 1 ` etc.)
45- - [ ] Delete ` test/cases/lexer_test.w ` (redundant with hundreds of behavior tests)
46- - [ ] Delete ` test/cases/parser_test.w ` (redundant — fixpoint is ultimate parser validation)
47- - [ ] Run ` ./scripts/run_tests.sh ` — confirm no regressions after deletions
38+ - [x ] Delete ` test/cases/ast_test.w ` (tests AstPool node storage internals)
39+ - [x ] Delete ` test/cases/intern_test.w ` (tests InternPool symbol dedup internals)
40+ - [x ] Delete ` test/cases/codegen_test.w ` (tests LLVM type IDs, instruction opcodes)
41+ - [x ] Delete ` test/cases/mir_test.w ` (tests MirBody, basic blocks, terminators)
42+ - [x ] Delete ` test/cases/safety_checks.w ` (tests MIR terminator kind constants)
43+ - [x ] Delete ` test/cases/driver_test.w ` (tests SourceFile, CImport, render, Driver internals)
44+ - [x ] Delete ` test/cases/err_diag_codes.w ` (tests ` E_UNDECLARED == 1 ` etc.)
45+ - [x ] Delete ` test/cases/lexer_test.w ` (redundant with hundreds of behavior tests)
46+ - [x ] Delete ` test/cases/parser_test.w ` (redundant — fixpoint is ultimate parser validation)
47+ - [x ] Run ` ./scripts/run_tests.sh ` — confirm no regressions after deletions
4848
4949---
5050
@@ -58,120 +58,120 @@ triggers the same error via `//! expect-check-fail`.
5858
5959Current: Creates Sema, calls ` define_var ` with ` is_mut=0 ` , checks ` var_is_mut ` .
6060
61- - [ ] Read current ` test/cases/err_assign_immutable.w `
62- - [ ] Rewrite as program that assigns to immutable variable:
61+ - [x ] Read current ` test/cases/err_assign_immutable.w `
62+ - [x ] Rewrite as program that assigns to immutable variable:
6363 ` //! expect-check-fail: immutable ` + ` let x = 5 ` then ` x = 10 `
64- - [ ] Optionally create ` behav_mutability.w ` for the success case
64+ - [x ] Optionally create ` behav_mutability.w ` for the success case
6565 (` let mut x = 5; x = 10; println("{x}") ` → ` //! expect-stdout: 10 ` )
66- - [ ] Run ` ./scripts/run_tests.sh test/cases/err_assign_immutable.w ` — passes
66+ - [x ] Run ` ./scripts/run_tests.sh test/cases/err_assign_immutable.w ` — passes
6767
6868### 2.2 err_binop_types.w
6969
7070Current: Constructs AST nodes for ` i32 + i32 ` , ` i32 == i32 ` , ` bool && bool ` , checks types.
7171
72- - [ ] Read current ` test/cases/err_binop_types.w `
73- - [ ] Rewrite as end-to-end program exercising binary operations:
72+ - [x ] Read current ` test/cases/err_binop_types.w `
73+ - [x ] Rewrite as end-to-end program exercising binary operations:
7474 ` //! expect-stdout: 3 ` + arithmetic, comparison, logical ops
75- - [ ] Run ` ./scripts/run_tests.sh test/cases/err_binop_types.w ` — passes
75+ - [x ] Run ` ./scripts/run_tests.sh test/cases/err_binop_types.w ` — passes
7676
7777### 2.3 err_borrow_conflict.w
7878
7979Current: Constructs MirBody, adds borrows, runs BorrowChecker, checks error counts.
8080
81- - [ ] Read current ` test/cases/err_borrow_conflict.w `
82- - [ ] Rewrite as program with borrow conflict:
81+ - [x ] Read current ` test/cases/err_borrow_conflict.w `
82+ - [x ] Rewrite as program with borrow conflict:
8383 ` //! expect-check-fail: borrow ` + shared ref then mutation
84- - [ ] If compiler doesn't detect this yet, use ` //! expect-stdout ` test
84+ - [x ] If compiler doesn't detect this yet, use ` //! expect-stdout ` test
8585 showing borrows work + add TODO comment for negative test
86- - [ ] Run ` ./scripts/run_tests.sh test/cases/err_borrow_conflict.w ` — passes
86+ - [x ] Run ` ./scripts/run_tests.sh test/cases/err_borrow_conflict.w ` — passes
8787
8888### 2.4 err_invalid_cast.w
8989
9090Current: Calls ` cast_instruction(types, TYPE_I32, TYPE_I64) ` , checks return values.
9191
92- - [ ] Read current ` test/cases/err_invalid_cast.w `
93- - [ ] Rewrite as program with invalid cast:
92+ - [x ] Read current ` test/cases/err_invalid_cast.w `
93+ - [x ] Rewrite as program with invalid cast:
9494 ` //! expect-check-fail: cast ` + ` let s = "hello"; let x = s as i32 `
95- - [ ] Run ` ./scripts/run_tests.sh test/cases/err_invalid_cast.w ` — passes
95+ - [x ] Run ` ./scripts/run_tests.sh test/cases/err_invalid_cast.w ` — passes
9696
9797### 2.5 err_match_str_exhaust.w
9898
9999Current: Checks ` TypeTable.is_enum ` , ` TypeTable.is_bool ` , pattern node kind constants.
100100
101- - [ ] Read current ` test/cases/err_match_str_exhaust.w `
102- - [ ] Rewrite as program with non-exhaustive match on string:
101+ - [x ] Read current ` test/cases/err_match_str_exhaust.w `
102+ - [x ] Rewrite as program with non-exhaustive match on string:
103103 ` //! expect-check-fail: exhaustive ` + match with no wildcard
104- - [ ] Run ` ./scripts/run_tests.sh test/cases/err_match_str_exhaust.w ` — passes
104+ - [x ] Run ` ./scripts/run_tests.sh test/cases/err_match_str_exhaust.w ` — passes
105105
106106### 2.6 err_return_type.w
107107
108108Current: Sets ` s.current_return_type = TYPE_I32 ` , checks ` types_compatible ` .
109109
110- - [ ] Read current ` test/cases/err_return_type.w `
111- - [ ] Rewrite as program with return type mismatch:
110+ - [x ] Read current ` test/cases/err_return_type.w `
111+ - [x ] Rewrite as program with return type mismatch:
112112 ` //! expect-check-fail: type ` + ` fn get_num() -> i32: "not a number" `
113- - [ ] Run ` ./scripts/run_tests.sh test/cases/err_return_type.w ` — passes
113+ - [x ] Run ` ./scripts/run_tests.sh test/cases/err_return_type.w ` — passes
114114
115115### 2.7 err_trait_bound.w
116116
117117Current: Creates TraitSolver, adds traits/impls, checks resolve and obligations.
118118
119- - [ ] Read current ` test/cases/err_trait_bound.w `
120- - [ ] Rewrite as program with trait bound violation:
119+ - [x ] Read current ` test/cases/err_trait_bound.w `
120+ - [x ] Rewrite as program with trait bound violation:
121121 ` //! expect-check-fail: trait ` + call requiring trait not implemented
122- - [ ] If compiler doesn't produce this error yet, use simpler trait test
122+ - [x ] If compiler doesn't produce this error yet, use simpler trait test
123123 + add TODO for the negative case
124- - [ ] Run ` ./scripts/run_tests.sh test/cases/err_trait_bound.w ` — passes
124+ - [x ] Run ` ./scripts/run_tests.sh test/cases/err_trait_bound.w ` — passes
125125
126126### 2.8 err_type_mismatch.w
127127
128128Current: Checks ` types_compatible(TYPE_I32, TYPE_STR) ` etc.
129129
130- - [ ] Read current ` test/cases/err_type_mismatch.w `
131- - [ ] Rewrite as program with type mismatch:
130+ - [x ] Read current ` test/cases/err_type_mismatch.w `
131+ - [x ] Rewrite as program with type mismatch:
132132 ` //! expect-check-fail: type ` + ` let x: i32 = "hello" `
133- - [ ] Run ` ./scripts/run_tests.sh test/cases/err_type_mismatch.w ` — passes
133+ - [x ] Run ` ./scripts/run_tests.sh test/cases/err_type_mismatch.w ` — passes
134134
135135### 2.9 err_undefined_fn.w
136136
137137Current: Checks ` Sema.find_fn(s, "foo") == -1 ` .
138138
139- - [ ] Read current ` test/cases/err_undefined_fn.w `
140- - [ ] Rewrite as program calling undefined function:
139+ - [x ] Read current ` test/cases/err_undefined_fn.w `
140+ - [x ] Rewrite as program calling undefined function:
141141 ` //! expect-check-fail: undefined ` + ` fn main: foo() `
142- - [ ] Run ` ./scripts/run_tests.sh test/cases/err_undefined_fn.w ` — passes
142+ - [x ] Run ` ./scripts/run_tests.sh test/cases/err_undefined_fn.w ` — passes
143143
144144### 2.10 err_undefined_type.w
145145
146146Current: Checks ` TypeTable.lookup(types, "NoSuchType") == -1 ` .
147147
148- - [ ] Read current ` test/cases/err_undefined_type.w `
149- - [ ] Rewrite as program using undefined type:
148+ - [x ] Read current ` test/cases/err_undefined_type.w `
149+ - [x ] Rewrite as program using undefined type:
150150 ` //! expect-check-fail: undefined ` + ` let x: NoSuchType = 42 `
151- - [ ] Run ` ./scripts/run_tests.sh test/cases/err_undefined_type.w ` — passes
151+ - [x ] Run ` ./scripts/run_tests.sh test/cases/err_undefined_type.w ` — passes
152152
153153### 2.11 err_undefined_var.w
154154
155155Current: Constructs AST ident for "unknown", checks ` TYPE_ERROR ` .
156156
157- - [ ] Read current ` test/cases/err_undefined_var.w `
158- - [ ] Rewrite as program using undefined variable:
157+ - [x ] Read current ` test/cases/err_undefined_var.w `
158+ - [x ] Rewrite as program using undefined variable:
159159 ` //! expect-check-fail: undefined ` + ` fn main: println(x) `
160- - [ ] Run ` ./scripts/run_tests.sh test/cases/err_undefined_var.w ` — passes
160+ - [x ] Run ` ./scripts/run_tests.sh test/cases/err_undefined_var.w ` — passes
161161
162162### 2.12 err_wrong_arg_count.w
163163
164164Current: Registers function with 2 params, checks ` fn_param_counts ` .
165165
166- - [ ] Read current ` test/cases/err_wrong_arg_count.w `
167- - [ ] Rewrite as program calling function with wrong arg count:
166+ - [x ] Read current ` test/cases/err_wrong_arg_count.w `
167+ - [x ] Rewrite as program calling function with wrong arg count:
168168 ` //! expect-check-fail: argument ` + ` fn add(a: i32, b: i32) -> i32: a + b `
169169 then ` add(1) `
170- - [ ] Run ` ./scripts/run_tests.sh test/cases/err_wrong_arg_count.w ` — passes
170+ - [x ] Run ` ./scripts/run_tests.sh test/cases/err_wrong_arg_count.w ` — passes
171171
172172### Pass 2 verification
173173
174- - [ ] Run ` ./scripts/run_tests.sh ` — all error tests pass
174+ - [x ] Run ` ./scripts/run_tests.sh ` — all error tests pass
175175
176176---
177177
@@ -182,82 +182,82 @@ Current: Registers function with 2 params, checks `fn_param_counts`.
182182Current: 10 test functions checking builtin types, scope chains, function
183183registration, type compatibility, expression type checking, variant lookup.
184184
185- - [ ] Read current ` test/cases/sema_test.w `
186- - [ ] Write ` test/cases/behav_sema_basics.w ` exercising scope chains:
185+ - [x ] Read current ` test/cases/sema_test.w `
186+ - [x ] Write ` test/cases/behav_sema_basics.w ` exercising scope chains:
187187 ` //! expect-stdout: 10 ` + nested scope with let bindings
188- - [ ] Add variant lookup test: enum declaration, match, correct output
189- - [ ] Delete ` test/cases/sema_test.w `
190- - [ ] Run ` ./scripts/run_tests.sh test/cases/behav_sema_basics.w ` — passes
188+ - [x ] Add variant lookup test: enum declaration, match, correct output
189+ - [x ] Delete ` test/cases/sema_test.w `
190+ - [x ] Run ` ./scripts/run_tests.sh test/cases/behav_sema_basics.w ` — passes
191191
192192### 3.2 type_test.w → behav_type_system.w
193193
194194Current: 18 test functions covering struct/enum/array/slice/tuple/fn/ptr/ref/
195195alias/option/result types, equality, generics, trait objects, scopes.
196196
197- - [ ] Read current ` test/cases/type_test.w `
198- - [ ] Write ` test/cases/behav_type_system.w ` with struct test:
197+ - [x ] Read current ` test/cases/type_test.w `
198+ - [x ] Write ` test/cases/behav_type_system.w ` with struct test:
199199 type declaration, field access, ` //! expect-stdout ` verification
200- - [ ] Add enum test: variant construction, match, payload extraction
201- - [ ] Add tuple test: tuple literal, field access by index
202- - [ ] Add array test: array literal, ` .len() ` call
203- - [ ] Delete ` test/cases/type_test.w `
204- - [ ] Run ` ./scripts/run_tests.sh test/cases/behav_type_system.w ` — passes
200+ - [x ] Add enum test: variant construction, match, payload extraction
201+ - [x ] Add tuple test: tuple literal, field access by index
202+ - [x ] Add array test: array literal, ` .len() ` call
203+ - [x ] Delete ` test/cases/type_test.w `
204+ - [x ] Run ` ./scripts/run_tests.sh test/cases/behav_type_system.w ` — passes
205205
206206### 3.3 borrow_test.w → behav_borrow_basic.w
207207
208208Current: Tests BorrowInfo, NllRegion, BorrowChecker on manually-constructed MIR.
209209
210- - [ ] Read current ` test/cases/borrow_test.w `
211- - [ ] Write ` test/cases/behav_borrow_basic.w ` exercising borrows:
210+ - [x ] Read current ` test/cases/borrow_test.w `
211+ - [x ] Write ` test/cases/behav_borrow_basic.w ` exercising borrows:
212212 ` //! expect-stdout: ok ` + shared borrow that compiles and runs
213- - [ ] If borrow checker catches conflicts at check time, add negative test
213+ - [x ] If borrow checker catches conflicts at check time, add negative test
214214 ` err_borrow_mut.w ` with ` //! expect-check-fail: borrow `
215- - [ ] Delete ` test/cases/borrow_test.w `
216- - [ ] Run ` ./scripts/run_tests.sh test/cases/behav_borrow_basic.w ` — passes
215+ - [x ] Delete ` test/cases/borrow_test.w `
216+ - [x ] Run ` ./scripts/run_tests.sh test/cases/behav_borrow_basic.w ` — passes
217217
218218### 3.4 traits_test.w → behav_trait_basics.w
219219
220220Current: Tests TraitSolver (trait definition, impl registration, resolve,
221221coherence, obligation lists).
222222
223- - [ ] Read current ` test/cases/traits_test.w `
224- - [ ] Write ` test/cases/behav_trait_basics.w ` with trait + impl + method call:
223+ - [x ] Read current ` test/cases/traits_test.w `
224+ - [x ] Write ` test/cases/behav_trait_basics.w ` with trait + impl + method call:
225225 ` //! expect-stdout: hello ` + trait definition, struct impl, method call
226- - [ ] Delete ` test/cases/traits_test.w `
227- - [ ] Run ` ./scripts/run_tests.sh test/cases/behav_trait_basics.w ` — passes
226+ - [x ] Delete ` test/cases/traits_test.w `
227+ - [x ] Run ` ./scripts/run_tests.sh test/cases/behav_trait_basics.w ` — passes
228228
229229### 3.5 integ_full_pipeline.w — rewrite in place
230230
231231Current: Manually constructs AST, runs each compiler phase, checks results.
232232
233- - [ ] Read current ` test/cases/integ_full_pipeline.w `
234- - [ ] Rewrite as real program exercising the full pipeline:
233+ - [x ] Read current ` test/cases/integ_full_pipeline.w `
234+ - [x ] Rewrite as real program exercising the full pipeline:
235235 ` //! expect-stdout: 42 ` + nested function, if/else, arithmetic
236- - [ ] Run ` ./scripts/run_tests.sh test/cases/integ_full_pipeline.w ` — passes
236+ - [x ] Run ` ./scripts/run_tests.sh test/cases/integ_full_pipeline.w ` — passes
237237
238238### 3.6 integ_multi_module.w — rewrite in place
239239
240240Current: Imports every compiler module, creates one instance of each.
241241
242- - [ ] Read current ` test/cases/integ_multi_module.w `
243- - [ ] Check how existing multi-file tests work (e.g., ` shadow_helper.w ` )
244- - [ ] Create ` test/cases/integ_helper_module.w ` with ` //! check-only ` +
242+ - [x ] Read current ` test/cases/integ_multi_module.w `
243+ - [x ] Check how existing multi-file tests work (e.g., ` shadow_helper.w ` )
244+ - [x ] Create ` test/cases/integ_helper_module.w ` with ` //! check-only ` +
245245 ` pub fn add(a: i32, b: i32) -> i32: a + b `
246- - [ ] Rewrite ` test/cases/integ_multi_module.w ` :
246+ - [x ] Rewrite ` test/cases/integ_multi_module.w ` :
247247 ` //! expect-stdout: 3 ` + ` use integ_helper_module ` + ` println("{add(1, 2)}") `
248- - [ ] If ` use ` path resolution doesn't support relative test imports,
248+ - [x ] If ` use ` path resolution doesn't support relative test imports,
249249 make it a single-file test instead
250- - [ ] Run ` ./scripts/run_tests.sh test/cases/integ_multi_module.w ` — passes
250+ - [x ] Run ` ./scripts/run_tests.sh test/cases/integ_multi_module.w ` — passes
251251
252252### Pass 3 verification
253253
254- - [ ] Run ` ./scripts/run_tests.sh ` — all tests pass
254+ - [x ] Run ` ./scripts/run_tests.sh ` — all tests pass
255255
256256---
257257
258258## Final Verification
259259
260- - [ ] Run: ` grep -r "^use " test/cases/*.w | grep -E "(Ast|Sema|Types|Mir|Codegen|Driver|BorrowCfg|Lexer|Token|Parser|InternPool|Source|CImport|render|Span|Diag|MirLower)" ` — prints nothing
261- - [ ] Run ` ./scripts/run_tests.sh ` — zero failures
262- - [ ] Every rewritten error test triggers the expected diagnostic through normal compilation
263- - [ ] Every rewritten behavior test builds, runs, and produces correct output
260+ - [x ] Run: ` grep -r "^use " test/cases/*.w | grep -E "(Ast|Sema|Types|Mir|Codegen|Driver|BorrowCfg|Lexer|Token|Parser|InternPool|Source|CImport|render|Span|Diag|MirLower)" ` — prints nothing
261+ - [x ] Run ` ./scripts/run_tests.sh ` — zero failures
262+ - [x ] Every rewritten error test triggers the expected diagnostic through normal compilation
263+ - [x ] Every rewritten behavior test builds, runs, and produces correct output
0 commit comments