From fe350da24d14863ba681667fd91c3d8c70ddec7f Mon Sep 17 00:00:00 2001 From: janis Date: Wed, 5 Nov 2025 15:45:16 +0100 Subject: [PATCH] as expr (tree walk) --- lang/src/ast.asm | 8 ++++++++ lang/tests/ast.rs | 2 +- lang/tests/shared/defs.rs | 2 ++ 3 files changed, 11 insertions(+), 1 deletion(-) diff --git a/lang/src/ast.asm b/lang/src/ast.asm index 5d773cc..990c088 100644 --- a/lang/src/ast.asm +++ b/lang/src/ast.asm @@ -1853,6 +1853,14 @@ ast_walk_for_each: je .if_expr cmp bl, AST_CALL je .call + cmp bl, AST_AS + je .as_expr + jmp .check_scope + +.as_expr: + mov rbx, [rax + 8] ; AstNode.data = *AstAsExpr + mov rax, [rbx + 0] ; AstCallExpr.expr + push rax ; push expr index jmp .check_scope .call: diff --git a/lang/tests/ast.rs b/lang/tests/ast.rs index 2ae9155..b7b1ef2 100644 --- a/lang/tests/ast.rs +++ b/lang/tests/ast.rs @@ -133,7 +133,7 @@ return main(1); print_ast( b"fn main(a: u32) -> void { -return 1 as u8; +return a as u8; }", |ast| unsafe { parse_func(ast) }, ); diff --git a/lang/tests/shared/defs.rs b/lang/tests/shared/defs.rs index 6e27d4f..751fde4 100644 --- a/lang/tests/shared/defs.rs +++ b/lang/tests/shared/defs.rs @@ -324,6 +324,8 @@ pub struct Operand { pub register: u8, pub width: u16, pub len: u16, + pub align: u8, + pub bitset: u8, pub value: u64, }