docs: Phase 100 pinned read-only captures plan

This commit is contained in:
nyash-codex
2025-12-17 05:03:07 +09:00
parent 90a8f1650d
commit 8ab95666c8
4 changed files with 60 additions and 0 deletions

View File

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