mirror of
https://github.com/fish-shell/fish-shell.git
synced 2026-05-22 12:11:16 -03:00
math: Print special error for logical operators
Until now, something like `math '7 = 2'` would complain about a "missing" operator. Now we print an error about logical operators not being supported and point the user towards `test`. Fixes #6096
This commit is contained in:
@@ -149,6 +149,8 @@ static const wchar_t *math_describe_error(te_error_t &error) {
|
||||
return _(L"Missing operator");
|
||||
case TE_ERROR_UNEXPECTED_TOKEN:
|
||||
return _(L"Unexpected token");
|
||||
case TE_ERROR_LOGICAL_OPERATOR:
|
||||
return _(L"Logical operations are not supported, use `test` instead");
|
||||
case TE_ERROR_UNKNOWN:
|
||||
return _(L"Expression is bogus");
|
||||
default:
|
||||
|
||||
@@ -306,6 +306,15 @@ void next_token(state *s) {
|
||||
case '\n':
|
||||
case '\r':
|
||||
break;
|
||||
case '=':
|
||||
case '>':
|
||||
case '<':
|
||||
case '&':
|
||||
case '|':
|
||||
case '!':
|
||||
s->type = TOK_ERROR;
|
||||
s->error = TE_ERROR_LOGICAL_OPERATOR;
|
||||
break;
|
||||
default:
|
||||
s->type = TOK_ERROR;
|
||||
s->error = TE_ERROR_MISSING_OPERATOR;
|
||||
|
||||
@@ -36,7 +36,8 @@ typedef enum {
|
||||
TE_ERROR_TOO_MANY_ARGS = 5,
|
||||
TE_ERROR_MISSING_OPERATOR = 6,
|
||||
TE_ERROR_UNEXPECTED_TOKEN = 7,
|
||||
TE_ERROR_UNKNOWN = 8
|
||||
TE_ERROR_LOGICAL_OPERATOR = 8,
|
||||
TE_ERROR_UNKNOWN = 9
|
||||
} te_error_type_t;
|
||||
|
||||
typedef struct te_error_t {
|
||||
|
||||
@@ -126,3 +126,8 @@ math 0x 3
|
||||
# CHECK: 20
|
||||
# CHECK: 8
|
||||
# CHECK: 0
|
||||
|
||||
math "42 >= 1337"
|
||||
# CHECKERR: math: Error: Logical operations are not supported, use `test` instead
|
||||
# CHECKERR: '42 >= 1337'
|
||||
# CHECKERR: ^
|
||||
|
||||
Reference in New Issue
Block a user