diff --git a/crates/hir/src/display.rs b/crates/hir/src/display.rs index 8f80f3a5db..6e3285fd4f 100644 --- a/crates/hir/src/display.rs +++ b/crates/hir/src/display.rs @@ -18,8 +18,8 @@ use syntax::SmolStr; use crate::{ Adt, Const, ConstParam, Enum, Field, Function, GenericParam, HasCrate, HasVisibility, - LifetimeParam, Module, Static, Struct, Trait, TyBuilder, Type, TypeAlias, TypeOrConstParam, - TypeParam, Union, Variant, + LifetimeParam, Macro, Module, Static, Struct, Trait, TyBuilder, Type, TypeAlias, + TypeOrConstParam, TypeParam, Union, Variant, }; impl HirDisplay for Function { @@ -509,3 +509,14 @@ impl HirDisplay for Module { } } } + +impl HirDisplay for Macro { + fn hir_fmt(&self, f: &mut HirFormatter) -> Result<(), HirDisplayError> { + match self.id { + hir_def::MacroId::Macro2Id(_) => write!(f, "macro"), + hir_def::MacroId::MacroRulesId(_) => write!(f, "macro_rules!"), + hir_def::MacroId::ProcMacroId(_) => write!(f, "proc_macro"), + }?; + write!(f, " {}", self.name(f.db)) + } +} diff --git a/crates/ide/src/hover/render.rs b/crates/ide/src/hover/render.rs index c298065f4e..2e141600e8 100644 --- a/crates/ide/src/hover/render.rs +++ b/crates/ide/src/hover/render.rs @@ -2,7 +2,7 @@ use std::fmt::Display; use either::Either; -use hir::{AsAssocItem, AttributeTemplate, HasAttrs, HasSource, HirDisplay, Semantics, TypeInfo}; +use hir::{AsAssocItem, AttributeTemplate, HasAttrs, HirDisplay, Semantics, TypeInfo}; use ide_db::{ base_db::SourceDatabase, defs::Definition, @@ -13,9 +13,7 @@ use ide_db::{ use itertools::Itertools; use stdx::format_to; use syntax::{ - algo, ast, - display::{fn_as_proc_macro_label, macro_label}, - match_ast, AstNode, Direction, + algo, ast, match_ast, AstNode, Direction, SyntaxKind::{LET_EXPR, LET_STMT}, SyntaxToken, T, }; @@ -342,14 +340,8 @@ pub(super) fn definition( ) -> Option { let mod_path = definition_mod_path(db, &def); let (label, docs) = match def { - Definition::Macro(it) => ( - match &it.source(db)?.value { - Either::Left(mac) => macro_label(mac), - Either::Right(mac_fn) => fn_as_proc_macro_label(mac_fn), - }, - it.attrs(db).docs(), - ), - Definition::Field(def) => label_and_docs(db, def), + Definition::Macro(it) => label_and_docs(db, it), + Definition::Field(it) => label_and_docs(db, it), Definition::Module(it) => label_and_docs(db, it), Definition::Function(it) => label_and_docs(db, it), Definition::Adt(it) => label_and_docs(db, it), diff --git a/crates/ide/src/hover/tests.rs b/crates/ide/src/hover/tests.rs index 2ec7802394..df27f935c8 100644 --- a/crates/ide/src/hover/tests.rs +++ b/crates/ide/src/hover/tests.rs @@ -4102,16 +4102,16 @@ identity!{ } "#, expect![[r#" - *Copy* + *Copy* - ```rust - test - ``` + ```rust + test + ``` - ```rust - pub macro Copy - ``` - "#]], + ```rust + macro Copy + ``` + "#]], ); } @@ -4126,16 +4126,16 @@ pub macro Copy {} struct Foo; "#, expect![[r#" - *Copy* + *Copy* - ```rust - test - ``` + ```rust + test + ``` - ```rust - pub macro Copy - ``` - "#]], + ```rust + macro Copy + ``` + "#]], ); check( r#" @@ -4148,16 +4148,16 @@ mod foo { struct Foo; "#, expect![[r#" - *Copy* + *Copy* - ```rust - test::foo - ``` + ```rust + test::foo + ``` - ```rust - pub macro Copy - ``` - "#]], + ```rust + macro Copy + ``` + "#]], ); } diff --git a/crates/ide_completion/src/completions/qualified_path.rs b/crates/ide_completion/src/completions/qualified_path.rs index bf389fb6eb..acd02616b1 100644 --- a/crates/ide_completion/src/completions/qualified_path.rs +++ b/crates/ide_completion/src/completions/qualified_path.rs @@ -421,10 +421,10 @@ macro_rules! foo { () => {} } fn main() { let _ = crate::$0 } "#, - expect![[r##" + expect![[r#" fn main() fn() - ma foo!(…) #[macro_export] macro_rules! foo - "##]], + ma foo!(…) macro_rules! foo + "#]], ); } diff --git a/crates/ide_completion/src/completions/unqualified_path.rs b/crates/ide_completion/src/completions/unqualified_path.rs index c89102e1c3..235d7870c7 100644 --- a/crates/ide_completion/src/completions/unqualified_path.rs +++ b/crates/ide_completion/src/completions/unqualified_path.rs @@ -208,12 +208,12 @@ mod macros { macro_rules! concat { } } "#, - expect![[r##" + expect![[r#" fn f() fn() - ma concat!(…) #[macro_export] macro_rules! concat + ma concat!(…) macro_rules! concat md std bt u32 - "##]], + "#]], ); } diff --git a/crates/ide_completion/src/render/macro_.rs b/crates/ide_completion/src/render/macro_.rs index 29c9d56164..d3b0de429c 100644 --- a/crates/ide_completion/src/render/macro_.rs +++ b/crates/ide_completion/src/render/macro_.rs @@ -1,12 +1,8 @@ //! Renderer for macro invocations. -use either::Either; -use hir::{Documentation, HasSource, InFile, Semantics}; -use ide_db::{RootDatabase, SymbolKind}; -use syntax::{ - display::{fn_as_proc_macro_label, macro_label}, - SmolStr, -}; +use hir::{Documentation, HirDisplay}; +use ide_db::SymbolKind; +use syntax::SmolStr; use crate::{ context::PathKind, @@ -52,7 +48,7 @@ fn render( label(&ctx, needs_bang, bra, ket, &name), ); item.set_deprecated(ctx.is_deprecated(macro_)) - .set_detail(detail(&completion.sema, macro_)) + .detail(macro_.display(completion.db).to_string()) .set_documentation(docs) .set_relevance(ctx.completion_relevance()); @@ -103,18 +99,6 @@ fn banged_name(name: &str) -> SmolStr { SmolStr::from_iter([name, "!"]) } -fn detail(sema: &Semantics, macro_: hir::Macro) -> Option { - // FIXME: This is parsing the file! - let InFile { file_id, value } = macro_.source(sema.db)?; - let _ = sema.parse_or_expand(file_id); - let detail = match value { - Either::Left(node) => macro_label(&node), - // FIXME: this should render with the derive name, not the function name - Either::Right(node) => fn_as_proc_macro_label(&node), - }; - Some(detail) -} - fn guess_macro_braces(macro_name: &str, docs: &str) -> (&'static str, &'static str) { let mut votes = [0, 0, 0]; for (idx, s) in docs.match_indices(¯o_name) { diff --git a/crates/ide_completion/src/tests/attribute.rs b/crates/ide_completion/src/tests/attribute.rs index 647fd742e6..4ee95e8928 100644 --- a/crates/ide_completion/src/tests/attribute.rs +++ b/crates/ide_completion/src/tests/attribute.rs @@ -62,7 +62,7 @@ fn proc_macros_qualified() { struct Foo; "#, expect![[r#" - at identity pub macro identity + at identity proc_macro identity "#]], ) } @@ -302,7 +302,7 @@ struct Foo; "#, expect![[r#" md core - at derive pub macro derive + at derive macro derive kw self:: kw super:: kw crate:: @@ -689,12 +689,12 @@ mod derive { "#, expect![[r#" md core - de Default pub macro Default + de Default macro Default de Clone, Copy - de PartialEq pub macro PartialEq + de PartialEq macro PartialEq de PartialEq, Eq de PartialEq, Eq, PartialOrd, Ord - de Clone pub macro Clone + de Clone macro Clone de PartialEq, PartialOrd kw self:: kw super:: @@ -712,11 +712,11 @@ mod derive { "#, expect![[r#" md core - de Default pub macro Default + de Default macro Default de Clone, Copy de Eq de Eq, PartialOrd, Ord - de Clone pub macro Clone + de Clone macro Clone de PartialOrd kw self:: kw super:: @@ -734,17 +734,17 @@ mod derive { "#, expect![[r#" md core - de Default pub macro Default + de Default macro Default de Clone, Copy de Eq de Eq, PartialOrd, Ord - de Clone pub macro Clone + de Clone macro Clone de PartialOrd kw self:: kw super:: kw crate:: "#]], - ) + ); } #[test] @@ -761,7 +761,7 @@ mod derive { kw self:: kw super:: kw crate:: - de DeriveIdentity (use proc_macros::DeriveIdentity) pub macro derive_identity + de DeriveIdentity (use proc_macros::DeriveIdentity) proc_macro DeriveIdentity "#]], ); check_derive( @@ -772,7 +772,7 @@ use proc_macros::DeriveIdentity; #[derive(der$0)] struct Test; "#, expect![[r#" - de DeriveIdentity pub macro derive_identity + de DeriveIdentity proc_macro DeriveIdentity md proc_macros md core kw self:: @@ -808,7 +808,7 @@ use proc_macros::DeriveIdentity; #[derive(proc_macros::$0)] struct Test; "#, expect![[r#" - de DeriveIdentity pub macro derive_identity + de DeriveIdentity proc_macro DeriveIdentity "#]], ); check_derive( @@ -818,7 +818,7 @@ use proc_macros::DeriveIdentity; #[derive(proc_macros::C$0)] struct Test; "#, expect![[r#" - de DeriveIdentity pub macro derive_identity + de DeriveIdentity proc_macro DeriveIdentity "#]], ); } diff --git a/crates/ide_completion/src/tests/expression.rs b/crates/ide_completion/src/tests/expression.rs index 5e1fae68fd..a841605e49 100644 --- a/crates/ide_completion/src/tests/expression.rs +++ b/crates/ide_completion/src/tests/expression.rs @@ -30,7 +30,7 @@ fn baz() { } "#, // This should not contain `FooDesc {…}`. - expect![[r##" + expect![[r#" kw unsafe kw match kw while @@ -57,13 +57,13 @@ fn baz() { fn baz() fn() st Unit md _69latrick - ma makro!(…) #[macro_export] macro_rules! makro + ma makro!(…) macro_rules! makro fn function() fn() sc STATIC un Union ev TupleV(…) (u32) ct CONST - "##]], + "#]], ) } @@ -125,7 +125,7 @@ impl Unit { } "#, // `self` is in here twice, once as the module, once as the local - expect![[r##" + expect![[r#" me self.foo() fn(self) kw unsafe kw fn @@ -166,14 +166,14 @@ impl Unit { md module st Unit md qualified - ma makro!(…) #[macro_export] macro_rules! makro + ma makro!(…) macro_rules! makro ?? Unresolved fn function() fn() sc STATIC un Union ev TupleV(…) (u32) ct CONST - "##]], + "#]], ); check( r#" @@ -187,7 +187,7 @@ impl Unit { } } "#, - expect![[r##" + expect![[r#" tt Trait en Enum st Record @@ -195,14 +195,14 @@ impl Unit { md module st Unit md qualified - ma makro!(…) #[macro_export] macro_rules! makro + ma makro!(…) macro_rules! makro ?? Unresolved fn function() fn() sc STATIC un Union ev TupleV(…) (u32) ct CONST - "##]], + "#]], ); } diff --git a/crates/ide_completion/src/tests/flyimport.rs b/crates/ide_completion/src/tests/flyimport.rs index fbef6d9937..c996a5f01f 100644 --- a/crates/ide_completion/src/tests/flyimport.rs +++ b/crates/ide_completion/src/tests/flyimport.rs @@ -1108,7 +1108,7 @@ fn flyimport_attribute() { struct Foo; "#, expect![[r#" - at identity (use proc_macros::identity) pub macro identity + at identity (use proc_macros::identity) proc_macro identity "#]], ); check_edit( diff --git a/crates/ide_completion/src/tests/item.rs b/crates/ide_completion/src/tests/item.rs index d94fab2f5f..1d5ddc092e 100644 --- a/crates/ide_completion/src/tests/item.rs +++ b/crates/ide_completion/src/tests/item.rs @@ -17,7 +17,7 @@ fn target_type_or_trait_in_impl_block() { r#" impl Tra$0 "#, - expect![[r##" + expect![[r#" kw self kw super kw crate @@ -27,10 +27,10 @@ impl Tra$0 st Tuple md module st Unit - ma makro!(…) #[macro_export] macro_rules! makro + ma makro!(…) macro_rules! makro un Union bt u32 - "##]], + "#]], ) } @@ -40,7 +40,7 @@ fn target_type_in_trait_impl_block() { r#" impl Trait for Str$0 "#, - expect![[r##" + expect![[r#" kw self kw super kw crate @@ -50,10 +50,10 @@ impl Trait for Str$0 st Tuple md module st Unit - ma makro!(…) #[macro_export] macro_rules! makro + ma makro!(…) macro_rules! makro un Union bt u32 - "##]], + "#]], ) } @@ -85,7 +85,7 @@ fn after_struct_name() { // FIXME: This should emit `kw where` only check( r"struct Struct $0", - expect![[r##" + expect![[r#" kw pub(crate) kw pub(super) kw pub @@ -109,8 +109,8 @@ fn after_struct_name() { kw super kw crate md module - ma makro!(…) #[macro_export] macro_rules! makro - "##]], + ma makro!(…) macro_rules! makro + "#]], ); } @@ -119,7 +119,7 @@ fn after_fn_name() { // FIXME: This should emit `kw where` only check( r"fn func() $0", - expect![[r##" + expect![[r#" kw pub(crate) kw pub(super) kw pub @@ -143,8 +143,8 @@ fn after_fn_name() { kw super kw crate md module - ma makro!(…) #[macro_export] macro_rules! makro - "##]], + ma makro!(…) macro_rules! makro + "#]], ); } diff --git a/crates/ide_completion/src/tests/item_list.rs b/crates/ide_completion/src/tests/item_list.rs index 4c76963054..82824fd393 100644 --- a/crates/ide_completion/src/tests/item_list.rs +++ b/crates/ide_completion/src/tests/item_list.rs @@ -12,7 +12,7 @@ fn check(ra_fixture: &str, expect: Expect) { fn in_mod_item_list() { check( r#"mod tests { $0 }"#, - expect![[r##" + expect![[r#" kw pub(crate) kw pub(super) kw pub @@ -35,8 +35,8 @@ fn in_mod_item_list() { kw self kw super kw crate - ma makro!(…) #[macro_export] macro_rules! makro - "##]], + ma makro!(…) macro_rules! makro + "#]], ) } @@ -44,7 +44,7 @@ fn in_mod_item_list() { fn in_source_file_item_list() { check( r#"$0"#, - expect![[r##" + expect![[r#" kw pub(crate) kw pub(super) kw pub @@ -68,8 +68,8 @@ fn in_source_file_item_list() { kw super kw crate md module - ma makro!(…) #[macro_export] macro_rules! makro - "##]], + ma makro!(…) macro_rules! makro + "#]], ) } @@ -106,10 +106,10 @@ fn in_qualified_path() { cov_mark::check!(no_keyword_completion_in_non_trivial_path); check( r#"crate::$0"#, - expect![[r##" + expect![[r#" md module - ma makro!(…) #[macro_export] macro_rules! makro - "##]], + ma makro!(…) macro_rules! makro + "#]], ) } @@ -162,7 +162,7 @@ fn after_visibility_unsafe() { fn in_impl_assoc_item_list() { check( r#"impl Struct { $0 }"#, - expect![[r##" + expect![[r#" kw pub(crate) kw pub(super) kw pub @@ -174,8 +174,8 @@ fn in_impl_assoc_item_list() { kw super kw crate md module - ma makro!(…) #[macro_export] macro_rules! makro - "##]], + ma makro!(…) macro_rules! makro + "#]], ) } @@ -199,7 +199,7 @@ fn in_impl_assoc_item_list_after_attr() { fn in_trait_assoc_item_list() { check( r"trait Foo { $0 }", - expect![[r##" + expect![[r#" kw unsafe kw fn kw const @@ -208,8 +208,8 @@ fn in_trait_assoc_item_list() { kw super kw crate md module - ma makro!(…) #[macro_export] macro_rules! makro - "##]], + ma makro!(…) macro_rules! makro + "#]], ); } @@ -233,7 +233,7 @@ impl Test for () { $0 } "#, - expect![[r##" + expect![[r#" kw pub(crate) kw pub(super) kw pub @@ -245,7 +245,7 @@ impl Test for () { kw super kw crate md module - ma makro!(…) #[macro_export] macro_rules! makro - "##]], + ma makro!(…) macro_rules! makro + "#]], ); } diff --git a/crates/ide_completion/src/tests/pattern.rs b/crates/ide_completion/src/tests/pattern.rs index fe53257672..0ca20f93b5 100644 --- a/crates/ide_completion/src/tests/pattern.rs +++ b/crates/ide_completion/src/tests/pattern.rs @@ -102,7 +102,7 @@ fn foo() { if let a$0 } "#, - expect![[r##" + expect![[r#" kw ref kw mut en Enum @@ -112,11 +112,11 @@ fn foo() { st Tuple md module st Unit - ma makro!(…) #[macro_export] macro_rules! makro + ma makro!(…) macro_rules! makro bn TupleV TupleV($1)$0 ev TupleV ct CONST - "##]], + "#]], ); } @@ -132,7 +132,7 @@ fn foo() { let a$0 } "#, - expect![[r##" + expect![[r#" kw ref kw mut bn Record Record { field$1 }$0 @@ -142,8 +142,8 @@ fn foo() { ev Variant en SingleVariantEnum st Unit - ma makro!(…) #[macro_export] macro_rules! makro - "##]], + ma makro!(…) macro_rules! makro + "#]], ); } @@ -154,7 +154,7 @@ fn in_param() { fn foo(a$0) { } "#, - expect![[r##" + expect![[r#" kw ref kw mut bn Record Record { field$1 }: Record$0 @@ -162,15 +162,15 @@ fn foo(a$0) { bn Tuple Tuple($1): Tuple$0 st Tuple st Unit - ma makro!(…) #[macro_export] macro_rules! makro - "##]], + ma makro!(…) macro_rules! makro + "#]], ); check( r#" fn foo(a$0: Tuple) { } "#, - expect![[r##" + expect![[r#" kw ref kw mut bn Record Record { field$1 }$0 @@ -178,8 +178,8 @@ fn foo(a$0: Tuple) { bn Tuple Tuple($1)$0 st Tuple st Unit - ma makro!(…) #[macro_export] macro_rules! makro - "##]], + ma makro!(…) macro_rules! makro + "#]], ); } diff --git a/crates/ide_completion/src/tests/predicate.rs b/crates/ide_completion/src/tests/predicate.rs index 163080307d..5e975d715f 100644 --- a/crates/ide_completion/src/tests/predicate.rs +++ b/crates/ide_completion/src/tests/predicate.rs @@ -15,7 +15,7 @@ fn predicate_start() { r#" struct Foo<'lt, T, const C: usize> where $0 {} "#, - expect![[r##" + expect![[r#" kw self kw super kw crate @@ -26,10 +26,10 @@ struct Foo<'lt, T, const C: usize> where $0 {} md module st Foo<…> st Unit - ma makro!(…) #[macro_export] macro_rules! makro + ma makro!(…) macro_rules! makro un Union bt u32 - "##]], + "#]], ); } @@ -39,14 +39,14 @@ fn bound_for_type_pred() { r#" struct Foo<'lt, T, const C: usize> where T: $0 {} "#, - expect![[r##" + expect![[r#" kw self kw super kw crate tt Trait md module - ma makro!(…) #[macro_export] macro_rules! makro - "##]], + ma makro!(…) macro_rules! makro + "#]], ); } @@ -58,14 +58,14 @@ fn bound_for_lifetime_pred() { r#" struct Foo<'lt, T, const C: usize> where 'lt: $0 {} "#, - expect![[r##" + expect![[r#" kw self kw super kw crate tt Trait md module - ma makro!(…) #[macro_export] macro_rules! makro - "##]], + ma makro!(…) macro_rules! makro + "#]], ); } @@ -75,14 +75,14 @@ fn bound_for_for_pred() { r#" struct Foo<'lt, T, const C: usize> where for<'a> T: $0 {} "#, - expect![[r##" + expect![[r#" kw self kw super kw crate tt Trait md module - ma makro!(…) #[macro_export] macro_rules! makro - "##]], + ma makro!(…) macro_rules! makro + "#]], ); } @@ -92,7 +92,7 @@ fn param_list_for_for_pred() { r#" struct Foo<'lt, T, const C: usize> where for<'a> $0 {} "#, - expect![[r##" + expect![[r#" kw self kw super kw crate @@ -103,10 +103,10 @@ struct Foo<'lt, T, const C: usize> where for<'a> $0 {} md module st Foo<…> st Unit - ma makro!(…) #[macro_export] macro_rules! makro + ma makro!(…) macro_rules! makro un Union bt u32 - "##]], + "#]], ); } @@ -118,7 +118,7 @@ impl Record { fn method(self) where $0 {} } "#, - expect![[r##" + expect![[r#" kw self kw super kw crate @@ -129,9 +129,9 @@ impl Record { st Tuple md module st Unit - ma makro!(…) #[macro_export] macro_rules! makro + ma makro!(…) macro_rules! makro un Union bt u32 - "##]], + "#]], ); } diff --git a/crates/ide_completion/src/tests/type_pos.rs b/crates/ide_completion/src/tests/type_pos.rs index d6c1a787ff..c8260f6e23 100644 --- a/crates/ide_completion/src/tests/type_pos.rs +++ b/crates/ide_completion/src/tests/type_pos.rs @@ -16,7 +16,7 @@ struct Foo<'lt, T, const C: usize> { f: $0 } "#, - expect![[r##" + expect![[r#" kw self kw super kw crate @@ -29,10 +29,10 @@ struct Foo<'lt, T, const C: usize> { md module st Foo<…> st Unit - ma makro!(…) #[macro_export] macro_rules! makro + ma makro!(…) macro_rules! makro un Union bt u32 - "##]], + "#]], ) } @@ -42,7 +42,7 @@ fn tuple_struct_field() { r#" struct Foo<'lt, T, const C: usize>(f$0); "#, - expect![[r##" + expect![[r#" kw pub(crate) kw pub(super) kw pub @@ -58,10 +58,10 @@ struct Foo<'lt, T, const C: usize>(f$0); md module st Foo<…> st Unit - ma makro!(…) #[macro_export] macro_rules! makro + ma makro!(…) macro_rules! makro un Union bt u32 - "##]], + "#]], ) } @@ -71,7 +71,7 @@ fn fn_return_type() { r#" fn x<'lt, T, const C: usize>() -> $0 "#, - expect![[r##" + expect![[r#" kw self kw super kw crate @@ -82,10 +82,10 @@ fn x<'lt, T, const C: usize>() -> $0 st Tuple md module st Unit - ma makro!(…) #[macro_export] macro_rules! makro + ma makro!(…) macro_rules! makro un Union bt u32 - "##]], + "#]], ); } @@ -98,7 +98,7 @@ fn foo<'lt, T, const C: usize>() { let _: $0; } "#, - expect![[r##" + expect![[r#" kw self kw super kw crate @@ -109,10 +109,10 @@ fn foo<'lt, T, const C: usize>() { st Tuple md module st Unit - ma makro!(…) #[macro_export] macro_rules! makro + ma makro!(…) macro_rules! makro un Union bt u32 - "##]], + "#]], ); check( r#" @@ -121,16 +121,16 @@ fn foo<'lt, T, const C: usize>() { let _: self::$0; } "#, - expect![[r##" + expect![[r#" tt Trait en Enum st Record st Tuple md module st Unit - ma makro!(…) #[macro_export] macro_rules! makro + ma makro!(…) macro_rules! makro un Union - "##]], + "#]], ); } @@ -144,7 +144,7 @@ trait Trait2 { fn foo<'lt, T: Trait2<$0>, const CONST_PARAM: usize>(_: T) {} "#, - expect![[r##" + expect![[r#" kw self kw super kw crate @@ -157,12 +157,12 @@ fn foo<'lt, T: Trait2<$0>, const CONST_PARAM: usize>(_: T) {} st Tuple md module st Unit - ma makro!(…) #[macro_export] macro_rules! makro + ma makro!(…) macro_rules! makro tt Trait2 un Union ct CONST bt u32 - "##]], + "#]], ); check( r#" @@ -172,18 +172,18 @@ trait Trait2 { fn foo<'lt, T: Trait2, const CONST_PARAM: usize>(_: T) {} "#, - expect![[r##" + expect![[r#" tt Trait en Enum st Record st Tuple md module st Unit - ma makro!(…) #[macro_export] macro_rules! makro + ma makro!(…) macro_rules! makro tt Trait2 un Union ct CONST - "##]], + "#]], ); } diff --git a/crates/syntax/src/display.rs b/crates/syntax/src/display.rs index d03e94d058..f7322656a3 100644 --- a/crates/syntax/src/display.rs +++ b/crates/syntax/src/display.rs @@ -1,6 +1,6 @@ //! This module contains utilities for rendering syntax nodes into a string representing their signature. -use crate::ast::{self, HasAttrs, HasGenericParams, HasName}; +use crate::ast::{self, HasGenericParams, HasName}; use ast::HasVisibility; use stdx::format_to; @@ -49,37 +49,3 @@ pub fn function_declaration(node: &ast::Fn) -> String { } buf } - -pub fn macro_label(node: &ast::Macro) -> String { - let name = node.name(); - let mut s = String::new(); - match node { - ast::Macro::MacroRules(node) => { - let vis = if node.has_atom_attr("macro_export") { "#[macro_export] " } else { "" }; - format_to!(s, "{}macro_rules!", vis); - } - ast::Macro::MacroDef(node) => { - if let Some(vis) = node.visibility() { - format_to!(s, "{} ", vis); - } - format_to!(s, "macro"); - } - } - if let Some(name) = name { - format_to!(s, " {}", name); - } - s -} - -pub fn fn_as_proc_macro_label(node: &ast::Fn) -> String { - let name = node.name(); - let mut s = String::new(); - if let Some(vis) = node.visibility() { - format_to!(s, "{} ", vis); - } - format_to!(s, "macro"); - if let Some(name) = name { - format_to!(s, " {}", name); - } - s -}