feat(parser): Phase 285A1.4 & A1.5 - Weak field sugar + Parser hang fix

A1.4: Add sugar syntax `public weak parent` ≡ `public { weak parent }`
A1.5: Fix parser hang on unsupported `param: Type` syntax

Key changes:
- A1.4: Extend visibility parser to handle weak modifier (fields.rs)
- A1.5: Shared helper `parse_param_name_list()` with progress-zero detection
- A1.5: Fix 6 vulnerable parameter parsing loops (methods, constructors, functions)
- Tests: Sugar syntax (OK/NG), parser hang (timeout-based)
- Docs: lifecycle.md, EBNF.md, phase-285a1-boxification.md

Additional changes:
- weak() builtin implementation (handlers/weak.rs)
- Leak tracking improvements (leak_tracker.rs)
- Documentation updates (lifecycle, types, memory-finalization, etc.)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
This commit is contained in:
2025-12-24 07:44:50 +09:00
parent a47f850d02
commit ab76e39036
60 changed files with 2099 additions and 454 deletions

View File

@ -218,6 +218,42 @@ Nyash provides a macro-powered lightweight test runner in Phase 16 (MVP).
- `nyash --run-tests apps/tests/my_tests.hako`
- Discovers top-level `test_*` functions and Box `test_*` methods (static/instance).
- Filtering: `--test-filter NAME` (substring match) or env `NYASH_TEST_FILTER`.
---
## Phase 285: Lifecycle / WeakRef / Leak diagnosticsクロスバックエンド
言語SSOT:
- `docs/reference/language/lifecycle.md``fini` / weak / cleanup / GC方針
- `docs/reference/language/types.md`truthiness と `null`/`void`
目的:
- Rust VM と LLVMharnessで、weak と lifecycle の挙動が一致しているかを短い fixture で固定する。
- 強参照サイクル等で「終了時に強参照rootが残っている」状況を、default-off の診断で観測できるようにする(実装後)。
推奨の運用(ルート汚染防止):
- fixture は `local_tests/` に置く。
weakが効いていること:
```bash
mkdir -p local_tests
$EDITOR local_tests/phase285_weak_basic.hako
./target/release/hakorune --backend vm local_tests/phase285_weak_basic.hako
NYASH_LLVM_USE_HARNESS=1 ./target/release/hakorune --backend llvm local_tests/phase285_weak_basic.hako
```
例(強参照サイクル + 終了時診断):
```bash
$EDITOR local_tests/phase285_cycle.hako
# 実装後: leak report をONにして終了時に root を表示
NYASH_LEAK_LOG=1 ./target/release/hakorune --backend vm local_tests/phase285_cycle.hako
NYASH_LLVM_USE_HARNESS=1 NYASH_LEAK_LOG=1 ./target/release/hakorune --backend llvm local_tests/phase285_cycle.hako
```
実装者向けの詳しい手順:
- `docs/development/current/main/phases/phase-285/CLAUDE_CODE_RUNBOOK.md`
- Entry policy when a main exists:
- `--test-entry wrap` → run tests then call original main
- `--test-entry override` → replace entry with test harness only