Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'crates/ide/src/expand_macro.rs')
-rw-r--r--crates/ide/src/expand_macro.rs17
1 files changed, 16 insertions, 1 deletions
diff --git a/crates/ide/src/expand_macro.rs b/crates/ide/src/expand_macro.rs
index ba8b3aa9ca..44285d9315 100644
--- a/crates/ide/src/expand_macro.rs
+++ b/crates/ide/src/expand_macro.rs
@@ -63,7 +63,7 @@ pub(crate) fn expand_macro(db: &RootDatabase, position: FilePosition) -> Option<
.take_while(|it| it != &token)
.filter(|it| it.kind() == T![,])
.count();
- let ExpandResult { err, value: expansion } = expansions.get(idx)?.clone();
+ let ExpandResult { err, value: expansion } = expansions.get(idx)?.clone()?;
let expansion_file_id = sema.hir_file_for(&expansion).macro_file()?;
let expansion_span_map = db.expansion_span_map(expansion_file_id);
let mut expansion = format(
@@ -848,4 +848,19 @@ struct S {
u32"#]],
);
}
+
+ #[test]
+ fn regression_21489() {
+ check(
+ r#"
+//- proc_macros: derive_identity
+//- minicore: derive, fmt
+#[derive(Debug, proc_macros::DeriveIdentity$0)]
+struct Foo;
+ "#,
+ expect![[r#"
+ proc_macros::DeriveIdentity
+ struct Foo;"#]],
+ );
+ }
}