Phase 21.3 WIP: Hako Source Checker improvements

## 🎯 Checker/Analyzer拡張

###  実装追加
- テストフレームワーク追加(tools/hako_check/tests/)
- ルール改善(HC003グローバルassign、HC040静的箱トップレベルassign)
- テストランナー(run_tests.sh)

### 🔧 Rust側修正
- AST utilities拡張(src/ast/utils.rs)
- MIR lowerers新設(src/mir/lowerers/)
- Parser制御フロー改善(src/parser/statements/control_flow.rs)
- Tokenizer識別子処理改善(src/tokenizer/lex_ident.rs)

### 📁 主要変更
- tools/hako_check/cli.hako - CLI改善
- tools/hako_check/hako_source_checker.hako - Checker core更新
- tools/hako_check/tests/ - NEW (テストケース追加)
- tools/hako_check/run_tests.sh - NEW (テストランナー)
- src/mir/lowerers/ - NEW (MIR lowering utilities)

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

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
nyash-codex
2025-11-07 21:04:01 +09:00
parent b8fbbafc0c
commit 86489ffe43
20 changed files with 547 additions and 165 deletions

View File

@ -361,6 +361,23 @@ pub enum ASTNode {
span: Span,
},
/// Stage-3: while文: while condition { body }
While {
condition: Box<ASTNode>,
body: Vec<ASTNode>,
span: Span,
},
/// Stage-3: for-range文: for ident in start..end { body }
/// - 半開区間 [start, end)
ForRange {
var_name: String,
start: Box<ASTNode>,
end: Box<ASTNode>,
body: Vec<ASTNode>,
span: Span,
},
/// return文: return value
Return {
value: Option<Box<ASTNode>>,