Unnamed repository; edit this file 'description' to name the repository.
Merge #11200
11200: Always put a space after dyn in macro pretty-printing r=Veykril a=jplatte Fixes #11100. Co-authored-by: Jonas Platte <[email protected]>
bors[bot] 2022-01-06
parent 97838b1 · parent b8f4667 · commit 149981f
-rw-r--r--crates/ide_assists/src/handlers/add_missing_impl_members.rs41
-rw-r--r--crates/ide_db/src/helpers/insert_whitespace_into_node.rs2
2 files changed, 42 insertions, 1 deletions
diff --git a/crates/ide_assists/src/handlers/add_missing_impl_members.rs b/crates/ide_assists/src/handlers/add_missing_impl_members.rs
index a10eca10d1..b6af72cbac 100644
--- a/crates/ide_assists/src/handlers/add_missing_impl_members.rs
+++ b/crates/ide_assists/src/handlers/add_missing_impl_members.rs
@@ -942,4 +942,45 @@ impl FooB for Foo {
"#,
)
}
+
+ #[test]
+ fn macro_trait_dyn_absolute_path() {
+ // https://github.com/rust-analyzer/rust-analyzer/issues/11100
+ check_assist(
+ add_missing_impl_members,
+ r#"
+macro_rules! foo {
+ () => {
+ trait MacroTrait {
+ fn trait_method(_: &dyn ::core::marker::Sized);
+ }
+ }
+}
+foo!();
+struct Foo;
+
+impl MacroTrait for Foo {
+ $0
+}
+"#,
+ r#"
+macro_rules! foo {
+ () => {
+ trait MacroTrait {
+ fn trait_method(_: &dyn ::core::marker::Sized);
+ }
+ }
+}
+foo!();
+struct Foo;
+
+impl MacroTrait for Foo {
+ fn trait_method(_: &dyn ::core::marker::Sized) {
+ ${0:todo!()}
+ }
+
+}
+"#,
+ )
+ }
}
diff --git a/crates/ide_db/src/helpers/insert_whitespace_into_node.rs b/crates/ide_db/src/helpers/insert_whitespace_into_node.rs
index 251a4caa13..9d31966cea 100644
--- a/crates/ide_db/src/helpers/insert_whitespace_into_node.rs
+++ b/crates/ide_db/src/helpers/insert_whitespace_into_node.rs
@@ -88,7 +88,7 @@ pub fn insert_ws_into(syn: SyntaxNode) -> SyntaxNode {
LIFETIME_IDENT if is_next(|it| is_text(it), true) => {
mods.push(do_ws(after, tok));
}
- AS_KW => {
+ AS_KW | DYN_KW => {
mods.push(do_ws(after, tok));
}
T![;] => {