Skip to content

Commit bfae6e6

Browse files
committed
Add optional message argument to Result.getOrThrow and improve default error message
1 parent 507a751 commit bfae6e6

File tree

4 files changed

+18
-14
lines changed

4 files changed

+18
-14
lines changed

lib/es6/Stdlib_Result.js

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,13 @@
11

22

3+
import * as Stdlib_Error from "./Stdlib_Error.js";
34

4-
function getOrThrow(x) {
5+
function getOrThrow(x, message) {
56
if (x.TAG === "Ok") {
67
return x._0;
8+
} else {
9+
return Stdlib_Error.panic(message !== undefined ? message : "Result.getOrThrow called for Error value");
710
}
8-
throw {
9-
RE_EXN_ID: "Not_found",
10-
Error: new Error()
11-
};
1211
}
1312

1413
function mapOr(opt, $$default, f) {

lib/js/Stdlib_Result.js

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,13 @@
11
'use strict';
22

3+
let Stdlib_Error = require("./Stdlib_Error.js");
34

4-
function getOrThrow(x) {
5+
function getOrThrow(x, message) {
56
if (x.TAG === "Ok") {
67
return x._0;
8+
} else {
9+
return Stdlib_Error.panic(message !== undefined ? message : "Result.getOrThrow called for Error value");
710
}
8-
throw {
9-
RE_EXN_ID: "Not_found",
10-
Error: new Error()
11-
};
1211
}
1312

1413
function mapOr(opt, $$default, f) {

runtime/Stdlib_Result.res

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,10 +23,16 @@
2323
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
2424
type t<'res, 'err> = result<'res, 'err> = Ok('res) | Error('err)
2525

26-
let getOrThrow = x =>
26+
let getOrThrow = (x, ~message=?) =>
2727
switch x {
2828
| Ok(x) => x
29-
| Error(_) => throw(Not_found)
29+
| Error(_) =>
30+
Stdlib_Error.panic(
31+
switch message {
32+
| None => "Result.getOrThrow called for Error value"
33+
| Some(message) => message
34+
},
35+
)
3036
}
3137

3238
let getExn = getOrThrow

runtime/Stdlib_Result.resi

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ type t<'res, 'err> = result<'res, 'err> = Ok('res) | Error('err)
6060
```
6161
*/
6262
@deprecated("Use 'getOrThrow' instead")
63-
let getExn: result<'a, 'b> => 'a
63+
let getExn: (result<'a, 'b>, ~message: string=?) => 'a
6464

6565
/**
6666
`getOrThrow(res)`: when `res` is `Ok(n)`, returns `n` when `res` is `Error(m)`, raise an exception
@@ -74,7 +74,7 @@ let getExn: result<'a, 'b> => 'a
7474
}
7575
```
7676
*/
77-
let getOrThrow: result<'a, 'b> => 'a
77+
let getOrThrow: (result<'a, 'b>, ~message: string=?) => 'a
7878

7979
/**
8080
`mapOr(res, default, f)`: When res is `Ok(n)`, returns `f(n)`, otherwise `default`.

0 commit comments

Comments
 (0)