use crate::ast::NodeId; use crate::ast::constructor::Constructor; use crate::ast::field::Field; use crate::ast::function::Function; use crate::ast::generic_parameter::GenericParameter; use crate::source_range::SourceRange; use std::rc::Rc; pub struct Class { node_id: NodeId, declared_name: Rc, declared_name_source_range: SourceRange, generic_parameters: Vec, constructor: Option, fields: Vec, functions: Vec, } impl Class { pub fn new( node_id: NodeId, declared_name: &str, declared_name_source_range: SourceRange, generic_parameters: Vec, constructor: Option, fields: Vec, functions: Vec, ) -> Self { Self { node_id, declared_name: declared_name.into(), declared_name_source_range, generic_parameters, constructor, fields, functions, } } }