diff --git a/CHANGELOG.md b/CHANGELOG.md
index 512788b24..05aedee00 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -33,6 +33,7 @@ Changes to the Lean backend:
- Add support for default methods of traits (#1777)
- Add support for pattern matching on constant literals (#1789)
- Add support for binding subpatterns in match constructs (#1790)
+ - Add error when using patterns in function parameters (#1792)
Miscellaneous:
- Reserve extraction folder for auto-generated files in Lean examples (#1754)
diff --git a/rust-engine/src/backends/lean.rs b/rust-engine/src/backends/lean.rs
index e153eb36a..0147bb7cd 100644
--- a/rust-engine/src/backends/lean.rs
+++ b/rust-engine/src/backends/lean.rs
@@ -850,7 +850,14 @@ set_option linter.unusedVariables false
}
fn param(&self, param: &Param) -> DocBuilder {
- self.pat_typed(¶m.pat)
+ if matches!(
+ *param.pat.kind,
+ PatKind::Wild | PatKind::Ascription { .. } | PatKind::Binding { sub_pat: None, .. }
+ ) {
+ self.pat_typed(¶m.pat)
+ } else {
+ emit_error!(issue 1791, "Function parameters must not contain patterns")
+ }
}
fn item(&self, Item { ident, kind, meta }: &Item) -> DocBuilder {