mirror of
https://github.com/danbulant/oxc
synced 2026-05-19 12:19:15 +00:00
feat(syntax): add SymbolId::new method (#8041)
Add `SymbolId::new` method, same as `ScopeId::new`. The advantage over `SymbolId::from_usize` is that `new` can be a `const` method.
This commit is contained in:
parent
6123f5e6ff
commit
be4feb4ad7
1 changed files with 23 additions and 0 deletions
|
|
@ -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 {
|
||||
|
|
|
|||
Loading…
Reference in a new issue