Rebecca Turner
c6a89c1a16
libexpr: Support structured error classes
...
While preparing PRs like #9753 , I've had to change error messages in
dozens of code paths. It would be nice if instead of
EvalError("expected 'boolean' but found '%1%'", showType(v))
we could write
TypeError(v, "boolean")
or similar. Then, changing the error message could be a mechanical
refactor with the compiler pointing out places the constructor needs to
be changed, rather than the error-prone process of grepping through the
codebase. Structured errors would also help prevent the "same" error
from having multiple slightly different messages, and could be a first
step towards error codes / an error index.
This PR reworks the exception infrastructure in `libexpr` to
support exception types with different constructor signatures than
`BaseError`. Actually refactoring the exceptions to use structured data
will come in a future PR (this one is big enough already, as it has to
touch every exception in `libexpr`).
The core design is in `eval-error.hh`. Generally, errors like this:
state.error("'%s' is not a string", getAttrPathStr())
.debugThrow<TypeError>()
are transformed like this:
state.error<TypeError>("'%s' is not a string", getAttrPathStr())
.debugThrow()
The type annotation has moved from `ErrorBuilder::debugThrow` to
`EvalState::error`.
2024-02-01 16:39:38 -08:00
..
2023-12-11 12:17:36 -05:00
2024-01-19 16:21:51 +01:00
2023-10-06 09:05:56 -04:00
2024-01-22 08:56:02 -08:00
2024-01-12 12:56:26 +01:00
2024-02-01 16:39:38 -08:00
2023-10-06 09:05:56 -04:00
2023-10-06 09:05:56 -04:00
2024-01-10 20:38:39 -05:00
2024-01-19 23:11:18 -05:00
2023-10-06 09:05:56 -04:00
2023-10-06 09:05:56 -04:00
2023-10-06 09:05:56 -04:00
2023-10-06 09:05:56 -04:00
2023-10-06 09:05:56 -04:00
2023-10-06 09:05:56 -04:00
2023-10-06 09:05:56 -04:00
2023-10-06 09:05:56 -04:00
2023-10-06 09:05:56 -04:00
2023-10-06 09:05:56 -04:00
2023-10-06 09:05:56 -04:00
2023-10-06 09:05:56 -04:00
2023-10-06 09:05:56 -04:00
2023-10-06 09:05:56 -04:00
2023-10-06 09:05:56 -04:00
2023-12-03 17:18:58 -08:00
2023-10-06 09:05:56 -04:00
2024-01-13 11:27:04 -08:00
2023-10-06 09:05:56 -04:00
2023-10-06 09:05:56 -04:00
2023-10-06 09:05:56 -04:00
2023-11-21 13:35:12 -05:00
2023-10-06 09:05:56 -04:00
2023-10-06 09:05:56 -04:00
2023-10-06 09:05:56 -04:00
2023-10-06 09:05:56 -04:00
2023-10-06 09:05:56 -04:00
2023-10-06 09:05:56 -04:00
2023-10-06 09:05:56 -04:00
2023-10-06 09:05:56 -04:00
2023-10-06 09:05:56 -04:00
2023-10-06 09:05:56 -04:00
2023-10-06 09:05:56 -04:00
2023-10-06 09:05:56 -04:00
2023-10-31 15:33:57 +01:00
2023-10-06 09:05:56 -04:00
2023-10-06 09:05:56 -04:00
2023-10-06 09:05:56 -04:00
2023-11-28 14:28:19 +01:00
2023-10-06 09:05:56 -04:00
2023-10-06 09:05:56 -04:00
2023-10-06 09:05:56 -04:00
2023-10-06 09:05:56 -04:00
2023-10-06 09:05:56 -04:00
2023-10-06 09:05:56 -04:00
2023-10-06 09:05:56 -04:00
2023-12-23 21:33:56 -05:00
2023-10-06 09:05:56 -04:00
2023-10-06 09:05:56 -04:00
2023-11-28 14:28:19 +01:00
2023-10-06 09:05:56 -04:00
2023-10-06 09:05:56 -04:00
2023-10-06 09:05:56 -04:00
2023-10-06 09:05:56 -04:00
2023-10-06 09:05:56 -04:00
2024-02-01 16:39:38 -08:00
2023-10-06 09:05:56 -04:00
2024-01-12 15:31:53 +01:00
2023-11-09 16:48:41 +01:00
2023-10-06 09:05:56 -04:00
2023-10-06 09:05:56 -04:00
2023-10-06 09:05:56 -04:00
2023-10-06 09:05:56 -04:00
2023-10-06 09:05:56 -04:00
2023-10-06 09:05:56 -04:00
2023-10-06 09:05:56 -04:00
2023-10-06 09:05:56 -04:00
2024-01-07 07:32:31 -05:00
2024-01-08 10:17:28 -05:00
2023-10-06 09:05:56 -04:00
2023-10-06 09:05:56 -04:00
2023-10-06 09:05:56 -04:00
2023-10-06 09:05:56 -04:00
2023-10-06 09:05:56 -04:00
2023-10-06 09:05:56 -04:00
2023-10-06 09:05:56 -04:00
2023-10-06 09:05:56 -04:00
2024-01-12 12:38:55 +01:00
2023-10-06 09:05:56 -04:00
2023-10-06 09:05:56 -04:00
2023-10-06 09:05:56 -04:00
2023-10-06 09:05:56 -04:00
2024-01-20 17:29:35 -05:00
2023-10-06 09:05:56 -04:00
2023-12-23 17:15:09 -05:00
2023-10-06 09:05:56 -04:00
2023-10-06 09:05:56 -04:00
2023-10-06 09:05:56 -04:00
2023-10-06 09:05:56 -04:00
2023-10-11 11:58:42 +00:00
2023-10-11 11:58:42 +00:00
2023-12-14 19:47:10 -05:00
2023-10-25 11:39:18 +02:00
2023-10-06 09:05:56 -04:00
2023-10-06 09:05:56 -04:00
2023-11-06 19:13:40 +00:00
2023-10-18 00:14:11 +05:30
2023-10-06 09:05:56 -04:00
2023-10-06 09:05:56 -04:00
2023-10-18 00:14:11 +05:30
2024-01-12 12:56:26 +01:00
2023-12-18 14:04:25 -08:00
2023-10-06 09:05:56 -04:00
2023-10-06 09:05:56 -04:00
2023-10-06 09:05:56 -04:00
2023-10-06 09:05:56 -04:00
2023-11-03 11:03:58 +01:00
2023-10-06 09:05:56 -04:00
2023-10-06 09:05:56 -04:00
2023-10-06 09:05:56 -04:00
2023-10-06 09:05:56 -04:00
2024-01-30 15:35:31 +01:00
2023-10-06 09:05:56 -04:00
2023-12-13 15:22:19 -05:00
2023-12-13 15:22:19 -05:00
2023-12-13 15:22:19 -05:00
2024-01-13 11:27:04 -08:00
2024-01-14 15:27:44 -05:00
2023-10-23 17:32:50 +02:00
2023-10-06 09:05:56 -04:00
2023-10-06 09:05:56 -04:00
2023-10-06 09:05:56 -04:00
2023-10-06 09:05:56 -04:00
2023-10-06 09:05:56 -04:00
2023-10-06 09:05:56 -04:00
2023-10-06 09:05:56 -04:00
2023-11-06 11:06:31 -05:00
2023-10-06 09:05:56 -04:00
2023-10-06 09:05:56 -04:00
2023-10-06 09:05:56 -04:00
2023-10-06 09:05:56 -04:00
2023-10-06 09:05:56 -04:00
2023-10-06 09:05:56 -04:00
2023-10-06 09:05:56 -04:00
2023-10-06 09:05:56 -04:00
2023-10-06 09:05:56 -04:00
2023-10-06 09:05:56 -04:00
2023-10-06 09:05:56 -04:00
2023-10-06 09:05:56 -04:00
2023-10-06 09:05:56 -04:00
2023-10-06 09:05:56 -04:00
2023-12-23 17:15:09 -05:00
2023-10-06 09:05:56 -04:00
2023-10-06 09:05:56 -04:00
2023-10-06 09:05:56 -04:00
2023-12-06 14:05:32 +01:00
2023-10-06 09:05:56 -04:00
2023-12-21 22:13:43 +01:00
2023-10-06 09:05:56 -04:00
2023-10-06 09:05:56 -04:00
2023-10-06 09:05:56 -04:00
2023-12-21 10:23:07 -08:00
2023-10-06 09:05:56 -04:00
2023-12-21 10:23:07 -08:00
2023-10-23 17:32:50 +02:00
2023-10-06 09:05:56 -04:00
2023-10-06 09:05:56 -04:00
2023-10-06 09:05:56 -04:00
2023-10-06 09:05:56 -04:00
2023-10-06 09:05:56 -04:00
2023-10-06 09:05:56 -04:00
2023-10-06 09:05:56 -04:00
2023-10-06 09:05:56 -04:00
2023-12-18 11:29:55 -08:00
2023-10-06 09:05:56 -04:00
2023-10-06 09:05:56 -04:00
2023-10-06 09:05:56 -04:00
2023-10-06 09:05:56 -04:00
2023-10-06 09:05:56 -04:00
2023-10-06 09:05:56 -04:00
2023-10-24 22:14:35 +02:00
2023-10-06 09:05:56 -04:00
2023-10-06 09:05:56 -04:00
2023-10-06 09:05:56 -04:00
2023-10-06 09:05:56 -04:00
2023-10-06 09:05:56 -04:00
2023-10-06 09:05:56 -04:00
2023-10-06 09:05:56 -04:00
2023-10-06 09:05:56 -04:00
2023-10-06 09:05:56 -04:00
2023-11-09 22:31:32 +02:00
2023-10-06 09:05:56 -04:00
2023-10-06 09:05:56 -04:00