test: フィクスチャの断片化を解消し、ファイル分割の単位を規約化する - #17
Merged
Merged
Conversation
1ファイル1クラス規約により、階層の基底・末端・その周辺宣言が 数行のファイルへ細かく分割されていた。同一 sealed 階層を構成する クラス群に限り1ファイルへまとめてよいものとする。 Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
基底・末端・吸収サブタイプ・kind の親クラスを基底名のファイルへ集約する (103 -> 41 ファイル)。宣言のネスト位置は変えない。entries の整列キーは 末端の FQN であり、ネストを動かすと期待値が変わるためである。 分離を保つのは検証の成立条件となる配置のみとする。 - private トップレベルの壁: vis.pub の VisRootFarLeaves - K7 の別ファイル配置: order.flat の FlatRootLeaves - import 集合が解決文脈となる: scope.target の競合 3 形 Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
kindaccessor / order / tostring / wider を基底名のファイルへ集約する (34 -> 20 ファイル)。 参照不能 kind のうちトップレベル壁を作る 2 形(private トップレベル末端・ private 外側クラスの末端)は基底と別ファイルであることが壁の成立条件のため、 KaWalledLeaves へ分離して理由を明記する。 Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
sweep-* / probe-* / binary-swap の基底と末端・利用点を 1 ファイルへ集約し、 参照するテストのファイル名・行番号を実測値へ合わせる。 ファイル粒度が検証対象となる箇所は分離を保つ。 - runMain の mainClass はファイル名由来のため Main.kt は分離する - probe-annotation-alias はテストが別名ファイルを削除するため分離する - ic-* / determinism / abi-propagation はテストがファイル単位で編集するため対象外 Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
1 宣言 1 ファイルだった構成を 1 ファイル = 1 診断ケースへ集約する (148 -> 35 ファイル)。ファイル名は診断名とし、DiagSingleFailTest の file:line 照合は再編後の実測値へ書き換える。 同一ファイルへ複数宣言が同居するケースでは、言語診断も宣言単位の 分解能を保つためファイル内断片照合から行照合へ変更する。 分離を保つのは検証の成立条件となる配置のみとする。 - ScopePriv / ScopePrivUse: private トップレベルはファイルスコープ - Lc4Priv: 参照不能末端であることが別ファイル配置に依る - Mc1Si: ES 非発火をファイル単位で観測する Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
1 宣言 1 ファイルだった構成を 1 ファイル = 1 診断ケースへ集約する (86 -> 25 ファイル)。DiagSingleOkTest の参照ファイル名と ES 警告の 行照合は再編後の実測値へ書き換える。 生成型への頭別名(NmThSi : NmThAlias)は別名が基底より先に解決される 配置が成立条件であり、その順序はファイル名順である。別名ファイルは TypealiasAliases として基底の TypealiasMatch より前へ置く。 分離を保つのは検証の成立条件となる配置のみとする。 - NmVis3Mid: private トップレベル中間は基底と別ファイル - NmAlImported / NmStarNoc / NmFarNoc: import 集合が解決文脈 - NmTlSame: 同一ファイル別名の raw 追跡 Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Cross2 が両末端を実装する 2 階層は同一ケースの構成要素のため XfamSi へ集約する。 Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
「1 ファイル 1 クラス規約の適用外」という記述を、分割単位(階層フィクスチャ = 1 階層・診断フィクスチャ = 1 診断ケース)と、分離が検証の成立条件となる条件の 表へ差し替える。 Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
1 ケースが複数ファイルになる箇所をパッケージで括り、ルートパッケージには 1 ファイル = 1 ケースのものだけを残す。sealed 階層は同一パッケージを要求するため 階層ごと丸ごと移す。 - diag-fail: visibilityscope(DIA-28)・labelclash(DIA-34/35)・memberconflict(DIA-40〜43) - diag-ok: rawtracking(DIA-31/32)・typealiasmatch(DIA-52)・visibility(DIA-26) 「別パッケージであること」自体が次元値の far はケースのパッケージ配下へ入れ子にする。 ファイル名は変えないため診断の file:line 照合に変更はない。 Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
目的
テストフィクスチャが 1 宣言 1 ファイルで細かく分割され、
package行とimportを除くと実質 2〜4 行のファイルが大半になっていた。原因は「クラスは 1 ファイルにつき 1 つまで」の規約であるため、規約を緩和したうえでフィクスチャを再編する。規約変更
同一の
sealed階層を構成するクラス群は 1 ファイルへまとめてよいものとする(CLAUDE.md)。末端・中間の他、末端の吸収サブタイプやkindの親クラスも同階層の構成要素として扱う。成果
src/mainfixtures*Mainmaven-integration は既に 1 階層 1 ファイルで断片化しておらず対象外とした。
分割の単位
宣言のネスト位置は変更していない。
entriesの整列キーは末端の FQN であり、ネストを動かすと期待値が変わるためである。分離を維持した箇所
統合すると検証が成立しなくなる配置は分離を保ち、理由をファイル先頭コメントに明記した。
privateトップレベル=ファイルスコープの壁VisRootFarLeaves/KaWalledLeaves/ScopePrivUse/Lc4Privorder.flatのFlatRootLeavesimport別名 / star import の解決文脈scope.targetの競合 3 形・NmAlImported/NmStarNoc/NmFarNocTypealiasAliasesがTypealiasMatchより前Mc1Si(ES 非発火)ic-*/determinism/abi-propagationrunMainのmainClassがファイル名由来Main.ktテスト側の変更
DiagSingleFailTest/DiagSingleOkTest/ProbeGateTest/TypealiasGateTestのfile:line照合を再編後の実測値へ書き換えた。同一ファイルへ複数宣言が同居するケースでは、言語診断も宣言単位の分解能を保つためファイル内断片照合から行照合へ変更している。途中で踏んだ既知の制限
NmThSi : NmThAlias(生成型への頭別名)は別名が基底より先に解決される配置が成立条件であり、その順序はファイル名順である。統合時にTypealiasMatchAliases.ktと命名したところTypealiasMatch.ktが先に処理され、修正方針案 #17 のバックエンド ICE(Exception during IR fake override builder)が再現した。TypealiasAliases.ktへ改名して解消し、順序が成立条件であることをファイル先頭コメントへ明記した。検証
integration-test:build(全モジュール・ktfmtCheck含む): BUILD SUCCESSFUL@Disabled)資料
docs/test/フィクスチャ構成.md§5 の「1 ファイル 1 クラス規約の適用外」という記述を、分割単位と分離が検証の成立条件となる条件の表へ差し替えた。🤖 Generated with Claude Code