diff options
author | Aaron O'Mullan <aaron.omullan@gmail.com> | 2021-11-04 16:44:34 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-11-04 16:44:34 +0100 |
commit | 44511e4f330e2d7099a16ed836629fa73dde9831 (patch) | |
tree | 7be25493513d50314ab71452693b317ef4194a49 /core/ops.rs | |
parent | efe956b4fd51818e3a982b9d7c4111c408d07291 (diff) |
feat(runtime): give OS errors .code attributes (#12591)
This adds `.code` attributes to errors returned by the op-layer, facilitating classifying OS errors and helping node-compat.
Similar to Node, these `.code` attributes are stringified names of unix ERRNOs, the mapping tables are generated by [tools/codegen_error_codes.js](https://gist.github.com/AaronO/dfa1106cc6c7e2a6ebe4dba9d5248858) and derived from libuv and rust's std internals
Diffstat (limited to 'core/ops.rs')
-rw-r--r-- | core/ops.rs | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/core/ops.rs b/core/ops.rs index ab233ef29..f62fe7a8e 100644 --- a/core/ops.rs +++ b/core/ops.rs @@ -140,6 +140,7 @@ pub struct OpError { #[serde(rename = "$err_class_name")] class_name: &'static str, message: String, + code: Option<&'static str>, } pub fn serialize_op_result<R: Serialize + 'static>( @@ -151,6 +152,7 @@ pub fn serialize_op_result<R: Serialize + 'static>( Err(err) => OpResult::Err(OpError { class_name: (state.borrow().get_error_class_fn)(&err), message: err.to_string(), + code: crate::error_codes::get_error_code(&err), }), } } |