diff options
| author | Marmare314 <49279081+Marmare314@users.noreply.github.com> | 2023-04-24 19:08:07 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-04-24 19:08:07 +0200 |
| commit | 12129f01707a3389ef90a4c78a872e1c7897a752 (patch) | |
| tree | caaab7a6797c35be99c7b9e613e57c003b3ee057 /src/eval/scope.rs | |
| parent | 83c11f1ee4ab7479af6ee3ea3937be48b43eed60 (diff) | |
hint for unknown variable containing dash (#924)
Diffstat (limited to 'src/eval/scope.rs')
| -rw-r--r-- | src/eval/scope.rs | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/src/eval/scope.rs b/src/eval/scope.rs index 76633bf2..83d1703e 100644 --- a/src/eval/scope.rs +++ b/src/eval/scope.rs @@ -42,7 +42,7 @@ impl<'a> Scopes<'a> { .chain(self.scopes.iter().rev()) .chain(self.base.map(|base| base.global.scope())) .find_map(|scope| scope.get(var)) - .ok_or_else(|| eco_format!("unknown variable: {}", var)) + .ok_or_else(|| unknown_variable(var)) } /// Try to access a variable immutably in math. @@ -62,12 +62,22 @@ impl<'a> Scopes<'a> { .ok_or_else(|| { match self.base.and_then(|base| base.global.scope().get(var)) { Some(_) => eco_format!("cannot mutate a constant: {}", var), - _ => eco_format!("unknown variable: {}", var), + _ => unknown_variable(var), } })? } } +/// The error message when a variable is not found. +#[cold] +fn unknown_variable(var: &str) -> EcoString { + if var.contains('-') { + eco_format!("unknown variable: {} – if you meant to use subtraction, try adding spaces around the minus sign.", var) + } else { + eco_format!("unknown variable: {}", var) + } +} + /// A map from binding names to values. #[derive(Default, Clone, Hash)] pub struct Scope(BTreeMap<EcoString, Slot>, bool); |
