1.9 KiB
1.9 KiB
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=1gate での動作保証
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/タグ)補足