feat(joinir): Phase Next - parse_array/object 同型 fixture

## 実ループ制御構造の抽出
- parse_array_min.program.json (n=10 → acc=6)
- parse_object_min.program.json (n=10 → acc=7)

## 既存パターン再利用
- ContinueReturn lowering 活用(新規 lowering 不要)
- 優れたモジュール再利用の実証

## Tests
- +4 tests (ParseArray 2本 + ParseObject 2本)
- +1 test fixed (Phase 88 error message 更新)
- normalized_dev: 64→69 passed (+5)

## 箱化評価
- 単一責任: 
- 境界明確:  (SSOT)
- 再利用性:  (既存パターン活用)
- テスト容易性: 
- SSOT:  (dev_fixtures.rs)

## レガシー探索
- デッドコード: なし
- 重複コード: なし
- クリーンな状態維持

Impact:
- 実ループ寄せの基盤確立
- モジュール設計の成功実証
- 技術的負債ゼロ

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

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
This commit is contained in:
nyash-codex
2025-12-14 04:09:46 +09:00
parent df57d3d320
commit 2a18a66154
5 changed files with 115 additions and 3 deletions

View File

@ -24,6 +24,10 @@ pub enum NormalizedDevFixture {
/// Refactor-B: ContinueReturn multi minimal (multiple return-if with same value)
/// Note: This also tests Null literal support from Refactor-A
ContinueReturnMultiMin,
/// Parse Array minimal (Phase Next: _parse_array homomorphic fixture)
ParseArrayMin,
/// Parse Object minimal (Phase Next: _parse_object homomorphic fixture)
ParseObjectMin,
}
impl NormalizedDevFixture {
@ -40,6 +44,8 @@ impl NormalizedDevFixture {
Self::PatternContinueReturnMin => "pattern_continue_return_minimal",
Self::ParseStringCompositeMin => "parse_string_composite_minimal",
Self::ContinueReturnMultiMin => "continue_return_multi_minimal",
Self::ParseArrayMin => "parse_array_minimal",
Self::ParseObjectMin => "parse_object_minimal",
}
}
@ -64,6 +70,12 @@ impl NormalizedDevFixture {
Self::ContinueReturnMultiMin => {
"../../../../docs/private/roadmap2/phases/normalized_dev/fixtures/continue_return_multi_min.program.json"
}
Self::ParseArrayMin => {
"../../../../docs/private/roadmap2/phases/normalized_dev/fixtures/parse_array_min.program.json"
}
Self::ParseObjectMin => {
"../../../../docs/private/roadmap2/phases/normalized_dev/fixtures/parse_object_min.program.json"
}
}
}
@ -76,7 +88,9 @@ impl NormalizedDevFixture {
| Self::Pattern4JsonParserParseObjectContinueSkipWs
| Self::PatternContinueReturnMin
| Self::ParseStringCompositeMin
| Self::ContinueReturnMultiMin => FunctionRoute::LoopFrontend,
| Self::ContinueReturnMultiMin
| Self::ParseArrayMin
| Self::ParseObjectMin => FunctionRoute::LoopFrontend,
}
}
@ -104,6 +118,12 @@ impl NormalizedDevFixture {
Self::ContinueReturnMultiMin => include_str!(
"../../../../docs/private/roadmap2/phases/normalized_dev/fixtures/continue_return_multi_min.program.json"
),
Self::ParseArrayMin => include_str!(
"../../../../docs/private/roadmap2/phases/normalized_dev/fixtures/parse_array_min.program.json"
),
Self::ParseObjectMin => include_str!(
"../../../../docs/private/roadmap2/phases/normalized_dev/fixtures/parse_object_min.program.json"
),
}
}
@ -134,6 +154,8 @@ pub const ALL_DEV_FIXTURES: &[NormalizedDevFixture] = &[
NormalizedDevFixture::PatternContinueReturnMin,
NormalizedDevFixture::ParseStringCompositeMin,
NormalizedDevFixture::ContinueReturnMultiMin,
NormalizedDevFixture::ParseArrayMin,
NormalizedDevFixture::ParseObjectMin,
];
#[cfg(test)]

View File

@ -791,6 +791,22 @@ pub fn build_parse_string_composite_min_structured_for_normalized_dev() -> JoinM
NormalizedDevFixture::ParseStringCompositeMin.load_and_lower()
}
/// Parse Array minimal を Structured で組み立てるヘルパー
///
/// Fixture: docs/private/roadmap2/phases/normalized_dev/fixtures/parse_array_min.program.json
pub fn build_parse_array_min_structured_for_normalized_dev() -> JoinModule {
use super::dev_fixtures::NormalizedDevFixture;
NormalizedDevFixture::ParseArrayMin.load_and_lower()
}
/// Parse Object minimal を Structured で組み立てるヘルパー
///
/// Fixture: docs/private/roadmap2/phases/normalized_dev/fixtures/parse_object_min.program.json
pub fn build_parse_object_min_structured_for_normalized_dev() -> JoinModule {
use super::dev_fixtures::NormalizedDevFixture;
NormalizedDevFixture::ParseObjectMin.load_and_lower()
}
/// まとめて import したいとき用のプレリュード。
pub mod prelude {
pub use super::{
@ -809,6 +825,8 @@ pub mod prelude {
build_pattern4_continue_min_structured_for_normalized_dev,
build_pattern_continue_return_min_structured_for_normalized_dev,
build_parse_string_composite_min_structured_for_normalized_dev,
build_parse_array_min_structured_for_normalized_dev,
build_parse_object_min_structured_for_normalized_dev,
build_selfhost_if_sum_p3_ext_structured_for_normalized_dev,
build_selfhost_if_sum_p3_structured_for_normalized_dev,
build_selfhost_token_scan_p2_accum_structured_for_normalized_dev,