devalang_core/core/preprocessor/resolver/
bank.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_bank(
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 match &stmt.value {
18 Value::Identifier(ident) => {
19 if let Some(val) = module.variable_table.get(ident) {
20 new_stmt.value = val.clone();
21 } else {
22 let message = format!("Bank identifier '{ident}' not found in variable table");
23 logger.log_error_with_stacktrace(&message, &module.path);
24 new_stmt.kind = StatementKind::Error {
25 message: message.clone(),
26 };
27 new_stmt.value = Value::Null;
28 }
29 }
30
31 Value::String(_) => {}
32
33 Value::Number(_) => {}
34
35 other => {
36 let message = format!(
37 "Expected a string or identifier for bank, found {:?}",
38 other
39 );
40 logger.log_error_with_stacktrace(&message, &module.path);
41 new_stmt.kind = StatementKind::Error {
42 message: "Expected a string or identifier for bank".to_string(),
43 };
44 new_stmt.value = Value::Null;
45 }
46 }
47
48 new_stmt
49}