use crate::name_analysis::symbol::function_symbol::FunctionSymbol; use crate::name_analysis::symbol::parameter_symbol::ParameterSymbol; use crate::name_analysis::symbol::primitive_type_symbol::PrimitiveTypeSymbol; use crate::name_analysis::symbol::type_symbol::TypeSymbol; use crate::name_analysis::symbol_table::{SymbolInsertError, SymbolTable}; use std::cell::RefCell; use std::rc::Rc; pub fn add_std_core_symbols(symbol_table: &mut SymbolTable) -> Result<(), SymbolInsertError> { symbol_table.set_current_fqn(&vec!["std", "core"]); let println_msg_symbol = ParameterSymbol::new("msg", None, Some( TypeSymbol::Primitive(PrimitiveTypeSymbol::Any) )); let println_symbol = FunctionSymbol::with_parameters_and_return_type( &symbol_table.resolve_fqn(Rc::from("println")), true, true, None, &vec![Rc::new(RefCell::new(println_msg_symbol))], None, ); symbol_table.insert_function_symbol(println_symbol)?; Ok(()) }