docs: Phase 100 pinned read-only captures plan
This commit is contained in:
@ -184,3 +184,23 @@ Box を新規実装・変更した際は以下を必ず確認:
|
||||
- `docs/development/current/main/loop_pattern_space.md`(パターン空間に追記が必要なら)
|
||||
- `docs/development/current/main/joinir-architecture-overview.md`(箱/契約が増えたなら)
|
||||
- 本ファイル(入口・責務マップの更新)
|
||||
|
||||
---
|
||||
|
||||
## スコープ解決の SSOT(Pinned Read‑Only Captures)
|
||||
|
||||
JoinIR lowering では「ループ内で参照される値」を次の層で解決する(探索順 SSOT):
|
||||
|
||||
1. `ConditionEnv`(条件式に必要な値)
|
||||
2. `LoopBodyLocalEnv`(ループ body 内で初期化される一時変数)
|
||||
3. `CapturedEnv`(ループ外から入ってくる read‑only 入力)
|
||||
|
||||
`CapturedEnv` は “読み取り専用入力” の SSOT として扱い、内部で区別する:
|
||||
- `Explicit`(従来の capture)
|
||||
- `Pinned`(ループ外 local を loop 内 receiver として参照するための read‑only capture)
|
||||
|
||||
Fail‑Fast(Pinned):
|
||||
- loop body 内で再代入される変数は pinned 禁止
|
||||
- loop entry 時点で host 側 ValueId が無い場合は拒否(黙って skip しない)
|
||||
|
||||
設計メモ: `docs/development/current/main/phases/phase-100/README.md`
|
||||
|
||||
Reference in New Issue
Block a user