@@ -127,7 +127,7 @@ fn getNativeArg(
127
127
comptime T_refl : refl.Struct ,
128
128
comptime arg_T : refl.Type ,
129
129
js_value : v8.Value ,
130
- ) arg_T.T {
130
+ ) ! arg_T.T {
131
131
var value : arg_T.T = undefined ;
132
132
133
133
// JS Null or Undefined value
@@ -163,13 +163,13 @@ fn getArg(
163
163
js_val : ? v8.Value ,
164
164
isolate : v8.Isolate ,
165
165
js_ctx : v8.Context ,
166
- ) arg.T {
166
+ ) ! arg.T {
167
167
var value : arg.T = undefined ;
168
168
169
169
if (arg .isNative ()) {
170
170
171
171
// native types
172
- value = getNativeArg (gen .Types [arg .T_refl_index .? ], arg , js_val .? );
172
+ value = try getNativeArg (gen .Types [arg .T_refl_index .? ], arg , js_val .? );
173
173
} else if (arg .nested_index ) | index | {
174
174
175
175
// nested types (ie. JS anonymous objects)
@@ -272,7 +272,7 @@ fn getArgs(
272
272
raw_value : ? * const v8.C_Value ,
273
273
isolate : v8.Isolate ,
274
274
js_ctx : v8.Context ,
275
- ) func.args_T {
275
+ ) ! func.args_T {
276
276
var args : func.args_T = undefined ;
277
277
278
278
const js_args_nb = cbk_info .length (raw_value );
@@ -322,7 +322,7 @@ fn getArgs(
322
322
323
323
// normal cases
324
324
else = > blk : {
325
- break :blk getArg (
325
+ break :blk try getArg (
326
326
alloc ,
327
327
nat_ctx ,
328
328
T_refl ,
@@ -342,7 +342,7 @@ fn getArgs(
342
342
const slice = alloc .alloc (arg_real .T , rest_nb ) catch unreachable ;
343
343
var iter : usize = 0 ;
344
344
while (iter < rest_nb ) {
345
- const slice_value = getArg (
345
+ const slice_value = try getArg (
346
346
alloc ,
347
347
nat_ctx ,
348
348
T_refl ,
@@ -779,7 +779,19 @@ fn callFunc(
779
779
raw_value ,
780
780
isolate ,
781
781
js_ctx ,
782
- );
782
+ ) catch | err | {
783
+ // TODO: how to handle internal errors vs user errors
784
+ const js_err = throwError (
785
+ nat_ctx .alloc ,
786
+ nat_ctx ,
787
+ T_refl ,
788
+ func ,
789
+ err ,
790
+ isolate ,
791
+ );
792
+ cbk_info .getReturnValue ().setValueHandle (js_err .handle );
793
+ return ;
794
+ };
783
795
784
796
// free memory if required
785
797
defer freeArgs (nat_ctx .alloc , func , args ) catch unreachable ;
0 commit comments