Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'crates/hir-def/src/macro_expansion_tests/builtin_derive_macro.rs')
-rw-r--r--crates/hir-def/src/macro_expansion_tests/builtin_derive_macro.rs118
1 files changed, 118 insertions, 0 deletions
diff --git a/crates/hir-def/src/macro_expansion_tests/builtin_derive_macro.rs b/crates/hir-def/src/macro_expansion_tests/builtin_derive_macro.rs
index 86b4466153..89c1b44608 100644
--- a/crates/hir-def/src/macro_expansion_tests/builtin_derive_macro.rs
+++ b/crates/hir-def/src/macro_expansion_tests/builtin_derive_macro.rs
@@ -528,3 +528,121 @@ impl < > $crate::fmt::Debug for Command< > where {
}"#]],
);
}
+#[test]
+fn test_debug_expand_with_cfg() {
+ check(
+ r#"
+ //- minicore: derive, fmt
+ use core::fmt::Debug;
+
+ #[derive(Debug)]
+ struct HideAndShow {
+ #[cfg(never)]
+ always_hide: u32,
+ #[cfg(not(never))]
+ always_show: u32,
+ }
+ #[derive(Debug)]
+ enum HideAndShowEnum {
+ #[cfg(never)]
+ AlwaysHide,
+ #[cfg(not(never))]
+ AlwaysShow{
+ #[cfg(never)]
+ always_hide: u32,
+ #[cfg(not(never))]
+ always_show: u32,
+ }
+ }
+ "#,
+ expect![[r#"
+use core::fmt::Debug;
+
+#[derive(Debug)]
+struct HideAndShow {
+ #[cfg(never)]
+ always_hide: u32,
+ #[cfg(not(never))]
+ always_show: u32,
+}
+#[derive(Debug)]
+enum HideAndShowEnum {
+ #[cfg(never)]
+ AlwaysHide,
+ #[cfg(not(never))]
+ AlwaysShow{
+ #[cfg(never)]
+ always_hide: u32,
+ #[cfg(not(never))]
+ always_show: u32,
+ }
+}
+
+impl < > $crate::fmt::Debug for HideAndShow< > where {
+ fn fmt(&self , f: &mut $crate::fmt::Formatter) -> $crate::fmt::Result {
+ match self {
+ HideAndShow {
+ always_show: always_show,
+ }
+ =>f.debug_struct("HideAndShow").field("always_show", &always_show).finish()
+ }
+ }
+}
+impl < > $crate::fmt::Debug for HideAndShowEnum< > where {
+ fn fmt(&self , f: &mut $crate::fmt::Formatter) -> $crate::fmt::Result {
+ match self {
+ HideAndShowEnum::AlwaysShow {
+ always_show: always_show,
+ }
+ =>f.debug_struct("AlwaysShow").field("always_show", &always_show).finish(),
+ }
+ }
+}"#]],
+ );
+}
+#[test]
+fn test_default_expand_with_cfg() {
+ check(
+ r#"
+//- minicore: derive, default
+#[derive(Default)]
+struct Foo {
+ field1: i32,
+ #[cfg(never)]
+ field2: (),
+}
+#[derive(Default)]
+enum Bar {
+ Foo,
+ #[cfg_attr(not(never), default)]
+ Bar,
+}
+"#,
+ expect![[r#"
+#[derive(Default)]
+struct Foo {
+ field1: i32,
+ #[cfg(never)]
+ field2: (),
+}
+#[derive(Default)]
+enum Bar {
+ Foo,
+ #[cfg_attr(not(never), default)]
+ Bar,
+}
+
+impl < > $crate::default::Default for Foo< > where {
+ fn default() -> Self {
+ Foo {
+ field1: $crate::default::Default::default(),
+ }
+ }
+}
+impl < > $crate::default::Default for Bar< > where {
+ fn default() -> Self {
+ Bar::Bar
+ }
+}"#]],
+ );
+}