Phase 25.1b: VM undefined-value diagnostics and builder SSA helpers
This commit is contained in:
@ -451,11 +451,33 @@ impl MirBuilder {
|
||||
_ => (None, None, None),
|
||||
};
|
||||
|
||||
// Extract function name before mutable borrow to avoid borrowck error
|
||||
let current_fn_name = function.signature.name.clone();
|
||||
|
||||
if let Some(block) = function.get_block_mut(block_id) {
|
||||
// Invariant: Call must always carry a Callee (unified path).
|
||||
if let MirInstruction::Call { callee, .. } = &instruction {
|
||||
if callee.is_none() {
|
||||
return Err("builder invariant violated: MirInstruction::Call.callee must be Some (unified call)".into());
|
||||
} else if std::env::var("NYASH_BUILDER_TRACE_RECV").ok().as_deref() == Some("1") {
|
||||
use crate::mir::definitions::call_unified::Callee;
|
||||
if let Some(Callee::Method { box_name, method, receiver: Some(r), .. }) = callee {
|
||||
let names: Vec<String> = self
|
||||
.variable_map
|
||||
.iter()
|
||||
.filter(|(_, &vid)| vid == *r)
|
||||
.map(|(k, _)| k.clone())
|
||||
.collect();
|
||||
eprintln!(
|
||||
"[builder/recv-trace] fn={} bb={:?} method={}.{} recv=%{} aliases={:?}",
|
||||
current_fn_name,
|
||||
self.current_block,
|
||||
box_name,
|
||||
method,
|
||||
r.0,
|
||||
names
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
if utils::builder_debug_enabled() {
|
||||
|
||||
Reference in New Issue
Block a user