aboutsummaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-rw-r--r--lib/xixanta/src/assembler.rs18
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",