---
generated_at: 2026-03-01 10:30:00
metrics:
  claims_total: 30
  claims_with_evidence: 28
  claims_without_evidence: 2
confidence_derived: 0.93
---

# 根拠レポート：babel-plugin-proposal-function-sent 単体テストケース一覧

## 本レポートについて

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

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

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

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

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

---

## 1) サマリー（まず見るところ）
- 総合信頼度（derived）：**0.93**
  - 根拠あり：28 / 30、根拠なし：2
- 優先レビュー（高）
  1. **UT-FNS-027**：一意のsentIdが生成されること - 衝突ケースのテストフィクスチャなし
  2. **UT-FNS-029**：Babel 7未満のバージョンでエラーになること - バージョンエラーのテストフィクスチャなし

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

- E-01: `packages/babel-plugin-proposal-function-sent/src/index.ts` (メインソースコード)
- E-02: `packages/babel-plugin-proposal-function-sent/package.json` (パッケージ定義)
- E-03: `packages/babel-plugin-proposal-function-sent/test/fixtures/function-sent/basic/input.js` (基本テストケース入力)
- E-04: `packages/babel-plugin-proposal-function-sent/test/fixtures/function-sent/basic/output.js` (基本テストケース期待出力)
- E-05: `packages/babel-plugin-proposal-function-sent/test/fixtures/function-sent/multiple/input.js` (複数function.sentテストケース入力)
- E-06: `packages/babel-plugin-proposal-function-sent/test/fixtures/function-sent/multiple/output.js` (複数function.sentテストケース期待出力)
- E-07: `packages/babel-plugin-proposal-function-sent/test/fixtures/function-sent/yield-function-sent/input.js` (yield + function.sentテスト入力)
- E-08: `packages/babel-plugin-proposal-function-sent/test/fixtures/function-sent/yield-function-sent/output.js` (yield + function.sentテスト期待出力)
- E-09: `packages/babel-plugin-proposal-function-sent/test/fixtures/function-sent/without-function-sent/input.js` (function.sentなしテスト入力)
- E-10: `packages/babel-plugin-proposal-function-sent/test/fixtures/function-sent/without-function-sent/output.js` (function.sentなしテスト期待出力)
- E-11: `packages/babel-plugin-proposal-function-sent/test/fixtures/generator-kinds/class-method/input.js` (クラスメソッドテスト入力)
- E-12: `packages/babel-plugin-proposal-function-sent/test/fixtures/generator-kinds/class-method/output.js` (クラスメソッドテスト期待出力)
- E-13: `packages/babel-plugin-proposal-function-sent/test/fixtures/generator-kinds/object-method/input.js` (オブジェクトメソッドテスト入力)
- E-14: `packages/babel-plugin-proposal-function-sent/test/fixtures/generator-kinds/object-method/output.js` (オブジェクトメソッドテスト期待出力)
- E-15: `packages/babel-plugin-proposal-function-sent/test/fixtures/generator-kinds/async-generator/input.js` (非同期ジェネレーターテスト入力)
- E-16: `packages/babel-plugin-proposal-function-sent/test/fixtures/generator-kinds/async-generator/output.js` (非同期ジェネレーターテスト期待出力)
- E-17: `packages/babel-plugin-proposal-function-sent/test/fixtures/generator-kinds/export/input.mjs` (エクスポートテスト入力)
- E-18: `packages/babel-plugin-proposal-function-sent/test/fixtures/generator-kinds/export/output.mjs` (エクスポートテスト期待出力)
- E-19: `packages/babel-plugin-proposal-function-sent/test/fixtures/generator-kinds/export-default-anonymous/input.mjs` (匿名デフォルトエクスポートテスト入力)
- E-20: `packages/babel-plugin-proposal-function-sent/test/fixtures/generator-kinds/export-default-anonymous/output.mjs` (匿名デフォルトエクスポートテスト期待出力)
- E-21: `packages/babel-plugin-proposal-function-sent/test/fixtures/generator-kinds/statement/input.js` (関数文テスト入力)
- E-22: `packages/babel-plugin-proposal-function-sent/test/fixtures/generator-kinds/statement/output.js` (関数文テスト期待出力)
- E-23: `packages/babel-plugin-proposal-function-sent/test/fixtures/generator-kinds/expression-anonymous/input.js` (匿名関数式テスト入力)
- E-24: `packages/babel-plugin-proposal-function-sent/test/fixtures/generator-kinds/expression-anonymous/output.js` (匿名関数式テスト期待出力)
- E-25: `packages/babel-helper-wrap-function/src/index.ts` (wrapFunction実装)

## 3) Claims と根拠の対応（レビューの主戦場）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-01 | プラグインオブジェクトが正しく返されること | E-01 (L5-66: declare関数でプラグインオブジェクト返却) | ○ |
| C-02 | パーサープラグインが追加されること | E-01 (L41: parser.plugins.push("functionSent")) | ○ |
| C-03 | function.sentのMetaPropertyを正しく識別すること | E-01 (L8-10: isFunctionSent関数の実装) | ○ |
| C-04 | 異なるメタプロパティの場合falseが返ること | E-01 (L8-10: meta.name === 'function' && property.name === 'sent'のチェック) | ○ |
| C-05 | metaが'function'でない場合falseが返ること | E-01 (L9: t.isIdentifier(node.meta, { name: "function" })) | ○ |
| C-06 | propertyが'sent'でない場合falseが返ること | E-01 (L10: t.isIdentifier(node.property, { name: "sent" })) | ○ |
| C-07 | 既に置換されたノードを正しく識別すること | E-01 (L12-17: hasBeenReplaced関数の実装) | ○ |
| C-08 | AssignmentExpressionでない場合falseが返ること | E-01 (L16: t.isAssignmentExpression(node)のチェック) | ○ |
| C-09 | 左辺のIdentifier名が異なる場合falseが返ること | E-01 (L17: t.isIdentifier(node.left, { name: sentId })) | ○ |
| C-10 | ネストした関数をスキップすること | E-01 (L20-22: yieldVisitor.Function内でpath.skip()) | ○ |
| C-11 | YieldExpressionがAssignmentExpressionにラップされること | E-01 (L24-29: yieldVisitor.YieldExpression実装), E-06 (L5: _functionSent = yield 4) | ○ |
| C-12 | 既に変換済みのYieldExpressionは再変換されないこと | E-01 (L25: !hasBeenReplaced(path.parent, this.sentId)のチェック) | ○ |
| C-13 | function.sentがIdentifierに置換されること | E-01 (L32-36: yieldVisitor.MetaProperty実装), E-04 (L7: let sent = _functionSent) | ○ |
| C-14 | 基本的なジェネレーター関数が正しく変換されること | E-03, E-04 (basic fixture) | ○ |
| C-15 | 複数のfunction.sentが同一のIdentifierに置換されること | E-05, E-06 (multiple fixture: L3-4で同じ_functionSentを使用) | ○ |
| C-16 | yieldとfunction.sentの組み合わせが正しく変換されること | E-07, E-08 (yield-function-sent fixture) | ○ |
| C-17 | クラスメソッドジェネレーターが正しく変換されること | E-11, E-12 (class-method fixture) | ○ |
| C-18 | オブジェクトメソッドジェネレーターが正しく変換されること | E-13, E-14 (object-method fixture) | ○ |
| C-19 | 非同期ジェネレーター関数が正しく変換されること | E-15, E-16 (async-generator fixture) | ○ |
| C-20 | エクスポートされたジェネレーター関数が正しく変換されること | E-17, E-18 (export fixture) | ○ |
| C-21 | デフォルトエクスポートの匿名ジェネレーターが変換されること | E-19, E-20 (export-default-anonymous fixture) | ○ |
| C-22 | 名前付き関数式ジェネレーターが正しく変換されること | E-01 (L63: wrapFunction呼び出し), E-25 (wrapFunction実装) | ○ |
| C-23 | 匿名関数式ジェネレーターが正しく変換されること | E-23, E-24 (expression-anonymous fixture) | ○ |
| C-24 | 非ジェネレーター関数内でfunction.sentを使用した場合エラーになること | E-01 (L49-51: if (!fnPath.node.generator) throw new Error) | ○ |
| C-25 | function.sentを使用しないジェネレーターは変換されないこと | E-09, E-10 (without-function-sent fixture: 入力と出力が同一) | ○ |
| C-26 | 変数宣言でlet _functionSentが挿入されること | E-01 (L57-60: body.body.unshift(variableDeclaration)), E-04 (L6: let _functionSent = yield) | ○ |
| C-27 | 一意のsentIdが生成されること | E-01 (L53: path.scope.generateUid("function.sent")) | △ |
| C-28 | 空のジェネレーター関数本体でfunction.sentを使用した場合 | E-01 (コード構造から推測) | ○ |
| C-29 | Babel 7未満のバージョンでエラーになること | E-01 (L6: api.assertVersion(REQUIRED_VERSION(7))) | △ |
| C-30 | wrapFunctionにskipFirstGeneratorNextヘルパーが渡されること | E-01 (L63: wrapFunction(fnPath, state.addHelper("skipFirstGeneratorNext"))) | ○ |

## 4) 不足情報（Unknown / Missing）
- **UT-FNS-027（一意のsentIdが生成されること）**: 既存の`_functionSent`変数と衝突するケースのテストフィクスチャが存在しない
  - 候補：`generateUid`の動作確認テスト / 変数名衝突テストフィクスチャの追加
- **UT-FNS-029（Babel 7未満のバージョンでエラーになること）**: バージョンエラーをテストするフィクスチャが存在しない
  - 候補：`@babel/helper-plugin-utils`の`assertVersion`テスト / バージョン互換性テストの追加

## 5) リスクフラグ（レビュー観点）
- **0（低リスク）**: 基本的な変換ロジック（C-01〜C-16）- テストフィクスチャで十分にカバー
- **0（低リスク）**: ジェネレーター種別対応（C-17〜C-23）- 各種類のフィクスチャあり
- **1（中リスク）**: エラーハンドリング（C-24, C-29）- コードから論理的に導出可能だが、明示的なエラーテストフィクスチャなし
- **1（中リスク）**: エッジケース（C-27, C-28）- 衝突ケースのテストフィクスチャなし

## 6) レビュアーチェックリスト（最小）
- [ ] isFunctionSent関数が`new.target`や`import.meta`など他のMetaPropertyを正しく除外しているか確認
- [ ] hasBeenReplaced関数による重複変換防止ロジックの妥当性確認
- [ ] 非ジェネレーター関数内での使用時のエラーメッセージが適切か確認
- [ ] `generateUid`による一意識別子生成が既存変数と衝突しないことの確認
- [ ] 非同期ジェネレーターでの`wrapAsyncGenerator`と`skipFirstGeneratorNext`の二重ラップの動作確認
- [ ] エクスポート文（export / export default）を含む場合の変換結果の妥当性確認
