🎉 Phase 11.8/12.7: MIR Core-13 完全実装 + 糖衣構文ドキュメント更新
主要な変更: - MIR Core-13命令セット確定(Load/Store削除の革命的設計) - Const, BinOp, Compare(値・計算) - Jump, Branch, Return, Phi(制御) - Call, BoxCall, ExternCall(呼び出し) - TypeOp, Safepoint, Barrier(メタ) - Phase 12.7糖衣構文ドキュメント整理(超圧縮重視、可逆変換保証) - MIRビルダーのモジュール分割完了 - vtableテストスイート拡充 - AI協調開発ツール追加(並列リファクタリング支援) 詳細: - src/mir/instruction_introspection.rs: core13_instruction_names()追加 - MIRビルダー分割: decls.rs, exprs_*.rs, fields.rs - plugin_loader_v2: errors.rs, host_bridge.rs分離 - 論文用データ: mir13-final.md作成 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
24
src/mir/builder/exprs_call.rs
Normal file
24
src/mir/builder/exprs_call.rs
Normal file
@ -0,0 +1,24 @@
|
||||
use super::ValueId;
|
||||
use crate::ast::ASTNode;
|
||||
|
||||
impl super::MirBuilder {
|
||||
// Indirect call: (callee)(args...)
|
||||
pub(super) fn build_indirect_call_expression(
|
||||
&mut self,
|
||||
callee: ASTNode,
|
||||
arguments: Vec<ASTNode>,
|
||||
) -> Result<ValueId, String> {
|
||||
let callee_id = self.build_expression_impl(callee)?;
|
||||
let mut arg_ids: Vec<ValueId> = Vec::new();
|
||||
for a in arguments { arg_ids.push(self.build_expression_impl(a)?); }
|
||||
let dst = self.value_gen.next();
|
||||
self.emit_instruction(super::MirInstruction::Call {
|
||||
dst: Some(dst),
|
||||
func: callee_id,
|
||||
args: arg_ids,
|
||||
effects: super::EffectMask::PURE,
|
||||
})?;
|
||||
Ok(dst)
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user