diff options
| author | Miquel Sabaté Solà <mssola@mssola.com> | 2026-02-03 19:02:33 +0100 |
|---|---|---|
| committer | Miquel Sabaté Solà <mssola@mssola.com> | 2026-02-03 19:02:33 +0100 |
| commit | 15cb0fb33aca361848c9f64b3ac54166768527bd (patch) | |
| tree | ca8f2b1e336ce96e9e6806bce0dce14e419c29c1 | |
| parent | 42eea452eabf2c603e5f50731ba89f08e3dd81bd (diff) | |
| download | tools.nes-15cb0fb33aca361848c9f64b3ac54166768527bd.tar.gz tools.nes-15cb0fb33aca361848c9f64b3ac54166768527bd.zip | |
Make the fallthrough error more explicit
Add the target and effective addresses into the message, so it's more
clear how different they are.
Signed-off-by: Miquel Sabaté Solà <mssola@mssola.com>
| -rw-r--r-- | lib/xixanta/src/assembler.rs | 5 | ||||
| -rw-r--r-- | tests/expected/bad_fallthrough.txt | 6 |
2 files changed, 7 insertions, 4 deletions
diff --git a/lib/xixanta/src/assembler.rs b/lib/xixanta/src/assembler.rs index 136d416..326d97a 100644 --- a/lib/xixanta/src/assembler.rs +++ b/lib/xixanta/src/assembler.rs @@ -1057,7 +1057,10 @@ impl<'a> Assembler<'a> { if effective.address != target_address { return Err(Error { line: pn.node.value.line, - message: String::from("statement does not fall through"), + message: format!( + "statement expects to progress on '{}' (${:04X}), but the next address is ${:04X}", + pn.node.value.value, target_address, effective.address, + ), source: self.source_for(&pn.node), expanded_from: pn.macro_context.clone(), global: false, diff --git a/tests/expected/bad_fallthrough.txt b/tests/expected/bad_fallthrough.txt index f105880..2ee8b52 100644 --- a/tests/expected/bad_fallthrough.txt +++ b/tests/expected/bad_fallthrough.txt @@ -1,4 +1,4 @@ -error: statement does not fall through (bad_fallthrough.s: line 11) -error: statement does not fall through (bad_fallthrough.s: line 14) -error: statement does not fall through (bad_fallthrough.s: line 15) +error: statement expects to progress on 'bar' ($8004), but the next address is $8002 (bad_fallthrough.s: line 11) +error: statement expects to progress on 'bar' ($8004), but the next address is $8002 (bad_fallthrough.s: line 14) +error: statement expects to progress on 'other' ($8006), but the next address is $8002 (bad_fallthrough.s: line 15) error: statement does not fall through (bad_fallthrough.s: line 27) |
