Skip to content

Commit

Permalink
feat(syntax): add SymbolId::new method
Browse files Browse the repository at this point in the history
  • Loading branch information
overlookmotel committed Dec 20, 2024
1 parent 3283cf5 commit 981b37b
Showing 1 changed file with 23 additions and 0 deletions.
23 changes: 23 additions & 0 deletions crates/oxc_syntax/src/symbol.rs
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,29 @@ use serde::{Serialize, Serializer};
#[derive(Debug, Clone, Copy, Eq, PartialEq, Ord, PartialOrd, Hash)]
pub struct SymbolId(NonMaxU32);

impl SymbolId {
/// Create `SymbolId` from `u32`.
///
/// # Panics
/// Panics if `idx` is `u32::MAX`.
pub const fn new(idx: u32) -> Self {
if let Some(idx) = NonMaxU32::new(idx) {
return Self(idx);
}
panic!();
}

/// Create `SymbolId` from `u32` unchecked.
///
/// # SAFETY
/// `idx` must not be `u32::MAX`.
#[allow(clippy::missing_safety_doc, clippy::unnecessary_safety_comment)]
pub const unsafe fn new_unchecked(idx: u32) -> Self {
// SAFETY: Caller must ensure `idx` is not `u32::MAX`
Self(NonMaxU32::new_unchecked(idx))
}
}

impl Idx for SymbolId {
#[allow(clippy::cast_possible_truncation)]
fn from_usize(idx: usize) -> Self {
Expand Down

0 comments on commit 981b37b

Please sign in to comment.