---
generated_at: 2026-02-19 10:30:00
metrics:
  claims_total: 144
  claims_with_evidence: 144
  claims_without_evidence: 0
confidence_derived: 1.00
---

# 根拠レポート：Compiler-Facilities 単体テストケース一覧

## 本レポートについて

### 目的
本レポートは、生成された単体テストケース一覧の信頼性を検証し、人間レビュアーが効率的にレビューできるようにすることを目的としています。

### チェック方法
以下の観点でドキュメントの内容（Claim：主張）を検証しています：

1. **根拠の有無確認**：各テストケースに対して、ソースコード内のクラス・関数・メソッドが実際に存在するか
2. **根拠との整合性**：テストケースの内容がソースコードの実装と矛盾していないか
3. **網羅性**：主要なクラス・関数・メソッドに対してテストケースが作成されているか

### 信頼度スコアの算出
- **confidence_derived** = 根拠あり件数 / 総主張件数
- 状態「○」：根拠あり、「△」：根拠不足または要確認

### 本レポートの使い方
1. まず「サマリー」で全体の信頼度と優先レビュー項目を確認
2. 「Claims と根拠の対応」で △ の項目を重点的にレビュー
3. 「不足情報」で補完が必要な情報源を確認

---

## 1) サマリー（まず見るところ）
- 総合信頼度（derived）：**1.00**
  - 根拠あり：144 / 144、根拠なし：0
- 優先レビュー（高）
  1. **LanguageVersion.SupportsFeature (UT-FAC-001〜003)**：言語バージョン機能の中核機能
  2. **DiagnosticsLogger (UT-FAC-016〜045)**：診断ログ機能の包括的なテスト
  3. **AsyncMemoize (UT-FAC-046〜060)**：キャッシュ・メモ化機能のテスト

## 2) 参照した情報（Evidence一覧）
> ここに実在するソースファイルを列挙

- E-01: `src/Compiler/Facilities/LanguageFeatures.fs` - LanguageVersion クラス、LanguageFeature 列挙型
- E-02: `src/Compiler/Facilities/DiagnosticsLogger.fs` - DiagnosticsLogger、PhasedDiagnostic、CapturingDiagnosticsLogger、StackGuard等
- E-03: `src/Compiler/Facilities/AsyncMemoize.fs` - AsyncLazy、AsyncMemoize、AsyncMemoizeDisabled
- E-04: `src/Compiler/Facilities/BuildGraph.fs` - GraphNode クラス
- E-05: `src/Compiler/Facilities/Hashing.fs` - Md5StringHasher、Md5Hasher モジュール
- E-06: `src/Compiler/Facilities/DiagnosticResolutionHints.fs` - SuggestionBuffer、IsInEditDistanceProximity、DemangleOperator
- E-07: `src/Compiler/Facilities/prim-lexing.fs` - StringText、LexBuffer、Position、UnicodeTables
- E-08: `src/Compiler/Facilities/prim-parsing.fs` - IParseState、Stack、AssocTable、Tables
- E-09: `src/Compiler/Facilities/TextLayoutRender.fs` - renderL、showL、toArray等
- E-10: `src/Compiler/Facilities/DiagnosticOptions.fs` - FSharpDiagnosticOptions
- E-11: `src/Compiler/Facilities/ReferenceResolver.fs` - LegacyResolvedFile、LegacyReferenceResolver
- E-12: `src/Compiler/Facilities/SimulatedMSBuildReferenceResolver.fs` - SimulatedMSBuildResolver
- E-13: `src/Compiler/Facilities/CompilerLocation.fs` - FSharpEnvironment モジュール

## 3) Claims と根拠の対応（レビューの主戦場）

### LanguageFeatures.fs 関連 (UT-FAC-001〜015)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-01 | LanguageVersion.SupportsFeature - サポート機能判定 | E-01: L298-304 SupportsFeature メソッド | ○ |
| C-02 | LanguageVersion.SupportsFeature - バージョン制限 | E-01: L298-304 features辞書とバージョン比較 | ○ |
| C-03 | LanguageVersion.SupportsFeature - 無効化機能 | E-01: L299 disabledFeatures配列チェック | ○ |
| C-04 | LanguageVersion コンストラクタ - バージョン解析 | E-01: L260-283 getVersionFromString関数 | ○ |
| C-05 | LanguageVersion.IsPreviewEnabled | E-01: L315 IsPreviewEnabled プロパティ | ○ |
| C-06 | LanguageVersion デフォルト | E-01: L264 "DEFAULT"のマッピング | ○ |
| C-07 | LanguageVersion 無効バージョン | E-01: L283 その他は0m返却 | ○ |
| C-08 | LanguageVersion.ContainsVersion | E-01: L318-320 ContainsVersion静的メソッド | ○ |
| C-09 | LanguageVersion.ContainsVersion 無効 | E-01: L318-320 languageVersions.Contains | ○ |
| C-10 | LanguageVersion.GetFeatureString | E-01: L348-445 GetFeatureString静的メソッド | ○ |
| C-11 | LanguageVersion.GetFeatureVersionString | E-01: L448-451 GetFeatureVersionString | ○ |
| C-12 | LanguageVersion.TryParseFeature 有効 | E-01: L454-469 TryParseFeature静的メソッド | ○ |
| C-13 | LanguageVersion.TryParseFeature 無効 | E-01: L454-469 Option.bind | ○ |
| C-14 | LanguageVersion.Equals | E-01: L471-477 Equals オーバーライド | ○ |
| C-15 | LanguageVersion.WithDisabledFeatures | E-01: L307 WithDisabledFeatures メソッド | ○ |

### DiagnosticsLogger.fs 関連 (UT-FAC-016〜045)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-16 | DiagnosticsLogger.DiagnosticSink | E-02: L366 DiagnosticSink抽象メソッド | ○ |
| C-17 | DiagnosticsLogger.ErrorCount | E-02: L362 ErrorCount抽象プロパティ | ○ |
| C-18 | DiagnosticsLogger.CheckForErrors 有 | E-02: L368 CheckForErrors メソッド | ○ |
| C-19 | DiagnosticsLogger.CheckForErrors 無 | E-02: L368 ErrorCount > 0 | ○ |
| C-20 | CapturingDiagnosticsLogger.DiagnosticSink | E-02: L394-403 DiagnosticSink実装 | ○ |
| C-21 | CapturingDiagnosticsLogger.ErrorCount | E-02: L400-401 errorCount更新 | ○ |
| C-22 | CapturingDiagnosticsLogger.CommitDelayedDiagnostics | E-02: L409-412 CommitDelayedDiagnostics | ○ |
| C-23 | PhasedDiagnostic.Create | E-02: L294-300 Create静的メソッド | ○ |
| C-24 | PhasedDiagnostic.Subcategory | E-02: L309-321 Subcategory メソッド | ○ |
| C-25 | PhasedDiagnostic.IsSubcategoryOfCompile true | E-02: L325-347 IsSubcategoryOfCompile | ○ |
| C-26 | PhasedDiagnostic.IsSubcategoryOfCompile false | E-02: L332-342 非コンパイルサブカテゴリ | ○ |
| C-27 | PhasedDiagnostic.IsPhaseInCompile | E-02: L351-357 IsPhaseInCompile | ○ |
| C-28 | findOriginalException WrappedError | E-02: L52-56 findOriginalException関数 | ○ |
| C-29 | findOriginalException ReportedError | E-02: L54 ReportedError(Some err)ケース | ○ |
| C-30 | AttachRange 範囲付加 | E-02: L181-192 AttachRange関数 | ○ |
| C-31 | AttachRange range0 | E-02: L182-183 range0チェック | ○ |
| C-32 | NormalizeErrorString 制御文字 | E-02: L800-825 NormalizeErrorString関数 | ○ |
| C-33 | NormalizeErrorString 改行 | E-02: L809-816 改行処理 | ○ |
| C-34 | NewlineifyErrorString | E-02: L794-795 NewlineifyErrorString関数 | ○ |
| C-35 | UseBuildPhase | E-02: L527-533 UseBuildPhase関数 | ○ |
| C-36 | UseDiagnosticsLogger | E-02: L545-546 UseDiagnosticsLogger関数 | ○ |
| C-37 | CompilationGlobalsScope コンストラクタ | E-02: L557-564 CompilationGlobalsScope | ○ |
| C-38 | CompilationGlobalsScope.Dispose | E-02: L567-570 IDisposable実装 | ○ |
| C-39 | StackGuard.Guard | E-02: L952-979 Guard メソッド | ○ |
| C-40 | StackGuard.IsStackSufficient | E-02: L938-950 IsStackSufficient静的メソッド | ○ |
| C-41 | TrackErrorsBuilder.Bind OkResult | E-02: L676-683 bind関数 | ○ |
| C-42 | TrackErrorsBuilder.Bind ErrorResult | E-02: L683 ErrorResult伝播 | ○ |
| C-43 | OperationResult.ignore | E-02: L786-789 ignore関数 | ○ |
| C-44 | MultipleDiagnosticsLoggers.Parallel | E-02: L988-1038 Parallel関数 | ○ |
| C-45 | MultipleDiagnosticsLoggers.Sequential | E-02: L1040-1048 Sequential関数 | ○ |

### AsyncMemoize.fs 関連 (UT-FAC-046〜060)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-46 | AsyncLazy.Request 初回 | E-03: L75-88 request関数 | ○ |
| C-47 | AsyncLazy.Request キャッシュ | E-03: L87 Completed result ケース | ○ |
| C-48 | AsyncLazy.Request 共有 | E-03: L86 Running状態でcount+1 | ○ |
| C-49 | AsyncLazy.CancelIfUnawaited | E-03: L102 CancelIfUnawaited メソッド | ○ |
| C-50 | AsyncLazy.TryResult Completed | E-03: L106-109 TryResult プロパティ | ○ |
| C-51 | AsyncLazy.TryResult 未完了 | E-03: L109 _ -> None | ○ |
| C-52 | AsyncMemoize.Get | E-03: L217-279 Get メソッド | ○ |
| C-53 | AsyncMemoize.Get キャッシュ | E-03: L248-249 countHit関数 | ○ |
| C-54 | AsyncMemoize.TryGet 条件合致 | E-03: L281-288 TryGet メソッド | ○ |
| C-55 | AsyncMemoize.TryGet 条件不一致 | E-03: L287 false, _ -> None | ○ |
| C-56 | AsyncMemoize.Clear 全て | E-03: L290 Clear メソッド | ○ |
| C-57 | AsyncMemoize.Clear 条件 | E-03: L292-293 Clear predicate | ○ |
| C-58 | AsyncMemoizeDisabled.Get | E-03: L364-366 Get メソッド | ○ |
| C-59 | shortPath ディレクトリあり | E-03: L114-124 shortPath関数 | ○ |
| C-60 | shortPath ディレクトリなし | E-03: L121-122 tryLastとdefaultValue | ○ |

### BuildGraph.fs 関連 (UT-FAC-061〜068)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-61 | GraphNode.GetOrComputeValue 初回 | E-04: L36-68 GetOrComputeValue メソッド | ○ |
| C-62 | GraphNode.GetOrComputeValue キャッシュ | E-04: L38-39 cachedResultNode チェック | ○ |
| C-63 | GraphNode.TryPeekValue ValueSome | E-04: L70 TryPeekValue メソッド | ○ |
| C-64 | GraphNode.TryPeekValue ValueNone | E-04: L70 cachedResult返却 | ○ |
| C-65 | GraphNode.HasValue | E-04: L72 HasValue プロパティ | ○ |
| C-66 | GraphNode.IsComputing | E-04: L74 IsComputing プロパティ | ○ |
| C-67 | GraphNode.FromResult | E-04: L76-78 FromResult静的メソッド | ○ |
| C-68 | GraphNode.SetPreferredUILang | E-04: L15-20 SetPreferredUILang関数 | ○ |

### Hashing.fs 関連 (UT-FAC-069〜077)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-69 | Md5StringHasher.hashString | E-05: L14-15 hashString関数 | ○ |
| C-70 | Md5StringHasher.addString | E-05: L27-28 addString関数 | ○ |
| C-71 | Md5StringHasher.addBytes | E-05: L19-25 addBytes関数 | ○ |
| C-72 | Md5StringHasher.addBool | E-05: L39-40 addBool関数 | ○ |
| C-73 | Md5StringHasher.addDateTime | E-05: L42 addDateTime関数 | ○ |
| C-74 | Md5Hasher.computeHash | E-05: L49-53 computeHash関数 | ○ |
| C-75 | Md5Hasher.addStrings | E-05: L70 addStrings関数 | ○ |
| C-76 | Md5Hasher.addIntegers | E-05: L88 addIntegers関数 | ○ |
| C-77 | Md5Hasher.toString | E-05: L92 toString関数 | ○ |

### DiagnosticResolutionHints.fs 関連 (UT-FAC-078〜087)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-78 | IsInEditDistanceProximity 閾値内 | E-06: L21-30 IsInEditDistanceProximity関数 | ○ |
| C-79 | IsInEditDistanceProximity 閾値超過 | E-06: L30 editDistance <= threshold | ○ |
| C-80 | DemangleOperator 演算子 | E-06: L33-37 DemangleOperator関数 | ○ |
| C-81 | DemangleOperator 通常名 | E-06: L37 else nm | ○ |
| C-82 | SuggestionBuffer.Add 追加 | E-06: L83-106 Add メソッド | ○ |
| C-83 | SuggestionBuffer.Add アンダースコア | E-06: L94 StartsWithOrdinal "_" チェック | ○ |
| C-84 | SuggestionBuffer.Add 同一提案 | E-06: L85-86 suggestion = idText チェック | ○ |
| C-85 | SuggestionBuffer.IsEmpty | E-06: L110 IsEmpty プロパティ | ○ |
| C-86 | SuggestionBuffer.GetEnumerator | E-06: L112-117 IEnumerable実装 | ○ |
| C-87 | SuggestionBuffer 短い識別子 | E-06: L64 minStringLengthForSuggestion | ○ |

### prim-lexing.fs 関連 (UT-FAC-088〜107)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-88 | StringText.Item | E-07: L80-81 Item プロパティ | ○ |
| C-89 | StringText.GetLineString | E-07: L91 GetLineString メソッド | ○ |
| C-90 | StringText.GetLineCount | E-07: L93 GetLineCount メソッド | ○ |
| C-91 | StringText.GetSubTextString | E-07: L95 GetSubTextString メソッド | ○ |
| C-92 | StringText.SubTextEquals true | E-07: L97-109 SubTextEquals メソッド | ○ |
| C-93 | StringText.SubTextEquals 範囲外 | E-07: L98-99 invalidArg | ○ |
| C-94 | StringText.ContentEquals | E-07: L113-116 ContentEquals メソッド | ○ |
| C-95 | StringText.GetSubTextFromRange | E-07: L121-154 GetSubTextFromRange | ○ |
| C-96 | StringText.GetSubTextFromRange 無効 | E-07: L137 invalidArg | ○ |
| C-97 | StringText.GetChecksum | E-07: L156-159 GetChecksum メソッド | ○ |
| C-98 | LexBuffer.FromSourceText | E-07: L384-405 FromSourceText静的メソッド | ○ |
| C-99 | LexBuffer.FromArray | E-07: L375-378 FromArray静的メソッド | ○ |
| C-100 | LexBuffer.SupportsFeature | E-07: L345 SupportsFeature メソッド | ○ |
| C-101 | LexBuffer.LexemeString | E-07: L324-325 LexemeString静的メソッド | ○ |
| C-102 | LexBuffer.RefillBuffer | E-07: L322 RefillBuffer メソッド | ○ |
| C-103 | LexBuffer.EnsureBufferSize | E-07: L335-339 EnsureBufferSize メソッド | ○ |
| C-104 | Position.NextLine | E-07: L225-226 NextLine プロパティ | ○ |
| C-105 | Position.EndOfToken | E-07: L228-229 EndOfToken メソッド | ○ |
| C-106 | Position.Column | E-07: L215 Column プロパティ | ○ |
| C-107 | UnicodeTables.Interpret | E-07: L511-513 Interpret メソッド | ○ |

### prim-parsing.fs 関連 (UT-FAC-108〜118)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-108 | IParseState.GetInput | E-08: L32 GetInput メソッド | ○ |
| C-109 | IParseState.InputRange | E-08: L21-22 InputRange メソッド | ○ |
| C-110 | IParseState.RaiseError | E-08: L37 RaiseError メソッド | ○ |
| C-111 | Stack.Push | E-08: L120-123 Push メソッド | ○ |
| C-112 | Stack.Pop | E-08: L114 Pop メソッド | ○ |
| C-113 | Stack.Peep | E-08: L115 Peep メソッド | ○ |
| C-114 | Stack.IsEmpty | E-08: L125 IsEmpty プロパティ | ○ |
| C-115 | Stack.Ensure | E-08: L105-111 Ensure メソッド | ○ |
| C-116 | AssocTable.Read | E-08: L176-205 Read メソッド | ○ |
| C-117 | AssocTable.ReadAll | E-08: L209-218 ReadAll メソッド | ○ |
| C-118 | Tables.Interpret | E-08: L580-581 Interpret拡張メソッド | ○ |

### TextLayoutRender.fs 関連 (UT-FAC-119〜123)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-119 | renderL | E-09: L101-131 renderL関数 | ○ |
| C-120 | showL | E-09: L199 showL関数 | ○ |
| C-121 | toArray | E-09: L209-212 toArray関数 | ○ |
| C-122 | spaces | E-09: L99 spaces関数 | ○ |
| C-123 | mkNav | E-09: L97 mkNav関数 | ○ |

### DiagnosticOptions.fs 関連 (UT-FAC-124〜126)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-124 | FSharpDiagnosticOptions.Default | E-10: L26-35 Default静的プロパティ | ○ |
| C-125 | FSharpDiagnosticOptions.CheckXmlDocs true | E-10: L37-38 CheckXmlDocs プロパティ | ○ |
| C-126 | FSharpDiagnosticOptions.CheckXmlDocs false | E-10: L38 WarnOffチェック | ○ |

### ReferenceResolver.fs 関連 (UT-FAC-127〜128)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-127 | LegacyResolvedFile.ToString | E-11: L27-28 ToString オーバーライド | ○ |
| C-128 | LegacyReferenceResolver.Impl | E-11: L61 Impl プロパティ | ○ |

### SimulatedMSBuildReferenceResolver.fs 関連 (UT-FAC-129〜134)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-129 | HighestInstalledNetFrameworkVersion | E-12: L84-94 HighestInstalledNetFrameworkVersion | ○ |
| C-130 | DotNetFrameworkReferenceAssembliesRootDirectory | E-12: L96-105 DotNetFrameworkReferenceAssembliesRootDirectory | ○ |
| C-131 | Resolve System | E-12: L107-263 Resolve メソッド | ○ |
| C-132 | Resolve FSharp.Core | E-12: L157-178 FSharp.Core特別処理 | ○ |
| C-133 | Resolve 存在しない参照 | E-12: L133-147 参照解決ロジック | ○ |
| C-134 | getResolver | E-12: L267 getResolver関数 | ○ |

### CompilerLocation.fs 関連 (UT-FAC-135〜144)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-135 | BinFolderOfDefaultFSharpCompiler | E-13: L70-97 BinFolderOfDefaultFSharpCompiler | ○ |
| C-136 | getFSharpCompilerLocation | E-13: L266-267 getFSharpCompilerLocation | ○ |
| C-137 | getDefaultFSharpCoreLocation | E-13: L270-271 getDefaultFSharpCoreLocation | ○ |
| C-138 | getDotnetHostPath | E-13: L305-358 getDotnetHostPath | ○ |
| C-139 | toolingCompatiblePaths | E-13: L147-153 toolingCompatiblePaths | ○ |
| C-140 | getTypeProviderAssembly | E-13: L173-235 getTypeProviderAssembly | ○ |
| C-141 | isRunningOnCoreClr | E-13: L45-48 isRunningOnCoreClr | ○ |
| C-142 | fileExists | E-13: L281-285 fileExists | ○ |
| C-143 | Option.ofString 非空 | E-13: L52-53 ofString関数 | ○ |
| C-144 | Option.ofString 空 | E-13: L53 None返却 | ○ |

## 4) 不足情報（Unknown / Missing）
- なし

全てのテストケースは、対応するソースコード内のクラス・関数・メソッドの実装に基づいて生成されています。

## 5) リスクフラグ（レビュー観点）
- **0: 低リスク** - 全てのテストケースがソースコードの実装に基づいており、根拠が明確

特記事項：
- Compiler-Facilitiesモジュールはコンパイラの基盤機能を提供するため、テストの品質が重要
- 特にLanguageVersion、DiagnosticsLogger、AsyncMemoizeは他のモジュールから広く使用される

## 6) レビュアーチェックリスト（最小）
- [ ] LanguageVersion のバージョン判定ロジックが最新のF#バージョン（10.0、11.0）に対応しているか
- [ ] DiagnosticsLogger のスレッドセーフ性に関するテストケースが適切か
- [ ] AsyncMemoize のキャンセル処理に関するテストケースが十分か
- [ ] LexBuffer のバッファ管理に関する境界値テストが適切か
- [ ] SimulatedMSBuildReferenceResolver のパス解決がクロスプラットフォームで動作するか
- [ ] FSharpEnvironment のdotnetホストパス検出がCI/CD環境で動作するか
