deimos-lang/dmc-lib/src/ast/class.rs

40 lines
1.0 KiB
Rust

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<str>,
declared_name_source_range: SourceRange,
generic_parameters: Vec<GenericParameter>,
constructor: Option<Constructor>,
fields: Vec<Field>,
functions: Vec<Function>,
}
impl Class {
pub fn new(
node_id: NodeId,
declared_name: &str,
declared_name_source_range: SourceRange,
generic_parameters: Vec<GenericParameter>,
constructor: Option<Constructor>,
fields: Vec<Field>,
functions: Vec<Function>,
) -> Self {
Self {
node_id,
declared_name: declared_name.into(),
declared_name_source_range,
generic_parameters,
constructor,
fields,
functions,
}
}
}