rue_compiler/compile/expr/
field_access.rs

1use log::debug;
2use rue_ast::AstFieldAccessExpr;
3use rue_hir::Value;
4
5use crate::{Compiler, compile_expr, compile_named_field};
6
7pub fn compile_field_access_expr(ctx: &mut Compiler, access: &AstFieldAccessExpr) -> Value {
8    let expr = if let Some(expr) = access.expr() {
9        compile_expr(ctx, &expr, None)
10    } else {
11        debug!("Unresolved field access expr");
12        ctx.builtins().unresolved.clone()
13    };
14
15    let Some(name) = access.field() else {
16        debug!("Unresolved field access name");
17        return ctx.builtins().unresolved.clone();
18    };
19
20    compile_named_field(ctx, &expr, &name)
21}