主要な変更: - 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>
25 lines
732 B
Rust
25 lines
732 B
Rust
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)
|
|
}
|
|
}
|
|
|