compose_eval/expression/
path_access.rs1use crate::{Eval, Evaluated, Machine};
2use compose_library::diag::SourceResult;
3use compose_syntax::ast;
4use compose_syntax::ast::AstNode;
5
6impl Eval for ast::PathAccess<'_> {
7 fn eval(self, vm: &mut Machine) -> SourceResult<Evaluated> {
8 let target_expr = self.target();
9 let member = self.member();
10
11 let target = target_expr.eval(vm)?;
12
13 let ctx = vm.syntax_ctx();
14
15 let span = member.span();
16 target
17 .value
18 .path(&member, span, &mut vm.engine.sink, &ctx)
19 .map(|v| target.with_value(v))
20 }
21}