compose_eval/expression/
atomic.rs1use crate::vm::Machine;
2use crate::{Eval, Evaluated};
3use compose_library::Value;
4use compose_library::diag::SourceResult;
5use compose_syntax::ast;
6
7impl Eval for ast::Int<'_> {
8 fn eval(self, _vm: &mut Machine) -> SourceResult<Evaluated> {
9 Ok(Evaluated::mutable(Value::Int(self.get())))
10 }
11}
12
13impl Eval for ast::Str<'_> {
14 fn eval(self, _vm: &mut Machine) -> SourceResult<Evaluated> {
15 Ok(Evaluated::mutable(Value::Str(self.get().into())))
16 }
17}
18
19impl Eval for ast::Bool<'_> {
20 fn eval(self, _vm: &mut Machine) -> SourceResult<Evaluated> {
21 Ok(Evaluated::mutable(Value::Bool(self.get())))
22 }
23}
24
25#[cfg(test)]
26mod tests {
27 use super::*;
28 use crate::test::assert_eval;
29
30 #[test]
31 fn test_int() {
32 assert_eq!(assert_eval("124"), Value::Int(124));
33 }
34}