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:
@ -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 と LLVM(harness)で、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
|
||||
|
||||
Reference in New Issue
Block a user