diff options
Diffstat (limited to 'lib')
| -rw-r--r-- | lib/xixanta/src/assembler.rs | 18 |
1 files changed, 17 insertions, 1 deletions
diff --git a/lib/xixanta/src/assembler.rs b/lib/xixanta/src/assembler.rs index c59150c..1f7c9a5 100644 --- a/lib/xixanta/src/assembler.rs +++ b/lib/xixanta/src/assembler.rs @@ -929,6 +929,7 @@ impl<'a> Assembler<'a> { Ok(right) } + // Evaluate the given node as a relative reference. fn evaluate_anonymous_relative_reference(&mut self, node: &PNode) -> Result<Bundle, Error> { self.literal_mode = Some(LiteralMode::Plain); @@ -957,7 +958,12 @@ impl<'a> Assembler<'a> { }), } } - _ => panic!("unexpected evaluation of relative reference"), + Stage::Context => Err(Error { + line: node.value.line, + source: self.source_for(node), + global: false, + message: "trying to evaluate a relative reference as a bare value".to_string(), + }), } } @@ -2264,6 +2270,16 @@ mod tests { } #[test] + fn trying_to_assign_on_relative_reference() { + assert_error( + "Var = :-", + 1, + false, + "trying to evaluate a relative reference as a bare value", + ); + } + + #[test] fn unknown_variables() { assert_error( "lda #Variable", |
