about summary refs log tree commit diff
path: root/library/stdarch/crates/std_detect
diff options
context:
space:
mode:
authorJuan Aguilar Santillana <mhpoin@gmail.com>2019-02-03 20:20:08 +0100
committergnzlbg <gnzlbg@users.noreply.github.com>2019-02-04 12:37:48 +0100
commite51ee17aa79ec4ccb2901ba128819bfccd5af651 (patch)
treea70297aa92172c5adf9e63c70b2f50cc5b791f89 /library/stdarch/crates/std_detect
parentd226e329845ee3012793e11b684e980b77858ae2 (diff)
downloadrust-e51ee17aa79ec4ccb2901ba128819bfccd5af651.tar.gz
rust-e51ee17aa79ec4ccb2901ba128819bfccd5af651.zip
Add detect macros should support trailing commas (Fix #443)
Diffstat (limited to 'library/stdarch/crates/std_detect')
-rw-r--r--library/stdarch/crates/std_detect/src/detect/arch/aarch64.rs3
-rw-r--r--library/stdarch/crates/std_detect/src/detect/arch/arm.rs3
-rw-r--r--library/stdarch/crates/std_detect/src/detect/arch/mips.rs3
-rw-r--r--library/stdarch/crates/std_detect/src/detect/arch/mips64.rs3
-rw-r--r--library/stdarch/crates/std_detect/src/detect/arch/powerpc.rs3
-rw-r--r--library/stdarch/crates/std_detect/src/detect/arch/powerpc64.rs3
-rw-r--r--library/stdarch/crates/std_detect/src/detect/arch/x86.rs3
-rw-r--r--library/stdarch/crates/std_detect/tests/macro_trailing_commas.rs55
8 files changed, 76 insertions, 0 deletions
diff --git a/library/stdarch/crates/std_detect/src/detect/arch/aarch64.rs b/library/stdarch/crates/std_detect/src/detect/arch/aarch64.rs
index 882c22cc174..7571dfbfec3 100644
--- a/library/stdarch/crates/std_detect/src/detect/arch/aarch64.rs
+++ b/library/stdarch/crates/std_detect/src/detect/arch/aarch64.rs
@@ -66,6 +66,9 @@ macro_rules! is_aarch64_feature_detected {
     ("v8.3a") => {
         compile_error!("\"v8.3a\" feature cannot be detected at run-time")
     };
+    ($t:tt,) => {
+        is_aarch64_feature_detected!($t);
+    };
     ($t:tt) => { compile_error!(concat!("unknown aarch64 target feature: ", $t)) };
 }
 
diff --git a/library/stdarch/crates/std_detect/src/detect/arch/arm.rs b/library/stdarch/crates/std_detect/src/detect/arch/arm.rs
index cb6ac6badcc..5f91c9269ad 100644
--- a/library/stdarch/crates/std_detect/src/detect/arch/arm.rs
+++ b/library/stdarch/crates/std_detect/src/detect/arch/arm.rs
@@ -17,6 +17,9 @@ macro_rules! is_arm_feature_detected {
     ("vfp2") => { compile_error!("\"vfp2\" feature cannot be detected at run-time") };
     ("vfp3") => { compile_error!("\"vfp3\" feature cannot be detected at run-time") };
     ("vfp4") => { compile_error!("\"vfp4\" feature cannot be detected at run-time") };
+    ($t:tt,) => {
+        is_arm_feature_detected!($t);
+    };
     ($t:tt) => { compile_error!(concat!("unknown arm target feature: ", $t)) };
 }
 
diff --git a/library/stdarch/crates/std_detect/src/detect/arch/mips.rs b/library/stdarch/crates/std_detect/src/detect/arch/mips.rs
index 876f8dde262..58e3ee6d204 100644
--- a/library/stdarch/crates/std_detect/src/detect/arch/mips.rs
+++ b/library/stdarch/crates/std_detect/src/detect/arch/mips.rs
@@ -9,6 +9,9 @@ macro_rules! is_mips_feature_detected {
         cfg!(target_feature = "msa") ||
             $crate::detect::check_for($crate::detect::Feature::msa)
     };
+    ($t:tt,) => {
+        is_mips_feature_detected!($t);
+    };
     ($t:tt) => { compile_error!(concat!("unknown mips target feature: ", $t)) };
 }
 
diff --git a/library/stdarch/crates/std_detect/src/detect/arch/mips64.rs b/library/stdarch/crates/std_detect/src/detect/arch/mips64.rs
index ab837b3d5c9..aa42c0e55df 100644
--- a/library/stdarch/crates/std_detect/src/detect/arch/mips64.rs
+++ b/library/stdarch/crates/std_detect/src/detect/arch/mips64.rs
@@ -9,6 +9,9 @@ macro_rules! is_mips64_feature_detected {
         cfg!(target_feature = "msa") ||
             $crate::detect::check_for($crate::detect::Feature::msa)
     };
+    ($t:tt,) => {
+        is_mips64_feature_detected!($t);
+    };
     ($t:tt) => { compile_error!(concat!("unknown mips64 target feature: ", $t)) };
 }
 
diff --git a/library/stdarch/crates/std_detect/src/detect/arch/powerpc.rs b/library/stdarch/crates/std_detect/src/detect/arch/powerpc.rs
index 9c440b1d6b0..8270e5bee46 100644
--- a/library/stdarch/crates/std_detect/src/detect/arch/powerpc.rs
+++ b/library/stdarch/crates/std_detect/src/detect/arch/powerpc.rs
@@ -17,6 +17,9 @@ macro_rules! is_powerpc_feature_detected {
         cfg!(target_feature = "power8") ||
             $crate::detect::check_for($crate::detect::Feature::power8)
     };
+    ($t:tt,) => {
+        is_powerpc_feature_detected!($t);
+    };
     ($t:tt) => { compile_error!(concat!("unknown powerpc target feature: ", $t)) };
 }
 
diff --git a/library/stdarch/crates/std_detect/src/detect/arch/powerpc64.rs b/library/stdarch/crates/std_detect/src/detect/arch/powerpc64.rs
index 910940f0bb9..2f754713650 100644
--- a/library/stdarch/crates/std_detect/src/detect/arch/powerpc64.rs
+++ b/library/stdarch/crates/std_detect/src/detect/arch/powerpc64.rs
@@ -17,6 +17,9 @@ macro_rules! is_powerpc64_feature_detected {
         cfg!(target_feature = "power8") ||
             $crate::detect::check_for($crate::detect::Feature::power8)
     };
+    ($t:tt,) => {
+        is_powerpc64_feature_detected!($t);
+    };
     ($t:tt) => { compile_error!(concat!("unknown powerpc64 target feature: ", $t)) };
 }
 
diff --git a/library/stdarch/crates/std_detect/src/detect/arch/x86.rs b/library/stdarch/crates/std_detect/src/detect/arch/x86.rs
index 3ef8d31d12b..5425aeecd0c 100644
--- a/library/stdarch/crates/std_detect/src/detect/arch/x86.rs
+++ b/library/stdarch/crates/std_detect/src/detect/arch/x86.rs
@@ -234,6 +234,9 @@ macro_rules! is_x86_feature_detected {
         cfg!(target_feature = "adx") || $crate::detect::check_for(
             $crate::detect::Feature::adx)
     };
+    ($t:tt,) => {
+        is_x86_feature_detected!($t);
+    };
     ($t:tt) => {
         compile_error!(concat!("unknown target feature: ", $t))
     };
diff --git a/library/stdarch/crates/std_detect/tests/macro_trailing_commas.rs b/library/stdarch/crates/std_detect/tests/macro_trailing_commas.rs
new file mode 100644
index 00000000000..d63da6af06a
--- /dev/null
+++ b/library/stdarch/crates/std_detect/tests/macro_trailing_commas.rs
@@ -0,0 +1,55 @@
+#![feature(stdsimd)]
+#![cfg_attr(stdsimd_strict, deny(warnings))]
+#![cfg_attr(
+    feature = "cargo-clippy",
+    allow(clippy::option_unwrap_used, clippy::use_debug, clippy::print_stdout)
+)]
+
+#[cfg(any(
+    target_arch = "arm",
+    target_arch = "aarch64",
+    target_arch = "x86",
+    target_arch = "x86_64",
+    target_arch = "powerpc",
+    target_arch = "powerpc64"
+))]
+#[macro_use]
+extern crate std_detect;
+
+#[test]
+#[cfg(all(target_arch = "arm", any(target_os = "linux", target_os = "android")))]
+fn arm_linux() {
+    let _ = is_arm_feature_detected!("neon");
+    let _ = is_arm_feature_detected!("neon",);
+}
+
+#[test]
+#[cfg(all(
+    target_arch = "aarch64",
+    any(target_os = "linux", target_os = "android")
+))]
+fn aarch64_linux() {
+    let _ = is_aarch64_feature_detected!("fp");
+    let _ = is_aarch64_feature_detected!("fp",);
+}
+
+#[test]
+#[cfg(all(target_arch = "powerpc", target_os = "linux"))]
+fn powerpc_linux() {
+    let _ = is_powerpc_feature_detected!("altivec");
+    let _ = is_powerpc_feature_detected!("altivec",);
+}
+
+#[test]
+#[cfg(all(target_arch = "powerpc64", target_os = "linux"))]
+fn powerpc64_linux() {
+    let _ = is_powerpc64_feature_detected!("altivec");
+    let _ = is_powerpc64_feature_detected!("altivec",);
+}
+
+#[test]
+#[cfg(any(target_arch = "x86", target_arch = "x86_64"))]
+fn x86_all() {
+    let _ = is_x86_feature_detected!("sse");
+    let _ = is_x86_feature_detected!("sse",);
+}