Unnamed repository; edit this file 'description' to name the repository.
-rw-r--r--crates/hir_def/src/macro_expansion_tests/proc_macros.rs3
-rw-r--r--crates/hir_expand/src/db.rs4
-rw-r--r--crates/mbe/src/syntax_bridge.rs2
3 files changed, 5 insertions, 4 deletions
diff --git a/crates/hir_def/src/macro_expansion_tests/proc_macros.rs b/crates/hir_def/src/macro_expansion_tests/proc_macros.rs
index e0c5367cf3..0ca30fb799 100644
--- a/crates/hir_def/src/macro_expansion_tests/proc_macros.rs
+++ b/crates/hir_def/src/macro_expansion_tests/proc_macros.rs
@@ -76,7 +76,6 @@ fn foo() {
#[test]
fn attribute_macro_syntax_completion_2() {
// common case of dot completion while typing
- // right now not working
check(
r#"
//- proc_macros: identity_when_valid
@@ -88,7 +87,7 @@ fn foo() { bar.; blub }
fn foo() { bar.; blub }
fn foo() {
- bar.;
+ bar. ;
blub
}"##]],
);
diff --git a/crates/hir_expand/src/db.rs b/crates/hir_expand/src/db.rs
index 6576701817..935fb30fa9 100644
--- a/crates/hir_expand/src/db.rs
+++ b/crates/hir_expand/src/db.rs
@@ -430,7 +430,7 @@ fn macro_expand(db: &dyn AstDatabase, id: MacroCallId) -> ExpandResult<Option<Ar
// be reported at the definition site (when we construct a def map).
Err(err) => return ExpandResult::str_err(format!("invalid macro definition: {}", err)),
};
- let ExpandResult { value: tt, err } = expander.expand(db, id, &macro_arg.0);
+ let ExpandResult { value: mut tt, err } = expander.expand(db, id, &macro_arg.0);
// Set a hard limit for the expanded tt
let count = tt.count();
// XXX: Make ExpandResult a real error and use .map_err instead?
@@ -442,6 +442,8 @@ fn macro_expand(db: &dyn AstDatabase, id: MacroCallId) -> ExpandResult<Option<Ar
));
}
+ fixup::reverse_fixups(&mut tt);
+
ExpandResult { value: Some(Arc::new(tt)), err }
}
diff --git a/crates/mbe/src/syntax_bridge.rs b/crates/mbe/src/syntax_bridge.rs
index d3ba28f3bc..d3489813e1 100644
--- a/crates/mbe/src/syntax_bridge.rs
+++ b/crates/mbe/src/syntax_bridge.rs
@@ -1,7 +1,7 @@
//! Conversions between [`SyntaxNode`] and [`tt::TokenTree`].
use rustc_hash::{FxHashMap, FxHashSet};
-use stdx::{non_empty_vec::NonEmptyVec, always};
+use stdx::{always, non_empty_vec::NonEmptyVec};
use syntax::{
ast::{self, make::tokens::doc_comment},
AstToken, Parse, PreorderWithTokens, SmolStr, SyntaxElement, SyntaxKind,