Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'crates/hir-def/src/macro_expansion_tests/builtin_fn_macro.rs')
-rw-r--r--crates/hir-def/src/macro_expansion_tests/builtin_fn_macro.rs48
1 files changed, 48 insertions, 0 deletions
diff --git a/crates/hir-def/src/macro_expansion_tests/builtin_fn_macro.rs b/crates/hir-def/src/macro_expansion_tests/builtin_fn_macro.rs
index 1c3af47d52..eeaf865338 100644
--- a/crates/hir-def/src/macro_expansion_tests/builtin_fn_macro.rs
+++ b/crates/hir-def/src/macro_expansion_tests/builtin_fn_macro.rs
@@ -550,3 +550,51 @@ fn main() { "\"hello\""; }
"##]],
);
}
+
+#[test]
+fn cfg_select() {
+ check(
+ r#"
+#[rustc_builtin_macro]
+pub macro cfg_select($($tt:tt)*) {}
+
+cfg_select! {
+ false => { fn false_1() {} }
+ any(false, true) => { fn true_1() {} }
+}
+
+cfg_select! {
+ false => { fn false_2() {} }
+ _ => { fn true_2() {} }
+}
+
+cfg_select! {
+ false => { fn false_3() {} }
+}
+
+cfg_select! {
+ false
+}
+
+cfg_select! {
+ false =>
+}
+
+ "#,
+ expect![[r#"
+#[rustc_builtin_macro]
+pub macro cfg_select($($tt:tt)*) {}
+
+fn true_1() {}
+
+fn true_2() {}
+
+/* error: none of the predicates in this `cfg_select` evaluated to true */
+
+/* error: expected `=>` after cfg expression */
+
+/* error: expected a token tree after `=>` */
+
+ "#]],
+ );
+}