Commit Graph

7 Commits

Author SHA1 Message Date
dd314a0a72 feat(hako_check): Improve usability with debug output filtering
Phase 1 実装: デバッグ出力ノイズを除去して、実際の lint 結果を見やすく

改善内容:
1. デバッグ出力の自動フィルタリング (デフォルト有効)
   - [DEBUG/...] 系の出力を全て除去
   - [ControlForm::...] 制御フロー出力を除去
   - [BUILDER] MIR ビルダー出力を除去
   - [rule/exec] ルール実行出力を除去

2. 環境変数サポート追加
   - HAKO_CHECK_DEBUG=1 で詳細デバッグ出力有効化
   - HAKO_CHECK_VERBOSE=1 で詳細モード有効化(将来実装予定)

3. 実際の エラーメッセージが明確に見える
   - 修正前: 大量の [DEBUG] 出力に埋もれて見えない
   - 修正後: [ERROR] メッセージが直接見える

実行例:
```bash
# デフォルト: クリーンな出力
./tools/hako_check.sh file.hako
[ERROR]  MIR compilation error: Undefined variable: void
[lint/summary] failures: 1

# デバッグモード: 詳細情報表示
HAKO_CHECK_DEBUG=1 ./tools/hako_check.sh file.hako
[DEBUG/build_block] Processing 3 statements
[ControlForm::Loop] entry=BasicBlockId(2) ...
```

次のステップ (Phase 2, 3):
- Rust 側のデバッグ出力環境変数制御化
- エラーメッセージの構造化とヒント表示

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-04 19:15:37 +09:00
c86b6e3baa fix(hako_check): Restore functionality with void-safety guards and option parsing
重大バグを2つ修正して hako_check をセルフホスティングソースで使えるように:

1. cli.hako の VoidBox.get() エラー修正 (最優先)
   - HakoAnalysisBuilderBox.build_from_source_flags() が void を返す可能性に対応
   - フォールバック処理を追加: null/void チェック → Minimal MapBox 生成
   - 134行の null チェックが不十分だった

2. hako_check.sh の引数処理修正 (中優先)
   - --dead-code, --rules, --no-ast, --debug オプションをサポート
   - 以前は --format のみ処理、他はそのまま sed に渡されていた
   - while ループで全オプションを正しくパース、EXTRA_ARGS に蓄積

3. cli.hako への EXTRA_ARGS 伝播
   - --format "$FORMAT" $EXTRA_ARGS を引数として cli.hako に渡す

結果:
 hako_check がセルフホスティングソースで実行可能に
 [lint/summary] failures: 1 が出力される(正常動作)
 --dead-code オプションが実装済みだが、スクリプトが反映していなかった

次のステップ: デバッグ出力ノイズ削減(デフォルトで [DEBUG/build_block] を非表示)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-04 19:11:20 +09:00
e948bcb4f8 feat(hako_check): Phase 154-170 hako_check dead code detection & JSON library design
🎉 Phase 154-170 完了!hako_check に死んだコード検出を統合

📋 Phase 154: MIR CFG 統合 & HC020 設計
- DeadBlockAnalyzerBox(570行) - 箱化モジュール化
- ブロックレベルの unreachable 検出設計
- テストケース4本、スモークテスト

🔧 Phase 155: MIR CFG データブリッジ(MVP)
- src/runner/mir_json_emit.rs: MIR JSON に CFG を追加
- tools/hako_check/analysis_consumer.hako: 空のCFG構造体追加
- Phase 156 の準備完成

🌉 Phase 156: hako_check MIR パイプライン統合
- hako_check.sh: MIR JSON 生成ステップ追加
- cli.hako: --mir-json-content 引数処理
- analysis_consumer.hako: ~320行の手動JSON パーサー実装
- HC020 が実際にブロックを検出!

📐 Phase 170: .hako JSON ライブラリ設計
- 既存 JSON 利用箇所インベントリ(Program/MIR/CFG)
- Phase 156 JSON パーサの詳細分析(289行)
- JsonParserBox API 草案確定
- 利用予定マッピング(96%削減見込み)

🏗️ 設計原則:
- 箱化モジュール化パターン(Phase 153継承)
- Rust 層変更最小化(.hako + シェルスクリプト優先)
- セルフホスティング対応設計

📊 期待効果:
- hako_check JSON パーサ: 289行 → ~10行(96%削減)
- JsonParserBox 共通ライブラリ化(Phase 171+)
- hako_check/selfhost/デバッグツール で共通利用

🤖 Generated with Claude Code

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-04 16:16:56 +09:00
a3d5bacc55 Phase 30.1 & 73: Stage-3 features env and JoinIR flag cleanup 2025-11-30 14:30:28 +09:00
772149c86d Analyzer安定化完了: NYASH_DISABLE_PLUGINS=1復元 + plugin無効化根治
## 修正内容
1. **hako_check.sh/run_tests.sh**: NYASH_DISABLE_PLUGINS=1 + NYASH_BOX_FACTORY_POLICY=builtin_first追加
2. **src/box_factory/plugin.rs**: NYASH_DISABLE_PLUGINS=1チェック追加
3. **src/box_factory/mod.rs**: plugin shortcut pathでNYASH_DISABLE_PLUGINS尊重
4. **tools/hako_check/render/graphviz.hako**: smart quotes修正(parse error解消)

## 根本原因
- NYASH_USE_PLUGIN_BUILTINS=1が自動設定され、ArrayBox/MapBoxがplugin経由で生成を試行
- bid/registry.rsで"Plugin loading temporarily disabled"の状態でも試行されエラー
- mod.rs:272のshortcut pathがNYASH_DISABLE_PLUGINSを無視していた

## テスト結果
- 10/11 PASS(HC011,13-18,21-22,31)
- HC012: 既存issue(JSON安定化未完)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-08 15:49:25 +09:00
58a6471883 Phase 21.3 WIP: Hako Source Checker improvements - HC011/HC016/HC017 実装完了
主な変更:
-  HC011 (dead methods) 実装・テスト緑
-  HC016 (unused alias) 実装・テスト緑
-  HC017 (non-ascii quotes) 実装完了
- 🔧 tokenizer/parser_core 強化(AST優先ルート)
- 🛡️ plugin_guard.rs 追加(stderr専用出力)
- 📋 テストインフラ整備(run_tests.sh改善)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-08 00:46:34 +09:00
301b1d212a Phase 21.2 Complete: VM Adapter正規実装 + devブリッジ完全撤去
## 🎉 Phase 21.2完全達成

###  実装完了
- VM static box 永続化(singleton infrastructure)
- devブリッジ完全撤去(adapter_dev.rs削除、by-name dispatch削除)
- .hako正規実装(MirCallV1Handler, AbiAdapterRegistry等)
- text-merge経路完全動作
- 全phase2120 adapter reps PASS(7テスト)

### 🐛 バグ修正
1. strip_local_decl修正
   - トップレベルのみlocal削除、メソッド内は保持
   - src/runner/modes/common_util/hako.rs:29

2. static box フィールド永続化
   - MirInterpreter singleton storage実装
   - me parameter binding修正(1:1マッピング)
   - getField/setField string→singleton解決
   - src/backend/mir_interpreter/{mod,exec,handlers/boxes_object_fields}.rs

3. Map.len alias rc=0修正
   - [map/missing]パターン検出でnull扱い(4箇所)
   - lang/src/vm/boxes/mir_call_v1_handler.hako:91-93,131-133,151-153,199-201

### 📁 主要変更ファイル

#### Rust(VM Runtime)
- src/backend/mir_interpreter/mod.rs - static box singleton storage
- src/backend/mir_interpreter/exec.rs - parameter binding fix
- src/backend/mir_interpreter/handlers/boxes_object_fields.rs - singleton resolution
- src/backend/mir_interpreter/handlers/calls.rs - dev bridge removal
- src/backend/mir_interpreter/utils/mod.rs - adapter_dev module removal
- src/backend/mir_interpreter/utils/adapter_dev.rs - DELETED (7555 bytes)
- src/runner/modes/vm.rs - static box declaration collection
- src/runner/modes/common_util/hako.rs - strip_local_decl fix
- src/instance_v2.rs - Clone implementation

#### Hako (.hako実装)
- lang/src/vm/boxes/mir_call_v1_handler.hako - [map/missing] detection
- lang/src/vm/boxes/abi_adapter_registry.hako - NEW (adapter registry)
- lang/src/vm/helpers/method_alias_policy.hako - method alias support

#### テスト
- tools/smokes/v2/profiles/quick/core/phase2120/s3_vm_adapter_*.sh - 7 new tests

### 🎯 テスト結果
```
 s3_vm_adapter_array_len_canary_vm.sh
 s3_vm_adapter_array_len_per_recv_canary_vm.sh
 s3_vm_adapter_array_length_alias_canary_vm.sh
 s3_vm_adapter_array_size_alias_canary_vm.sh
 s3_vm_adapter_map_len_alias_state_canary_vm.sh
 s3_vm_adapter_map_length_alias_state_canary_vm.sh
 s3_vm_adapter_map_size_struct_canary_vm.sh
```

環境フラグ: HAKO_ABI_ADAPTER=1 HAKO_ABI_ADAPTER_DEV=0

### 🏆 設計品質
-  ハードコード禁止(AGENTS.md 5.1)完全準拠
-  構造的・一般化設計(特定Box名のif分岐なし)
-  後方互換性保持(既存コード破壊ゼロ)
-  text-merge経路(.hako依存関係正しくマージ)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-07 19:32:44 +09:00