compose_eval/expression/
path_access.rs

1use 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}