summaryrefslogtreecommitdiff
path: root/src/stages/intermediate.rs
diff options
context:
space:
mode:
authorBen Bridle <ben@derelict.engineering>2025-12-04 16:51:03 +1300
committerBen Bridle <ben@derelict.engineering>2025-12-04 16:51:03 +1300
commit938b40dd15f1d44f8881261a64e092fc0fd9165b (patch)
tree737536010d19914325913b4703934a1be4829685 /src/stages/intermediate.rs
parent091938b459e9f6e7a9ed4e5427da535d0cb693f3 (diff)
downloadtorque-asm-938b40dd15f1d44f8881261a64e092fc0fd9165b.zip
Convert single-element lists to integers when an integer is required
This allows an integer invocation with arguments to be wrapped in `[]` square brackets so that it can be passed to another invocation as an argument.
Diffstat (limited to 'src/stages/intermediate.rs')
-rw-r--r--src/stages/intermediate.rs7
1 files changed, 5 insertions, 2 deletions
diff --git a/src/stages/intermediate.rs b/src/stages/intermediate.rs
index d630cc2..c5be44f 100644
--- a/src/stages/intermediate.rs
+++ b/src/stages/intermediate.rs
@@ -321,8 +321,11 @@ impl IntermediateParser {
let result = self.parse_invocation(invocation, source)?;
match result.value {
IntermediateValue::Integer(integer) => {
- let source = integer.source.clone();
- Some(Tracked::from(integer, source))
+ Some(Tracked::from(integer, source.clone()))
+ }
+ IntermediateValue::List(mut integers) if integers.len() == 1 => {
+ let integer = integers.pop().unwrap();
+ Some(Tracked::from(integer, source.clone()))
}
IntermediateValue::Block(_) | IntermediateValue::List(_) => {
let error = IntermediateError::ExpectedInteger;