rue_compiler/compile/expr/
field_access.rs1use 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}