---
generated_at: 2026-03-01 12:00:00
metrics:
  claims_total: 55
  claims_with_evidence: 52
  claims_without_evidence: 3
confidence_derived: 0.95
---

# 根拠レポート：babel-plugin-transform-spread 単体テストケース一覧

## 本レポートについて

### 目的
本レポートは、生成された設計書・ドキュメントの信頼性を検証し、人間レビュアーが効率的にレビューできるようにすることを目的としています。

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

1. **根拠の有無確認**：各主張に対して、ソースコード・既存設計書・要件定義書などの根拠（Evidence）が存在するか
2. **根拠との整合性**：主張の内容が根拠と矛盾していないか
3. **網羅性**：参照すべき情報源を適切にカバーしているか

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

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

---

## 1) サマリー（まず見るところ）
- 総合信頼度（derived）：**0.95**
  - 根拠あり：52 / 55、根拠なし：3
- 優先レビュー（高）
  1. **UT-SPR-037 (TypeScript型キャスト処理)**：フィクスチャでの挙動確認は存在するが、詳細な内部動作の根拠が限定的
  2. **UT-SPR-038 (Flow型キャスト処理)**：フィクスチャでの挙動確認は存在するが、詳細な内部動作の根拠が限定的
  3. **UT-SPR-055 (メモ化最適化)**：ソースコード上の条件分岐から推測、明示的なテストケースは未確認

## 2) 参照した情報（Evidence一覧）
> ここに「実在するもの」だけ列挙。抽出フェーズで付けたIDをそのまま出す。

- E-01: `packages/babel-plugin-transform-spread/src/index.ts` - メインソースコード
- E-02: `packages/babel-plugin-transform-spread/test/fixtures/spread/single/input.js` - 単一スプレッドテスト入力
- E-03: `packages/babel-plugin-transform-spread/test/fixtures/spread/single/output.js` - 単一スプレッドテスト出力
- E-04: `packages/babel-plugin-transform-spread/test/fixtures/spread/arguments-array/input.js` - arguments配列テスト入力
- E-05: `packages/babel-plugin-transform-spread/test/fixtures/spread/arguments-array/output.js` - arguments配列テスト出力
- E-06: `packages/babel-plugin-transform-spread/test/fixtures/spread/new-expression/input.js` - new式テスト入力
- E-07: `packages/babel-plugin-transform-spread/test/fixtures/spread/new-expression/output.js` - new式テスト出力
- E-08: `packages/babel-plugin-transform-spread/test/fixtures/spread/contexted-method-call-single-arg/input.js` - コンテキスト付きメソッド呼び出しテスト入力
- E-09: `packages/babel-plugin-transform-spread/test/fixtures/spread/contexted-method-call-single-arg/output.js` - コンテキスト付きメソッド呼び出しテスト出力
- E-10: `packages/babel-plugin-transform-spread/test/fixtures/spread/array-literal-with-hole/input.js` - ホール付き配列テスト入力
- E-11: `packages/babel-plugin-transform-spread/test/fixtures/spread/array-literal-with-hole/output.js` - ホール付き配列テスト出力
- E-12: `packages/babel-plugin-transform-spread/test/fixtures/spread/super-no-classes-plugin/input.js` - super()エラーテスト入力
- E-13: `packages/babel-plugin-transform-spread/test/fixtures/spread/non-iterable/exec.js` - 非イテラブルテスト
- E-14: `packages/babel-plugin-transform-spread/test/fixtures/assumption-iterableIsArray/function-call/input.js` - iterableIsArray assumptionテスト入力
- E-15: `packages/babel-plugin-transform-spread/test/fixtures/assumption-iterableIsArray/function-call/output.js` - iterableIsArray assumptionテスト出力
- E-16: `packages/babel-plugin-transform-spread/test/fixtures/allowArrayLike/simple/input.js` - allowArrayLikeオプションテスト入力
- E-17: `packages/babel-plugin-transform-spread/test/fixtures/allowArrayLike/simple/output.js` - allowArrayLikeオプションテスト出力
- E-18: `packages/babel-plugin-transform-spread/test/fixtures/call-context/ts-type-cast/input.ts` - TypeScript型キャストテスト入力
- E-19: `packages/babel-plugin-transform-spread/test/fixtures/call-context/ts-type-cast/output.js` - TypeScript型キャストテスト出力
- E-20: `packages/babel-plugin-transform-spread/test/fixtures/call-context/flow-type-cast/input.ts` - Flow型キャストテスト入力
- E-21: `packages/babel-plugin-transform-spread/test/fixtures/call-context/flow-type-cast/output.js` - Flow型キャストテスト出力
- E-22: `packages/babel-plugin-transform-spread/test/fixtures/spread/contexted-method-call-super-single-arg/input.js` - superメソッドテスト入力
- E-23: `packages/babel-plugin-transform-spread/test/fixtures/spread/contexted-method-call-super-single-arg/output.js` - superメソッドテスト出力
- E-24: `packages/babel-plugin-transform-spread/package.json` - パッケージ定義

## 3) Claims と根拠の対応（レビューの主戦場）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-01 (UT-SPR-001) | iterableIsArrayがtrueで通常の識別子の場合、引数をそのまま返す | E-01 (line 24-28), E-14, E-15 | ○ |
| C-02 (UT-SPR-002) | iterableIsArrayがtrueでもargumentsの場合はArray.prototype.slice.callを使用 | E-01 (line 26), E-04, E-05 | ○ |
| C-03 (UT-SPR-003) | 定数バインディングでArray型の場合、識別子をそのまま返す | E-01 (line 32-37) | ○ |
| C-04 (UT-SPR-004) | ArrayExpressionの場合、ノードをそのまま返す | E-01 (line 39-41) | ○ |
| C-05 (UT-SPR-005) | argumentsの場合、Array.prototype.slice.callを使用 | E-01 (line 43-46), E-04, E-05 | ○ |
| C-06 (UT-SPR-006) | 通常のイテラブルの場合、toConsumableArrayヘルパーを使用 | E-01 (line 49-57), E-02, E-03 | ○ |
| C-07 (UT-SPR-007) | arrayLikeIsIterableがtrueの場合、maybeArrayLikeヘルパーを使用 | E-01 (line 52-55), E-16, E-17 | ○ |
| C-08 (UT-SPR-008) | 配列にnull要素が含まれる場合、trueを返す | E-01 (line 61-63) | ○ |
| C-09 (UT-SPR-009) | 配列にnull要素が含まれない場合、falseを返す | E-01 (line 61-63) | ○ |
| C-10 (UT-SPR-010) | 空配列の場合、falseを返す | E-01 (line 61-63) | ○ |
| C-11 (UT-SPR-011) | SpreadElementが含まれる場合、trueを返す | E-01 (line 65-72) | ○ |
| C-12 (UT-SPR-012) | SpreadElementが含まれない場合、falseを返す | E-01 (line 65-72) | ○ |
| C-13 (UT-SPR-013) | 空配列の場合、falseを返す | E-01 (line 65-72) | ○ |
| C-14 (UT-SPR-014) | null要素を含む配列の場合でも正しく判定 | E-01 (line 65-72) | ○ |
| C-15 (UT-SPR-015) | プロパティ配列が空でない場合、arrayExpressionを追加 | E-01 (line 74-78) | ○ |
| C-16 (UT-SPR-016) | プロパティ配列が空の場合、何もせず空配列を返す | E-01 (line 75) | ○ |
| C-17 (UT-SPR-017) | SpreadElementとリテラルの混合配列を正しく変換 | E-01 (line 80-108) | ○ |
| C-18 (UT-SPR-018) | SpreadElementのみの配列を正しく変換 | E-01 (line 80-108) | ○ |
| C-19 (UT-SPR-019) | ホールを含むArrayExpressionスプレッドの場合、arrayLikeToArrayヘルパーを使用 | E-01 (line 93-97), E-06, E-07 | ○ |
| C-20 (UT-SPR-020) | 空の配列を渡した場合、空の結果を返す | E-01 (line 80-108) | ○ |
| C-21 (UT-SPR-021) | スプレッド要素を含む配列リテラルをconcat形式に変換 | E-01 (line 114-152), E-02, E-03 | ○ |
| C-22 (UT-SPR-022) | 配列リテラルとスプレッド要素の混合を正しく変換 | E-01 (line 114-152), E-10, E-11 | ○ |
| C-23 (UT-SPR-023) | 先頭がスプレッド要素の場合、空配列から開始 | E-01 (line 140-141) | ○ |
| C-24 (UT-SPR-024) | スプレッド要素がない場合、変換をスキップ | E-01 (line 117) | ○ |
| C-25 (UT-SPR-025) | 複数のスプレッド要素を正しく処理 | E-01 (line 114-152) | ○ |
| C-26 (UT-SPR-026) | ホールを含む配列リテラルを正しく処理 | E-01 (line 114-152), E-10, E-11 | ○ |
| C-27 (UT-SPR-027) | 単一スプレッドで変換が発生した場合、replaceWithで置換 | E-01 (line 126-131) | ○ |
| C-28 (UT-SPR-028) | 関数呼び出しのスプレッド引数をapply形式に変換 | E-01 (line 153-222) | ○ |
| C-29 (UT-SPR-029) | メソッド呼び出しのスプレッド引数でthisコンテキストを保持 | E-01 (line 197-210), E-08, E-09 | ○ |
| C-30 (UT-SPR-030) | ネストしたメソッド呼び出しでコンテキストを正しく処理 | E-01 (line 197-210), E-08, E-09 | ○ |
| C-31 (UT-SPR-031) | 引数にargumentsのみの場合、そのまま使用 | E-01 (line 172-178) | ○ |
| C-32 (UT-SPR-032) | スプレッド引数がない場合、変換をスキップ | E-01 (line 157) | ○ |
| C-33 (UT-SPR-033) | 複数のスプレッド引数を正しく処理 | E-01 (line 184-190) | ○ |
| C-34 (UT-SPR-034) | 通常引数とスプレッド引数の混合を処理 | E-01 (line 179-193) | ○ |
| C-35 (UT-SPR-035) | super()でのスプレッド使用時にエラーをスロー | E-01 (line 161-167), E-12 | ○ |
| C-36 (UT-SPR-036) | 計算プロパティメソッド呼び出しでコンテキストを保持 | E-01 (line 197-210) | ○ |
| C-37 (UT-SPR-037) | TypeScriptの型キャストを透過的に処理 | E-18, E-19 | △ |
| C-38 (UT-SPR-038) | Flowの型キャストを透過的に処理 | E-20, E-21 | △ |
| C-39 (UT-SPR-039) | new式のスプレッド引数をconstructヘルパーで変換 | E-01 (line 224-248), E-06, E-07 | ○ |
| C-40 (UT-SPR-040) | new式で複数のスプレッド引数を正しく処理 | E-01 (line 233-240) | ○ |
| C-41 (UT-SPR-041) | new式で通常引数とスプレッド引数の混合を処理 | E-01 (line 228-240), E-06, E-07 | ○ |
| C-42 (UT-SPR-042) | スプレッド引数がない場合、変換をスキップ | E-01 (line 226) | ○ |
| C-43 (UT-SPR-043) | ホールを含む配列スプレッドを正しく処理 | E-01 (line 93-97), E-06, E-07 | ○ |
| C-44 (UT-SPR-044) | looseオプションがtrueの場合、iterableIsArrayがtrueになる | E-01 (line 16) | ○ |
| C-45 (UT-SPR-045) | allowArrayLikeオプションがtrueの場合、arrayLikeIsIterableがtrueになる | E-01 (line 17-18), E-16, E-17 | ○ |
| C-46 (UT-SPR-046) | assumptionでiterableIsArrayが設定されている場合、それを使用 | E-01 (line 16), E-14, E-15 | ○ |
| C-47 (UT-SPR-047) | assumptionでarrayLikeIsIterableが設定されている場合、それを使用 | E-01 (line 17-18) | ○ |
| C-48 (UT-SPR-048) | プラグイン名が'transform-spread'である | E-01 (line 111), E-24 | ○ |
| C-49 (UT-SPR-049) | super.method()でのスプレッド使用時にthisをコンテキストとする | E-01 (line 217-218), E-22, E-23 | ○ |
| C-50 (UT-SPR-050) | 単一のスプレッド要素で元の引数がそのまま返される場合の処理 | E-01 (line 126-131) | ○ |
| C-51 (UT-SPR-051) | バインディングが存在しない識別子の場合、toConsumableArrayを使用 | E-01 (line 32-37, 49-57) | ○ |
| C-52 (UT-SPR-052) | バインディングがconstantでない場合、toConsumableArrayを使用 | E-01 (line 34) | ○ |
| C-53 (UT-SPR-053) | 括弧で囲まれた式を透過的に処理 | E-01 (line 158-160) | ○ |
| C-54 (UT-SPR-054) | 連続するリテラル要素を1つのarrayExpressionにまとめる | E-01 (line 80-108) | ○ |
| C-55 (UT-SPR-055) | 単純なオブジェクトのメソッド呼び出しでメモ化不要な場合、cloneNodeを使用 | E-01 (line 207-208) | △ |

## 4) 不足情報（Unknown / Missing）
- **UT-SPR-037, UT-SPR-038 (型キャスト処理)**：`@babel/helper-skip-transparent-expression-wrappers` の内部動作に依存しており、本プラグインのソースコードだけでは完全な挙動の検証が困難
  - 候補：`@babel/helper-skip-transparent-expression-wrappers` のソースコード / TypeScript/Flowパーサーの仕様ドキュメント
- **UT-SPR-055 (メモ化最適化)**：`scope.maybeGenerateMemoised` の戻り値がundefinedになる条件の詳細
  - 候補：`@babel/traverse` のスコープ管理ドキュメント / 関連するヘルパー関数のテスト

## 5) リスクフラグ（レビュー観点）
- **0: 低リスク** - 全体的に高い信頼度（95%）で、ソースコードと既存テストフィクスチャの両方で裏付けが取れている
- **1: 中リスク** - 型キャスト処理（UT-SPR-037, UT-SPR-038）は外部ヘルパーに依存しており、そのヘルパーの変更により挙動が変わる可能性がある
- **0: 低リスク** - エラーハンドリング（UT-SPR-035）は明示的なテストフィクスチャで確認済み

## 6) レビュアーチェックリスト（最小）
- [ ] UT-SPR-037, UT-SPR-038: TypeScript/Flow型キャストの透過処理が実際の挙動と一致しているか、テストフィクスチャを実行して確認
- [ ] UT-SPR-055: メモ化最適化の条件（単純な識別子 vs 複雑な式）が正しく記述されているか確認
- [ ] 全体: テストケースの優先度（高/中/低）がビジネス上の重要度と整合しているか確認
- [ ] 境界値テスト: 空配列やnull要素のハンドリングが網羅的か確認
- [ ] 異常系: super()エラー以外に想定すべるエラーケースがないか確認
