diff --git a/src/protocol/eval/error.rs b/src/protocol/eval/error.rs index fc194bb37c8ef31e8084d2613f4cdb9b9a36a344..81128b445a5c36ed8cda7034b2ca9d2f99084a8e 100644 --- a/src/protocol/eval/error.rs +++ b/src/protocol/eval/error.rs @@ -52,18 +52,8 @@ impl EvalError { let statement = &heap[frame.position]; let statement_span = statement.span(); - let (root_id, procedure, is_func) = match definition { - Definition::Function(def) => { - (def.defined_in, def.identifier.value.as_str().to_string(), true) - }, - Definition::Component(def) => { - (def.defined_in, def.identifier.value.as_str().to_string(), false) - }, - _ => unreachable!("construct stack frame with definition pointing to data type") - }; - // Lookup module name, if it has one - let module = modules.iter().find(|m| m.root_id == root_id).unwrap(); + let module = modules.iter().find(|m| m.root_id == definition.defined_in).unwrap(); let module_name = if let Some(name) = &module.name { name.as_str().to_string() } else { @@ -74,8 +64,8 @@ impl EvalError { frames.push(EvalFrame{ line: statement_span.begin.line, module_name, - procedure, - is_func + procedure: definition.identifier.value.as_str().to_string(), + is_func: definition.kind == ProcedureKind::Function, }); }