Skip to content

Commit cc31e08

Browse files
committed
Fix internalAnyToExn
1 parent 98cba2e commit cc31e08

File tree

3 files changed

+29
-34
lines changed

3 files changed

+29
-34
lines changed

Diff for: jscomp/runtime/caml_js_exceptions.res

+9-10
Original file line numberDiff line numberDiff line change
@@ -24,16 +24,6 @@
2424

2525
exception Error = JsError
2626

27-
let internalAnyToExn = (any: 'a): exn =>
28-
if Obj.magic(any) && Js.typeof(Obj.magic(any)["RE_EXN_ID"]) === "string" {
29-
any->Obj.magic
30-
} else {
31-
{
32-
"RE_EXN_ID": "JsError",
33-
"_1": any,
34-
}->Obj.magic
35-
}
36-
3727
%%raw(`class RescriptError extends Error {
3828
constructor(message) {
3929
super(message);
@@ -50,6 +40,15 @@ let internalFromExtension = (_ext: 'a): exn => {
5040
%raw(`Object.assign(new RescriptError(_ext.RE_EXN_ID), _ext)`)
5141
}
5242

43+
let internalAnyToExn = (any: 'a): exn =>
44+
if Obj.magic(any) && Js.typeof(Obj.magic(any)["RE_EXN_ID"]) === "string" {
45+
any->Obj.magic
46+
} else {
47+
let exn = internalMakeExn("JsError")
48+
Obj.magic(exn)["_1"] = any
49+
exn
50+
}
51+
5352
let as_js_exn = exn =>
5453
switch exn {
5554
| Error(t) => Some(t)

Diff for: lib/es6/caml_js_exceptions.js

+10-12
Original file line numberDiff line numberDiff line change
@@ -4,17 +4,6 @@ import * as Caml_option from "./caml_option.js";
44

55
let $$Error = "JsError";
66

7-
function internalAnyToExn(any) {
8-
if (any && typeof any.RE_EXN_ID === "string") {
9-
return any;
10-
} else {
11-
return {
12-
RE_EXN_ID: "JsError",
13-
_1: any
14-
};
15-
}
16-
}
17-
187
class RescriptError extends Error {
198
constructor(message) {
209
super(message);
@@ -31,6 +20,15 @@ function internalFromExtension(_ext) {
3120
return (Object.assign(new RescriptError(_ext.RE_EXN_ID), _ext));
3221
}
3322

23+
function internalAnyToExn(any) {
24+
if (any && typeof any.RE_EXN_ID === "string") {
25+
return any;
26+
}
27+
let exn = new RescriptError("JsError");
28+
exn._1 = any;
29+
return exn;
30+
}
31+
3432
function as_js_exn(exn) {
3533
if (exn.RE_EXN_ID === $$Error) {
3634
return Caml_option.some(exn._1);
@@ -40,9 +38,9 @@ function as_js_exn(exn) {
4038

4139
export {
4240
$$Error,
43-
internalAnyToExn,
4441
internalMakeExn,
4542
internalFromExtension,
43+
internalAnyToExn,
4644
as_js_exn,
4745
}
4846
/* Not a pure module */

Diff for: lib/js/caml_js_exceptions.js

+10-12
Original file line numberDiff line numberDiff line change
@@ -4,17 +4,6 @@ let Caml_option = require("./caml_option.js");
44

55
let $$Error = "JsError";
66

7-
function internalAnyToExn(any) {
8-
if (any && typeof any.RE_EXN_ID === "string") {
9-
return any;
10-
} else {
11-
return {
12-
RE_EXN_ID: "JsError",
13-
_1: any
14-
};
15-
}
16-
}
17-
187
class RescriptError extends Error {
198
constructor(message) {
209
super(message);
@@ -31,6 +20,15 @@ function internalFromExtension(_ext) {
3120
return (Object.assign(new RescriptError(_ext.RE_EXN_ID), _ext));
3221
}
3322

23+
function internalAnyToExn(any) {
24+
if (any && typeof any.RE_EXN_ID === "string") {
25+
return any;
26+
}
27+
let exn = new RescriptError("JsError");
28+
exn._1 = any;
29+
return exn;
30+
}
31+
3432
function as_js_exn(exn) {
3533
if (exn.RE_EXN_ID === $$Error) {
3634
return Caml_option.some(exn._1);
@@ -39,8 +37,8 @@ function as_js_exn(exn) {
3937
}
4038

4139
exports.$$Error = $$Error;
42-
exports.internalAnyToExn = internalAnyToExn;
4340
exports.internalMakeExn = internalMakeExn;
4441
exports.internalFromExtension = internalFromExtension;
42+
exports.internalAnyToExn = internalAnyToExn;
4543
exports.as_js_exn = as_js_exn;
4644
/* Not a pure module */

0 commit comments

Comments
 (0)