use super::common::Ident;
use crate::types::Span;
#[derive(Debug, PartialEq, Eq)]
pub struct OidAssignment {
pub components: Vec<OidComponent>,
pub span: Span,
}
#[derive(Debug, PartialEq, Eq)]
pub enum OidComponent {
Name(Ident),
Number { value: u32, span: Span },
NamedNumber { name: Ident, num: u32, span: Span },
QualifiedName {
module_name: Ident,
name: Ident,
span: Span,
},
QualifiedNamedNumber {
module_name: Ident,
name: Ident,
num: u32,
span: Span,
},
}
impl OidComponent {
pub fn span(&self) -> Span {
match self {
OidComponent::Name(ident) => ident.span,
OidComponent::Number { span, .. }
| OidComponent::NamedNumber { span, .. }
| OidComponent::QualifiedName { span, .. }
| OidComponent::QualifiedNamedNumber { span, .. } => *span,
}
}
}