use std::collections::HashMap;
use indexmap::IndexMap;
use crate::{parse::parsing::Type, utils::location::Location};
#[derive(Debug)]
pub struct Symbol {
pub name: String,
pub ty: Type,
}
#[derive(Debug)]
pub struct Scope {
pub symbols: HashMap<String, Symbol>,
pub parent: Option<usize>,
}
#[derive(Clone, Debug)]
pub struct StructSignature {
pub generic_params: Vec<String>,
pub fields: IndexMap<String, Type>,
pub location: Location,
}
#[derive(Clone, Debug)]
pub struct FunctionSignature {
pub generic_params: Vec<String>,
pub param_types: Vec<Type>,
pub is_variadic: bool,
pub variadic_param_name: Option<String>,
pub return_type: Type,
pub location: Location,
}