devalang_core/core/preprocessor/resolver/
tempo.rs1use crate::core::{
2 parser::statement::{Statement, StatementKind},
3 preprocessor::module::Module,
4 store::global::GlobalStore,
5};
6use devalang_types::Value;
7use devalang_utils::logger::Logger;
8
9pub fn resolve_tempo(
10 stmt: &Statement,
11 module: &Module,
12 _path: &str,
13 _global_store: &GlobalStore,
14) -> Statement {
15 let mut new_stmt = stmt.clone();
16 let logger = Logger::new();
17
18 match &stmt.value {
19 Value::Identifier(ident) => {
20 if let Some(val) = module.variable_table.get(ident) {
21 new_stmt.value = val.clone();
22 } else {
23 let message = format!("Tempo identifier '{ident}' not found in variable table");
24 logger.log_error_with_stacktrace(&message, &module.path);
25 new_stmt.kind = StatementKind::Error { message };
26 new_stmt.value = Value::Null;
27 }
28 }
29
30 Value::Number(_) => {
31 }
33
34 other => {
35 let message = format!(
36 "Expected a number or identifier for tempo, found {:?}",
37 other
38 );
39 logger.log_error_with_stacktrace(&message, &module.path);
40 new_stmt.kind = StatementKind::Error {
41 message: "Expected a number or identifier for tempo".to_string(),
42 };
43 new_stmt.value = Value::Null;
44 }
45 }
46
47 new_stmt
48}