diff options
| author | Laurențiu Nicola <lnicola@users.noreply.github.com> | 2025-05-20 07:15:48 +0000 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-05-20 07:15:48 +0000 |
| commit | 2147783b79641e76a7e5edde92d01ab2b7b1c929 (patch) | |
| tree | f3320b3f6da82ecd6addc82012c3800de01aa3d2 /src/etc/test-float-parse | |
| parent | a1d75fb0d092355557fefed43ceb1bea1432400c (diff) | |
| parent | a6674952979445a81a890a936d968f81cf766c61 (diff) | |
| download | rust-2147783b79641e76a7e5edde92d01ab2b7b1c929.tar.gz rust-2147783b79641e76a7e5edde92d01ab2b7b1c929.zip | |
Merge pull request #19826 from lnicola/sync-from-rust
minor: Sync from downstream
Diffstat (limited to 'src/etc/test-float-parse')
| -rw-r--r-- | src/etc/test-float-parse/Cargo.toml | 7 | ||||
| -rw-r--r-- | src/etc/test-float-parse/src/gen_/subnorm.rs | 9 | ||||
| -rw-r--r-- | src/etc/test-float-parse/src/lib.rs | 7 | ||||
| -rw-r--r-- | src/etc/test-float-parse/src/traits.rs | 5 |
4 files changed, 25 insertions, 3 deletions
diff --git a/src/etc/test-float-parse/Cargo.toml b/src/etc/test-float-parse/Cargo.toml index 8a9c5322ef7..e407e322f9e 100644 --- a/src/etc/test-float-parse/Cargo.toml +++ b/src/etc/test-float-parse/Cargo.toml @@ -13,3 +13,10 @@ rayon = "1" [lib] name = "test_float_parse" + +[lints.rust.unexpected_cfgs] +level = "warn" +check-cfg = [ + # Internal features aren't marked known config by default + 'cfg(target_has_reliable_f16)', +] diff --git a/src/etc/test-float-parse/src/gen_/subnorm.rs b/src/etc/test-float-parse/src/gen_/subnorm.rs index 4fe3b90a3dd..654f324b9b0 100644 --- a/src/etc/test-float-parse/src/gen_/subnorm.rs +++ b/src/etc/test-float-parse/src/gen_/subnorm.rs @@ -1,4 +1,3 @@ -use std::cmp::min; use std::fmt::Write; use std::ops::RangeInclusive; @@ -83,7 +82,13 @@ where } fn new() -> Self { - Self { iter: F::Int::ZERO..=min(F::Int::ONE << 22, F::MAN_BITS.try_into().unwrap()) } + let upper_lim = if F::MAN_BITS >= 22 { + F::Int::ONE << 22 + } else { + (F::Int::ONE << F::MAN_BITS) - F::Int::ONE + }; + + Self { iter: F::Int::ZERO..=upper_lim } } fn write_string(s: &mut String, ctx: Self::WriteCtx) { diff --git a/src/etc/test-float-parse/src/lib.rs b/src/etc/test-float-parse/src/lib.rs index 3c3ef5802b6..0bd4878f9a6 100644 --- a/src/etc/test-float-parse/src/lib.rs +++ b/src/etc/test-float-parse/src/lib.rs @@ -1,3 +1,7 @@ +#![feature(f16)] +#![feature(cfg_target_has_reliable_f16_f128)] +#![expect(internal_features)] // reliable_f16_f128 + mod traits; mod ui; mod validate; @@ -114,6 +118,9 @@ pub fn register_tests(cfg: &Config) -> Vec<TestInfo> { let mut tests = Vec::new(); // Register normal generators for all floats. + + #[cfg(target_has_reliable_f16)] + register_float::<f16>(&mut tests, cfg); register_float::<f32>(&mut tests, cfg); register_float::<f64>(&mut tests, cfg); diff --git a/src/etc/test-float-parse/src/traits.rs b/src/etc/test-float-parse/src/traits.rs index 57e702b7d09..65a8721bfa5 100644 --- a/src/etc/test-float-parse/src/traits.rs +++ b/src/etc/test-float-parse/src/traits.rs @@ -98,7 +98,7 @@ macro_rules! impl_int { } } -impl_int!(u32, i32; u64, i64); +impl_int!(u16, i16; u32, i32; u64, i64); /// Floating point types. pub trait Float: @@ -170,6 +170,9 @@ macro_rules! impl_float { impl_float!(f32, u32; f64, u64); +#[cfg(target_has_reliable_f16)] +impl_float!(f16, u16); + /// A test generator. Should provide an iterator that produces unique patterns to parse. /// /// The iterator needs to provide a `WriteCtx` (could be anything), which is then used to |
