diff options
author | Bartek IwaĆczuk <biwanczuk@gmail.com> | 2023-06-29 01:46:16 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-06-29 01:46:16 +0200 |
commit | 0434e041778cb3803de901b841f18b8fd8cc2a67 (patch) | |
tree | 0c89ce9c09e8a53c20fef5a5053ffdd4af382400 | |
parent | 673cdd714921124fae8ecd3c3a405e37a8ece404 (diff) |
feat: add more Deno.errors classes (#19514)
This commit adds following new error classes:
- `Deno.errors.NotADirectory`
- `Deno.errors.FilesystemLoop`
- `Deno.errors.IsADirectory`
- `Deno.errors.NetworkUnreachable`
Closes https://github.com/denoland/deno/issues/19408
-rw-r--r-- | runtime/errors.rs | 15 | ||||
-rw-r--r-- | runtime/js/01_errors.js | 32 | ||||
-rw-r--r-- | runtime/js/99_main.js | 4 |
3 files changed, 50 insertions, 1 deletions
diff --git a/runtime/errors.rs b/runtime/errors.rs index 5618c07ed..e6ae14abb 100644 --- a/runtime/errors.rs +++ b/runtime/errors.rs @@ -61,7 +61,16 @@ fn get_io_error_class(error: &io::Error) -> &'static str { WouldBlock => "WouldBlock", // Non-exhaustive enum - might add new variants // in the future - _ => "Error", + kind => { + let kind_str = kind.to_string(); + match kind_str.as_str() { + "FilesystemLoop" => "FilesystemLoop", + "IsADirectory" => "IsADirectory", + "NetworkUnreachable" => "NetworkUnreachable", + "NotADirectory" => "NotADirectory", + _ => "Error", + } + } } } @@ -146,6 +155,10 @@ pub fn get_nix_error_class(error: &nix::Error) -> &'static str { nix::Error::ENOTTY => "BadResource", nix::Error::EPERM => "PermissionDenied", nix::Error::ESRCH => "NotFound", + nix::Error::ELOOP => "FilesystemLoop", + nix::Error::ENOTDIR => "NotADirectory", + nix::Error::ENETUNREACH => "NetworkUnreachable", + nix::Error::EISDIR => "IsADirectory", nix::Error::UnknownErrno => "Error", &nix::Error::ENOTSUP => unreachable!(), _ => "Error", diff --git a/runtime/js/01_errors.js b/runtime/js/01_errors.js index 8288e3ce9..0c54f6581 100644 --- a/runtime/js/01_errors.js +++ b/runtime/js/01_errors.js @@ -131,6 +131,34 @@ class NotSupported extends Error { } } +class FilesystemLoop extends Error { + constructor(msg) { + super(msg); + this.name = "FilesystemLoop"; + } +} + +class IsADirectory extends Error { + constructor(msg) { + super(msg); + this.name = "IsADirectory"; + } +} + +class NetworkUnreachable extends Error { + constructor(msg) { + super(msg); + this.name = "NetworkUnreachable"; + } +} + +class NotADirectory extends Error { + constructor(msg) { + super(msg); + this.name = "NotADirectory"; + } +} + const errors = { NotFound, PermissionDenied, @@ -152,6 +180,10 @@ const errors = { Http, Busy, NotSupported, + FilesystemLoop, + IsADirectory, + NetworkUnreachable, + NotADirectory, }; export { errors }; diff --git a/runtime/js/99_main.js b/runtime/js/99_main.js index 511368141..0c8989701 100644 --- a/runtime/js/99_main.js +++ b/runtime/js/99_main.js @@ -251,6 +251,10 @@ core.registerErrorClass("BadResource", errors.BadResource); core.registerErrorClass("Http", errors.Http); core.registerErrorClass("Busy", errors.Busy); core.registerErrorClass("NotSupported", errors.NotSupported); +core.registerErrorClass("FilesystemLoop", errors.FilesystemLoop); +core.registerErrorClass("IsADirectory", errors.IsADirectory); +core.registerErrorClass("NetworkUnreachable", errors.NetworkUnreachable); +core.registerErrorClass("NotADirectory", errors.NotADirectory); core.registerErrorBuilder( "DOMExceptionOperationError", function DOMExceptionOperationError(msg) { |