Output more metadata on expression errors, fix #1440 #1441
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This PR changes the
validate_expressions
API to output an expression error object versus just an error message.For errors from ExprTk's parser (invalid symbol, mismatched parentheses, etc.), we use ExprTk's
update_error
method to generate a line and column number for the error. Because we pre-parse the expression strings, on certain expressions the line/column positions of a token that errored might not be totally accurate, as the parsed expression string (COLUMN1 + COLUMN2
, vs."Sales" + "Profit"
as typed by the user) will not match 1:1 in terms of token position to the string the user typed. However, without doing a large amount of parsing and other validation, this is good enough for a generalized idea of where an error might be (especially as it does not output a range, just a line and a column number).Each error object now contains the following keys:
error_message
: a string that describes the errorline
: an integer >= 0 that marks the line the error occurred oncolumn
: an integer >= that marks the column position the error occurred onType errors and "Column does not exist" errors will always return 0 for both
line
andcolumn
.Additionally, this test cleans up some missing definitions in
index.d.ts
as reported by #1440.