---
generated_at: 2026-02-17 10:30:00
metrics:
  claims_total: 208
  claims_with_evidence: 204
  claims_without_evidence: 4
confidence_derived: 0.98
---

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

## 本レポートについて

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

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

1. **根拠の有無確認**：各テストケースに対して、ソースコード内の関数・プロシージャ定義が存在するか
2. **根拠との整合性**：テストケースの内容がソースコードの仕様と矛盾していないか
3. **網羅性**：主要なpublic関数・プロシージャを適切にカバーしているか

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

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

---

## 1) サマリー（まず見るところ）
- 総合信頼度（derived）：**0.98**
  - 根拠あり：204 / 208、根拠なし：4
- 優先レビュー（高）
  1. **UT-COR-093 (getImpl)**: シンボル解決の実装詳細を確認
  2. **UT-COR-094 (symKind)**: マジック関数のため実装詳細不明
  3. **UT-COR-207 (performCodeReload)**: ホットリロード機能の実際の動作確認

## 2) 参照した情報（Evidence一覧）
> ここに「実在するもの」だけ列挙。

- E-01: `lib/core/macros.nim` - NimNodeおよびマクロ関連のAPI定義
- E-02: `lib/core/typeinfo.nim` - ランタイム型情報（RTTI）のAPI定義
- E-03: `lib/core/macrocache.nim` - コンパイル時キャッシュのAPI定義
- E-04: `lib/core/locks.nim` - ロック・条件変数のAPI定義
- E-05: `lib/core/rlocks.nim` - 再入可能ロックのAPI定義
- E-06: `lib/core/hotcodereloading.nim` - ホットコードリロードのAPI定義

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

### macros.nim (UT-COR-001 〜 UT-COR-099)

| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-01〜C-05 | NimNode比較・len | E-01: lines 165-180 | ○ |
| C-06〜C-11 | NimNode配列アクセス・追加 | E-01: lines 183-231 | ○ |
| C-12 | del関数 | E-01: line 233 | ○ |
| C-13〜C-16 | kind/intVal/floatVal/strVal | E-01: lines 236-249 | ○ |
| C-17〜C-19 | newNimNode/copyNimNode/copyNimTree | E-01: lines 396-429 | ○ |
| C-20〜C-22 | error/warning/hint | E-01: lines 436-445 | ○ |
| C-23〜C-27 | newStrLitNode/newIntLitNode/newFloatLitNode/newIdentNode/ident | E-01: lines 447-481 | ○ |
| C-28〜C-29 | bindSym/genSym | E-01: lines 495-512 | ○ |
| C-30〜C-31 | toStrLit/lineInfoObj | E-01: lines 519-567 | ○ |
| C-32〜C-35 | parseExpr/parseStmt | E-01: lines 579-593 | ○ |
| C-36〜C-40 | expectKind/expectMinLen/expectLen | E-01: lines 687-710 | ○ |
| C-41〜C-42 | newTree/newCall | E-01: lines 712-743 | ○ |
| C-43〜C-50 | newLit各種 | E-01: lines 745-893 | ○ |
| C-51 | nestList空リストエラー | E-01: lines 895-911 | ○ |
| C-52〜C-53 | eqIdent | E-01: lines 913-932 | ○ |
| C-54〜C-56 | treeRepr/lispRepr/astGenRepr | E-01: lines 985-1047 | ○ |
| C-57〜C-67 | newEmptyNode〜last | E-01: lines 1122-1210 | ○ |
| C-68〜C-72 | newProc/newIfStmt/newEnum | E-01: lines 1227-1302 | ○ |
| C-73〜C-78 | copyChildrenTo/name/params/pragma/body/basename | E-01: lines 1304-1403 | ○ |
| C-79〜C-85 | $/items/pairs/insert/postfix/prefix/infix | E-01: lines 1405-1496 | ○ |
| C-86〜C-90 | expectIdent/hasArgOfName/addIdentIfAbsent/boolVal | E-01: lines 1502-1532 | ○ |
| C-91〜C-97 | getType/typeKind/getImpl/symKind/getSize/getAlign/isExported | E-01: lines 298-311, 1763-1781 | ○ |
| C-98〜C-99 | hasCustomPragma/getCustomPragmaVal | E-01: lines 1660-1716 | ○ |

### typeinfo.nim (UT-COR-100 〜 UT-COR-159)

| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-100〜C-104 | toAny/kind/size/baseTypeKind/baseTypeSize | E-02: lines 162-188 | ○ |
| C-105〜C-109 | invokeNew/invokeNewSeq/extendSeq | E-02: lines 190-236 | ○ |
| C-110〜C-116 | 配列・seq操作 []、[]=、len | E-02: lines 241-310 | ○ |
| C-117〜C-121 | base/isNil/getPointer/setPointer | E-02: lines 313-343 | ○ |
| C-122〜C-125 | fields/フィールドアクセス | E-02: lines 359-425 | ○ |
| C-126〜C-143 | getInt〜skipRange | E-02: lines 439-580 | ○ |
| C-144〜C-146 | getEnumOrdinal/getEnumField | E-02: lines 582-618 | ○ |
| C-147〜C-155 | getFloat〜getCString | E-02: lines 620-670 | ○ |
| C-156〜C-157 | assign | E-02: lines 672-676 | ○ |
| C-158〜C-159 | elements/inclSetElement | E-02: lines 678-722 | ○ |

### macrocache.nim (UT-COR-160 〜 UT-COR-179)

| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-160〜C-167 | CacheSeq操作 | E-03: lines 81-160 | ○ |
| C-168〜C-175 | CacheTable操作 | E-03: lines 162-249 | ○ |
| C-176〜C-179 | CacheCounter操作 | E-03: lines 60-79 | ○ |

### locks.nim (UT-COR-180 〜 UT-COR-193)

| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-180〜C-186 | Lock操作 | E-04: lines 35-88 | ○ |
| C-187 | withLock例外時の動作 | E-04: lines 80-88 | ○ |
| C-188〜C-192 | Cond操作 | E-04: lines 59-78 | ○ |
| C-193 | Lock文字列変換 | E-04: lines 31-33 | ○ |

### rlocks.nim (UT-COR-194 〜 UT-COR-201)

| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-194〜C-199 | RLock操作 | E-05: lines 24-48 | ○ |
| C-200〜C-201 | withRLock | E-05: lines 50-57 | ○ |

### hotcodereloading.nim (UT-COR-202 〜 UT-COR-208)

| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-202〜C-203 | beforeCodeReload/afterCodeReload | E-06: lines 16-20 | ○ |
| C-204〜C-205 | hasModuleChanged | E-06: lines 22-25 | ○ |
| C-206 | hasAnyModuleChanged | E-06: lines 27 | ○ |
| C-207 | performCodeReload | E-06: lines 29-35 | △ |
| C-208 | performCodeReload無効時 | E-06: lines 36-41 | ○ |

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

- **マジック関数の実装詳細**: `{.magic: "...".}` プラグマで定義された関数（getType, typeKind, symKind等）はコンパイラ内部で実装されており、ソースコードからは完全な動作を確認できない
  - 候補: compiler/vmops.nim / compiler/vm.nim / compiler/semmagic.nim
- **スレッド同期テスト**: locks.nim, rlocks.nimのマルチスレッドでの動作は実際の並行テストが必要
  - 候補: tests/threads/
- **ホットコードリロードの実際の動作**: hotcodereloadingの機能は特殊な実行環境が必要
  - 候補: 実機での動作確認

## 5) リスクフラグ（レビュー観点）

| リスクレベル | 項目 | 理由 |
|---|---|---|
| 1 (中) | マジック関数群 | コンパイラ内部実装のため仕様変更の影響を受けやすい |
| 1 (中) | スレッド同期 | 並行処理のテストは環境依存性が高い |
| 0 (低) | リテラル生成系 | 単純な処理で仕様が明確 |
| 0 (低) | AST操作系 | ドキュメントとソースが整合 |

## 6) レビュアーチェックリスト（最小）

- [ ] macros.nim: nnkXxx種類の網羅性を確認（特にnnkError, nnkModuleRef等の新しいノード種類）
- [ ] typeinfo.nim: gcDestructors有効時と無効時の両方のパスをカバーしているか確認
- [ ] macrocache.nim: モジュール間でのキャッシュ共有が正しくテストされるか確認
- [ ] locks.nim: デッドロック検出のテストケースが必要か検討
- [ ] rlocks.nim: 再入回数の上限に関するテストケースが必要か検討
- [ ] hotcodereloading.nim: JS環境での動作（discard）が正しくテストされるか確認
- [ ] 全般: 境界値テスト（空配列、最大値等）の網羅性を確認
