From c435a5f17fe5a5028aedac0b56f57f45da0710cb Mon Sep 17 00:00:00 2001 From: Lukas Wirth Date: Mon, 1 Dec 2025 16:28:18 +0100 Subject: [PATCH] fix: Fix proc-macro-srv passing invalid extra none group to proc-macros --- .../src/legacy_protocol/msg/flat.rs | 4 +--- .../crates/proc-macro-srv/src/tests/mod.rs | 18 +++++++++++++++--- 2 files changed, 16 insertions(+), 6 deletions(-) diff --git a/src/tools/rust-analyzer/crates/proc-macro-api/src/legacy_protocol/msg/flat.rs b/src/tools/rust-analyzer/crates/proc-macro-api/src/legacy_protocol/msg/flat.rs index 425bd9bb37a52..92e9038554eb6 100644 --- a/src/tools/rust-analyzer/crates/proc-macro-api/src/legacy_protocol/msg/flat.rs +++ b/src/tools/rust-analyzer/crates/proc-macro-api/src/legacy_protocol/msg/flat.rs @@ -962,8 +962,6 @@ impl Reader<'_, T> { }; res[i] = Some(g); } - proc_macro_srv::TokenStream::new(vec![proc_macro_srv::TokenTree::Group( - res[0].take().unwrap(), - )]) + res[0].take().unwrap().stream.unwrap_or_default() } } diff --git a/src/tools/rust-analyzer/crates/proc-macro-srv/src/tests/mod.rs b/src/tools/rust-analyzer/crates/proc-macro-srv/src/tests/mod.rs index ad3d9eef957f2..20507a6def54d 100644 --- a/src/tools/rust-analyzer/crates/proc-macro-srv/src/tests/mod.rs +++ b/src/tools/rust-analyzer/crates/proc-macro-srv/src/tests/mod.rs @@ -297,26 +297,38 @@ fn test_fn_like_macro_noop() { fn test_fn_like_macro_clone_ident_subtree() { assert_expand( "fn_like_clone_tokens", - r#"ident, []"#, + r#"ident, [ident2, ident3]"#, expect![[r#" IDENT 1 ident PUNCT 1 , [alone] GROUP [] 1 1 1 + IDENT 1 ident2 + PUNCT 1 , [alone] + IDENT 1 ident3 IDENT 1 ident PUNCT 1 , [alone] GROUP [] 1 1 1 + IDENT 1 ident2 + PUNCT 1 , [alone] + IDENT 1 ident3 "#]], expect![[r#" IDENT 42:Root[0000, 0]@0..5#ROOT2024 ident PUNCT 42:Root[0000, 0]@5..6#ROOT2024 , [alone] - GROUP [] 42:Root[0000, 0]@7..8#ROOT2024 42:Root[0000, 0]@8..9#ROOT2024 42:Root[0000, 0]@7..9#ROOT2024 + GROUP [] 42:Root[0000, 0]@7..8#ROOT2024 42:Root[0000, 0]@22..23#ROOT2024 42:Root[0000, 0]@7..23#ROOT2024 + IDENT 42:Root[0000, 0]@8..14#ROOT2024 ident2 + PUNCT 42:Root[0000, 0]@14..15#ROOT2024 , [alone] + IDENT 42:Root[0000, 0]@16..22#ROOT2024 ident3 IDENT 42:Root[0000, 0]@0..5#ROOT2024 ident PUNCT 42:Root[0000, 0]@5..6#ROOT2024 , [alone] - GROUP [] 42:Root[0000, 0]@7..9#ROOT2024 42:Root[0000, 0]@7..9#ROOT2024 42:Root[0000, 0]@7..9#ROOT2024 + GROUP [] 42:Root[0000, 0]@7..23#ROOT2024 42:Root[0000, 0]@7..23#ROOT2024 42:Root[0000, 0]@7..23#ROOT2024 + IDENT 42:Root[0000, 0]@8..14#ROOT2024 ident2 + PUNCT 42:Root[0000, 0]@14..15#ROOT2024 , [alone] + IDENT 42:Root[0000, 0]@16..22#ROOT2024 ident3 "#]], ); }