rue_compiler/compile/expr/
path.rs1use log::debug;
2use rue_ast::{AstNode, AstPathExpr};
3use rue_hir::{Hir, SymbolPath, Value};
4
5use crate::{Compiler, PathKind, PathResult, compile_path};
6
7pub fn compile_path_expr(ctx: &mut Compiler, path: &AstPathExpr) -> Value {
8 let PathResult::Symbol(symbol) =
9 compile_path(ctx, path.syntax(), path.segments(), PathKind::Symbol)
10 else {
11 debug!("Unresolved path expr");
12 return ctx.builtins().unresolved.clone();
13 };
14
15 let ty = ctx.symbol_type(symbol);
16
17 Value::new(ctx.alloc_hir(Hir::Reference(symbol)), ty).with_reference(SymbolPath {
18 symbol,
19 path: vec![],
20 })
21}