diff options
| author | Jacob Bramley <jacob.bramley@arm.com> | 2023-09-28 15:14:37 +0100 |
|---|---|---|
| committer | Amanieu d'Antras <amanieu@gmail.com> | 2023-11-30 07:48:46 +0000 |
| commit | 86cb5730aea078e616de2a9ae0a5755f7ff0e80c (patch) | |
| tree | f5bdc7f3363d1c57bfaa33959dc46a5007b415ed /library/stdarch/crates/simd-test-macro/src/lib.rs | |
| parent | 4fe088329cb1c78484c57873e0b4770df9aa351c (diff) | |
| download | rust-86cb5730aea078e616de2a9ae0a5755f7ff0e80c.tar.gz rust-86cb5730aea078e616de2a9ae0a5755f7ff0e80c.zip | |
Report missing features when skipping tests.
Diffstat (limited to 'library/stdarch/crates/simd-test-macro/src/lib.rs')
| -rw-r--r-- | library/stdarch/crates/simd-test-macro/src/lib.rs | 16 |
1 files changed, 9 insertions, 7 deletions
diff --git a/library/stdarch/crates/simd-test-macro/src/lib.rs b/library/stdarch/crates/simd-test-macro/src/lib.rs index 9e089f86bf2..73be684c474 100644 --- a/library/stdarch/crates/simd-test-macro/src/lib.rs +++ b/library/stdarch/crates/simd-test-macro/src/lib.rs @@ -82,16 +82,16 @@ pub fn simd_test( }; let macro_test = Ident::new(macro_test, Span::call_site()); - let mut cfg_target_features = TokenStream::new(); + let mut detect_missing_features = TokenStream::new(); for feature in target_features { let q = quote_spanned! { proc_macro2::Span::call_site() => - #macro_test!(#feature) && + if !#macro_test!(#feature) { + missing_features.push(#feature); + } }; - q.to_tokens(&mut cfg_target_features); + q.to_tokens(&mut detect_missing_features); } - let q = quote! { true }; - q.to_tokens(&mut cfg_target_features); let test_norun = std::env::var("STDSIMD_TEST_NORUN").is_ok(); let maybe_ignore = if test_norun { @@ -107,11 +107,13 @@ pub fn simd_test( #maybe_ignore #(#item_attrs)* fn #name() { - if #force_test | (#cfg_target_features) { + let mut missing_features = ::std::vec::Vec::new(); + #detect_missing_features + if #force_test || missing_features.is_empty() { let v = unsafe { #name() }; return v; } else { - ::stdarch_test::assert_skip_test_ok(stringify!(#name)); + ::stdarch_test::assert_skip_test_ok(stringify!(#name), &missing_features); } #[target_feature(enable = #enable_feature)] |
