Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'crates/hir-def/src/expr_store/lower.rs')
-rw-r--r--crates/hir-def/src/expr_store/lower.rs7
1 files changed, 4 insertions, 3 deletions
diff --git a/crates/hir-def/src/expr_store/lower.rs b/crates/hir-def/src/expr_store/lower.rs
index 48ccc1c0aa..205c5e6dc9 100644
--- a/crates/hir-def/src/expr_store/lower.rs
+++ b/crates/hir-def/src/expr_store/lower.rs
@@ -2570,9 +2570,9 @@ impl<'db> ExprCollector<'db> {
}
fn collect_extern_fn_param(&mut self, pat: Option<ast::Pat>) -> PatId {
- // `extern` functions cannot have pattern-matched parameters, and furthermore, the identifiers
- // in their parameters are always interpreted as bindings, even if in a normal function they
- // won't be, because they would refer to a path pattern.
+ // parameters of functions in `extern` blocks can only be simple identifiers and wildcards.
+ // Furthermore, the identifiers in their parameters are always interpreted as bindings, even
+ // if in a normal function they won't be, because they would refer to a path pattern.
let Some(pat) = pat else { return self.missing_pat() };
match &pat {
@@ -2588,6 +2588,7 @@ impl<'db> ExprCollector<'db> {
self.add_definition_to_binding(binding, pat);
pat
}
+ ast::Pat::WildcardPat(_) => self.collect_pat_top(Some(pat)),
_ => {
self.store.diagnostics.push(ExpressionStoreDiagnostics::PatternArgInExternFn {
node: self.expander.in_file(AstPtr::new(&pat)),