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:
Chris Fallin
2022-08-24 15:07:29 -07:00
committed by GitHub
parent b8b6f2781e
commit c664fb6f70
2 changed files with 19 additions and 1 deletions

View 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))

View File

@@ -1782,7 +1782,19 @@ impl TermEnv {
let tid = match self.term_map.get(&name) { let tid = match self.term_map.get(&name) {
Some(t) => t, Some(t) => t,
None => { 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; return None;
} }
}; };