Skip to content

test: 合流(多重経路)と探索境界のケースを追加する - #18

Merged
k163377 merged 3 commits into
mainfrom
test/confluence-and-search-boundary
Aug 1, 2026
Merged

test: 合流(多重経路)と探索境界のケースを追加する#18
k163377 merged 3 commits into
mainfrom
test/confluence-and-search-boundary

Conversation

@k163377

@k163377 k163377 commented Aug 1, 2026

Copy link
Copy Markdown
Contributor

背景

class Impl : Foo, Bar(兄弟中間 sealed の同時実装)で entries が重複した欠陥は修正済みだが、
次元モデルの K5 は「多重経路(兄弟中間の同時実装)」という 1 値しか持たず、
合流点の種別や経路の非対称性を軸として展開していなかった。
同型の未検出が残るため、言語仕様から合流の形を洗い出して被覆する。

なお diag-ok の NmDia は既に「基底直下 + 中間経由」の構成を持っていたが、
観測面が O2(診断の非発火)だけであり entries を見ていなかった。
構成ではなく観測面が欠けていたのが今回の穴の構造である。

変更

フィクスチャとテスト(新規テストクラス・新規フィクスチャ階層は無し。既存階層と既存テスト関数への追加のみ)

階層 追加 目的
MultiPath 中間 MpClassMid(sealed class) / 合流点 MpShared / MpHost.CompanionMpDirectMpMixedMpNestedMpDeep 合流点の種別(非 sealed 末端 / 中間 sealed / companion 末端)× 経路の非対称性(対称 / 基底直下併存 / sealed class 中間との混成)× 入れ子
RootVia 非注釈 sealed 祖先 ViaAncestor + 直下の非所属 ViaOutside 上方向の探索境界
Zoo IfaceLeaf 配下の sealed 部分階層 Brood / Chick 下方向の探索境界(吸収へ合流)

entries スナップショットは 1 本のまま 8 要素へ拡張し、全末端 FQN 一括整列とは一致しないこと(初出位置による break)も同じメソッドで固定する。

[MpMixed, MpDirect, MpBoth, Companion, MpNested, MpOnlyLeft, MpDeep, MpOnlyRight]

資料

  • テスト戦略 §2: K5 を合流の軸へ展開・K2 へ非注釈 sealed 祖先・§3 C2 へ末端列挙の 4 分岐
  • ケース03 §1: 初出位置の決定規則を書き下し。ケース01 API-13/API-30/API-57 とフィクスチャ構成へ反映
  • 設計00 §6.2・設計02 §2: 重複排除の規則を合流一般へ拡張。設計02 §3 のコレクション規則の文言を実装へ合わせる

実装変更の有無

無し。追加した全構成は現行実装で成立する(形の被覆と規則の明文化が目的)。

検証

:producer-jvm:test / :consumer-plugin-jvm:test / :consumer-pure-jvm:test / :downstream-subtype-jvm:test / ktfmtCheck が green。

残件

中間 sealed の expect/actual(K2 は基底・K4 は末端のみを持ち中間は次元モデルに無い)は、
expect sealed interface の言語可否自体が未確定のため本 PR に含めない。
確認は diag-mpp の ok モジュールへ expect/actual 中間を 1 組置いて 1 ビルド回すのが最小手順。

🤖 Generated with Claude Code

k163377 and others added 3 commits August 2, 2026 01:40
MultiPath へ合流点の種別(中間 sealed・companion 末端)と経路の非対称性
(基底直下併存・sealed class 中間との混成)・合流の入れ子を合成し、
entries スナップショットで初出 1 回掲載を固定する。

RootVia へ非注釈 sealed 祖先とその直下の非所属メンバー、Zoo へ非 sealed 末端配下の
sealed 部分階層を置き、探索境界の上下両方向を固定する。

いずれも既存フィクスチャ階層と既存テスト関数への追加であり、
テストクラス・フィクスチャ階層は増やさない。

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
K5 の「多重経路」を合流点の種別 × 経路の非対称性 × 入れ子の軸へ展開し、
非 sealed 末端配下の sealed 部分階層(下方向)と非注釈 sealed 祖先(K2・上方向)を
探索境界として値に加える。網羅基準 C2 の分岐典拠へ末端列挙の 4 分岐を追加する。

ケース03 §1 は初出位置の決定規則(深さ優先の到達順・基底直下と中間経由の競合)まで
書き下し、ケース01 API-13/API-30/API-57 とフィクスチャ構成へ対応を反映する。

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
設計00 §6.2・設計02 §2 の記述は同じ末端への複数経路のみを対象としていたため、
合流点が中間 sealed である場合(配下のサブツリーごと 1 回・2 度目の到達では非展開)と
初出位置の決定規則を含む一般形へ改める。

設計02 §3 のコレクション規則は蓄積そのものが LinkedHashSet である実装と
読み違えるため、文言を実装へ合わせる。

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@k163377
k163377 merged commit 2a545ff into main Aug 1, 2026
9 checks passed
@k163377
k163377 deleted the test/confluence-and-search-boundary branch August 1, 2026 16:48
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant