56 lines
1.2 KiB
Rust
56 lines
1.2 KiB
Rust
use crate::source_range::SourceRange;
|
|
use crate::symbol::Symbol;
|
|
use std::hash::{Hash, Hasher};
|
|
use std::rc::Rc;
|
|
|
|
pub struct ParameterSymbol {
|
|
declared_name: Rc<str>,
|
|
declared_name_source_range: SourceRange,
|
|
scope_id: usize,
|
|
}
|
|
|
|
impl ParameterSymbol {
|
|
pub fn new(
|
|
declared_name: &Rc<str>,
|
|
declared_name_source_range: SourceRange,
|
|
scope_id: usize,
|
|
) -> Self {
|
|
Self {
|
|
declared_name: declared_name.clone(),
|
|
declared_name_source_range,
|
|
scope_id,
|
|
}
|
|
}
|
|
|
|
pub fn declared_name(&self) -> &str {
|
|
&self.declared_name
|
|
}
|
|
|
|
pub fn declared_name_owned(&self) -> Rc<str> {
|
|
self.declared_name.clone()
|
|
}
|
|
|
|
pub fn declared_name_source_range(&self) -> &SourceRange {
|
|
&self.declared_name_source_range
|
|
}
|
|
|
|
pub fn scope_id(&self) -> usize {
|
|
self.scope_id
|
|
}
|
|
}
|
|
|
|
impl Eq for ParameterSymbol {}
|
|
|
|
impl PartialEq for ParameterSymbol {
|
|
fn eq(&self, other: &Self) -> bool {
|
|
self.declared_name == other.declared_name && self.scope_id == other.scope_id
|
|
}
|
|
}
|
|
|
|
impl Hash for ParameterSymbol {
|
|
fn hash<H: Hasher>(&self, state: &mut H) {
|
|
self.declared_name.hash(state);
|
|
self.scope_id.hash(state);
|
|
}
|
|
}
|