43 lines
1.9 KiB
Markdown
43 lines
1.9 KiB
Markdown
## Phase 20.18 — Tasks & Checklist
|
||
|
||
P0 — Null/Void 固定(言語+VM+Core+Docs)
|
||
- [ ] Parser: `null`/`void` を予約語として受理(AST: NullLiteral/VoidLiteral)
|
||
- [ ] MIR: ConstValue に Null/Void を追加(emit/reader/verifier/print)
|
||
- [ ] VM: VMValue::Null 追加、`to_bool_vm/eq_vm/to_string_vm` に Null を追加
|
||
- [ ] Singleton: NullBox/VoidBox の Lazy static 化(to_nyash_box で変換)
|
||
- [ ] Core: Array/Map の SSOT へ収束(get/pop→Null、set/clear/push→Void、delete→値 or Null、set 不正→Fail)
|
||
- [ ] Smokes: null/void identity/boolean、array/map(get/pop/delete/invalid set)
|
||
- [ ] Docs: vm-core / gate-c-core-routing / INDEX / phase-20.18 README を更新
|
||
|
||
Core/API
|
||
- [ ] Array.try_get/1(ok=value, err=E_OOB)
|
||
- [ ] Array.try_pop/0(ok=value, err=E_EMPTY)
|
||
- [ ] Map.try_get/1(ok=value, err=E_NOT_FOUND)
|
||
- [ ] String.to_i64/0(ok=i64, err=E_PARSE)
|
||
- [ ] String.to_f64/0(ok=f64, err=E_PARSE)
|
||
|
||
Parser/Lowering
|
||
- [ ] `let a?=/a!=` の受理
|
||
- [ ] `if let ok(v) = …` の受理
|
||
- [ ] Lowering: `?` → select, `!` → branch+trap, if‑let → branch(allocなし)
|
||
|
||
Verifier/Diagnostics
|
||
- [ ] 例外タグ(E_OOB/E_EMPTY/E_NOT_FOUND/E_PARSE)の固定
|
||
- [ ] `HAKO_TRY_API=1` gate での動作保証
|
||
|
||
Plugins(段階更新)
|
||
- [ ] MapBox: get 欠落→Null、delete→値 or Null、clear→Void、set→Void/不正→E_INVALID_*
|
||
- [ ] ArrayBox: get/pop 欠落→Null、push/set/clear→Void、set OOB→E_OOB
|
||
- [ ] HostHandleRouter: Core 先行経路の優先(未更新プラグインの影響を遮断)
|
||
|
||
Smokes(quick, opt‑in)
|
||
- [ ] try_get: ok/err + `a?`/`a!`/if-let ok
|
||
- [ ] try_pop: ok/err + `a?`/`a!`
|
||
- [ ] map.try_get: ok/err + 糖衣
|
||
- [ ] string.to_i64/to_f64: ok/err(stdout/rc/タグ)
|
||
|
||
Docs
|
||
- [ ] result-semantics.md(case-by-case)
|
||
- [ ] optional-semantics.md に 20.18 方針リンク追記
|
||
- [ ] guides/testing-guide.md に観測方法(stdout/rc/タグ)補足
|