diff --git a/analysis/src/machine_check.rs b/analysis/src/machine_check.rs index d759eed79..b32ba060c 100644 --- a/analysis/src/machine_check.rs +++ b/analysis/src/machine_check.rs @@ -78,12 +78,7 @@ impl TypeChecker { Err(e) => errors.extend(e), } } - MachineStatement::LinkDeclaration(LinkDeclaration { - source, - flag, - params, - to, - }) => { + MachineStatement::LinkDeclaration(source, LinkDeclaration { flag, params, to }) => { links.push(LinkDefinitionStatement { source, flag, diff --git a/ast/src/parsed/asm.rs b/ast/src/parsed/asm.rs index d216eef48..2a2fb84ec 100644 --- a/ast/src/parsed/asm.rs +++ b/ast/src/parsed/asm.rs @@ -383,7 +383,7 @@ impl Machine { MachineStatement::Degree(_, _) | MachineStatement::Submachine(_, _, _) | MachineStatement::InstructionDeclaration(_, _, _) - | MachineStatement::LinkDeclaration(_) + | MachineStatement::LinkDeclaration(_, _) | MachineStatement::FunctionDeclaration(_, _, _, _) | MachineStatement::OperationDeclaration(_, _, _, _) => Box::new(empty()), })) @@ -455,14 +455,13 @@ pub enum MachineStatement { Submachine(SourceRef, SymbolPath, String), RegisterDeclaration(SourceRef, String, Option), InstructionDeclaration(SourceRef, String, Instruction), - LinkDeclaration(LinkDeclaration), + LinkDeclaration(SourceRef, LinkDeclaration), FunctionDeclaration(SourceRef, String, Params, Vec>), OperationDeclaration(SourceRef, String, OperationId, Params), } #[derive(Debug, PartialEq, Eq, PartialOrd, Ord, Clone)] pub struct LinkDeclaration { - pub source: SourceRef, pub flag: Expression, pub params: Params, pub to: CallableRef, diff --git a/ast/src/parsed/display.rs b/ast/src/parsed/display.rs index bbfae8f47..bad452f62 100644 --- a/ast/src/parsed/display.rs +++ b/ast/src/parsed/display.rs @@ -176,7 +176,7 @@ impl Display for MachineStatement { MachineStatement::InstructionDeclaration(_, name, instruction) => { write!(f, "instr {}{}", name, instruction) } - MachineStatement::LinkDeclaration(link) => { + MachineStatement::LinkDeclaration(_, link) => { write!(f, "{link}") } MachineStatement::FunctionDeclaration(_, name, params, statements) => { diff --git a/parser/src/lib.rs b/parser/src/lib.rs index 7f09f07e5..1f50cee33 100644 --- a/parser/src/lib.rs +++ b/parser/src/lib.rs @@ -247,8 +247,8 @@ mod test { // helper function to clear SourceRef's inside the AST so we can compare for equality fn asm_clear_source_refs(ast: &mut ASMProgram) { use powdr_ast::parsed::asm::{ - ASMModule, FunctionStatement, Instruction, InstructionBody, LinkDeclaration, Machine, - MachineStatement, Module, ModuleStatement, SymbolDefinition, SymbolValue, + ASMModule, FunctionStatement, Instruction, InstructionBody, Machine, MachineStatement, + Module, ModuleStatement, SymbolDefinition, SymbolValue, }; fn clear_machine_stmt(stmt: &mut MachineStatement) { @@ -257,7 +257,7 @@ mod test { | MachineStatement::Submachine(s, _, _) | MachineStatement::RegisterDeclaration(s, _, _) | MachineStatement::OperationDeclaration(s, _, _, _) - | MachineStatement::LinkDeclaration(LinkDeclaration { source: s, .. }) => { + | MachineStatement::LinkDeclaration(s, _) => { *s = SourceRef::unknown(); } MachineStatement::Pil(s, stmt) => { diff --git a/parser/src/powdr.lalrpop b/parser/src/powdr.lalrpop index e09af9e2e..d724b6a51 100644 --- a/parser/src/powdr.lalrpop +++ b/parser/src/powdr.lalrpop @@ -252,7 +252,7 @@ pub Instruction: Instruction = { } pub LinkDeclaration: MachineStatement = { - "link" "=" ";" => MachineStatement::LinkDeclaration(LinkDeclaration { source: ctx.source_ref(start), flag, params, to }) + "link" "=" ";" => MachineStatement::LinkDeclaration(ctx.source_ref(start), LinkDeclaration { flag, params, to }) } pub InstructionBody: InstructionBody = {