diff --git a/crates/oxc_syntax/src/node.rs b/crates/oxc_syntax/src/node.rs index 8f8b1fe5bfa1c..d0d5288dedc4f 100644 --- a/crates/oxc_syntax/src/node.rs +++ b/crates/oxc_syntax/src/node.rs @@ -38,7 +38,9 @@ impl AstNodeId { impl Idx for AstNodeId { #[allow(clippy::cast_possible_truncation)] fn from_usize(idx: usize) -> Self { - Self(NonMaxU32::new(idx as u32).unwrap()) + assert!(idx < u32::MAX as usize); + // SAFETY: We just checked `idx` is valid for `NonMaxU32` + Self(unsafe { NonMaxU32::new_unchecked(idx as u32) }) } fn index(self) -> usize { diff --git a/crates/oxc_syntax/src/reference.rs b/crates/oxc_syntax/src/reference.rs index 5d1179ae6d1f1..b90dbfbe786f9 100644 --- a/crates/oxc_syntax/src/reference.rs +++ b/crates/oxc_syntax/src/reference.rs @@ -11,7 +11,9 @@ pub struct ReferenceId(NonMaxU32); impl Idx for ReferenceId { #[allow(clippy::cast_possible_truncation)] fn from_usize(idx: usize) -> Self { - Self(NonMaxU32::new(idx as u32).unwrap()) + assert!(idx < u32::MAX as usize); + // SAFETY: We just checked `idx` is valid for `NonMaxU32` + Self(unsafe { NonMaxU32::new_unchecked(idx as u32) }) } fn index(self) -> usize { diff --git a/crates/oxc_syntax/src/scope.rs b/crates/oxc_syntax/src/scope.rs index 323778e96631a..dd6e064d15248 100644 --- a/crates/oxc_syntax/src/scope.rs +++ b/crates/oxc_syntax/src/scope.rs @@ -35,7 +35,9 @@ impl ScopeId { impl Idx for ScopeId { #[allow(clippy::cast_possible_truncation)] fn from_usize(idx: usize) -> Self { - Self(NonMaxU32::new(idx as u32).unwrap()) + assert!(idx < u32::MAX as usize); + // SAFETY: We just checked `idx` is valid for `NonMaxU32` + Self(unsafe { NonMaxU32::new_unchecked(idx as u32) }) } fn index(self) -> usize { diff --git a/crates/oxc_syntax/src/symbol.rs b/crates/oxc_syntax/src/symbol.rs index ea2fed8839211..7dc08bcd1e863 100644 --- a/crates/oxc_syntax/src/symbol.rs +++ b/crates/oxc_syntax/src/symbol.rs @@ -11,7 +11,9 @@ pub struct SymbolId(NonMaxU32); impl Idx for SymbolId { #[allow(clippy::cast_possible_truncation)] fn from_usize(idx: usize) -> Self { - Self(NonMaxU32::new(idx as u32).unwrap()) + assert!(idx < u32::MAX as usize); + // SAFETY: We just checked `idx` is valid for `NonMaxU32` + Self(unsafe { NonMaxU32::new_unchecked(idx as u32) }) } fn index(self) -> usize {