mirror of
https://github.com/rust-lang/rust.git
synced 2024-11-28 01:34:21 +00:00
fix: Don't create hir::Local
s from const path patterns
This commit is contained in:
parent
15e7112da3
commit
9050db2e80
@ -213,10 +213,15 @@ impl SourceToDefCtx<'_, '_> {
|
|||||||
src: InFile<ast::IdentPat>,
|
src: InFile<ast::IdentPat>,
|
||||||
) -> Option<(DefWithBodyId, PatId)> {
|
) -> Option<(DefWithBodyId, PatId)> {
|
||||||
let container = self.find_pat_or_label_container(src.syntax())?;
|
let container = self.find_pat_or_label_container(src.syntax())?;
|
||||||
let (_body, source_map) = self.db.body_with_source_map(container);
|
let (body, source_map) = self.db.body_with_source_map(container);
|
||||||
let src = src.map(ast::Pat::from);
|
let src = src.map(ast::Pat::from);
|
||||||
let pat_id = source_map.node_pat(src.as_ref())?;
|
let pat_id = source_map.node_pat(src.as_ref())?;
|
||||||
Some((container, pat_id))
|
// the pattern could resolve to a constant, verify that that is not the case
|
||||||
|
if let crate::Pat::Bind { .. } = body[pat_id] {
|
||||||
|
Some((container, pat_id))
|
||||||
|
} else {
|
||||||
|
None
|
||||||
|
}
|
||||||
}
|
}
|
||||||
pub(super) fn self_param_to_def(
|
pub(super) fn self_param_to_def(
|
||||||
&mut self,
|
&mut self,
|
||||||
|
@ -935,6 +935,20 @@ fn f() {
|
|||||||
0
|
0
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
"#,
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn test_inline_let_unit_struct() {
|
||||||
|
check_assist_not_applicable(
|
||||||
|
inline_local_variable,
|
||||||
|
r#"
|
||||||
|
struct S;
|
||||||
|
fn f() {
|
||||||
|
let S$0 = S;
|
||||||
|
S;
|
||||||
|
}
|
||||||
"#,
|
"#,
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user