28 lines
998 B
Rust
28 lines
998 B
Rust
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(())
|
|
}
|