Update ISLE error message: unknown term in expr, not pattern. (#4775)
This was likely a copy-paste from the `ast::Pattern` case, but here it is checking a term name in `ast::Expr` and so should say "... in expression", not "... in pattern".
This commit is contained in:
6
cranelift/isle/isle/isle_examples/fail/extra_parens.isle
Normal file
6
cranelift/isle/isle/isle_examples/fail/extra_parens.isle
Normal file
@@ -0,0 +1,6 @@
|
||||
(type u32 (primitive u32))
|
||||
|
||||
(decl f (u32) u32)
|
||||
;; Should get an error about `x` not being a term, with a suggestion that it is
|
||||
;; a bound var instead.
|
||||
(rule (f x) (x))
|
||||
@@ -1782,7 +1782,19 @@ impl TermEnv {
|
||||
let tid = match self.term_map.get(&name) {
|
||||
Some(t) => t,
|
||||
None => {
|
||||
tyenv.report_error(pos, format!("Unknown term in pattern: '{}'", sym.0));
|
||||
// Maybe this was actually a variable binding and the user has placed
|
||||
// parens around it by mistake? (See #4775.)
|
||||
if bindings.vars.iter().any(|b| b.name == name) {
|
||||
tyenv.report_error(
|
||||
pos,
|
||||
format!(
|
||||
"Unknown term in expression: '{}'. Variable binding under this name exists; try removing the parens?", sym.0));
|
||||
} else {
|
||||
tyenv.report_error(
|
||||
pos,
|
||||
format!("Unknown term in expression: '{}'", sym.0),
|
||||
);
|
||||
}
|
||||
return None;
|
||||
}
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user