From b1e2a9ce0c996de83b161a21d4e6ebb188a74699 Mon Sep 17 00:00:00 2001 From: bptato Date: Sat, 24 Feb 2024 03:55:48 +0100 Subject: dom: print parse errors to console instead of trying to evaluate exceptions... --- src/js/javascript.nim | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) (limited to 'src/js') diff --git a/src/js/javascript.nim b/src/js/javascript.nim index d208ffad..2327660d 100644 --- a/src/js/javascript.nim +++ b/src/js/javascript.nim @@ -195,20 +195,22 @@ proc setGlobal*[T](ctx: JSContext, global: JSValue, obj: T) = proc setInterruptHandler*(rt: JSRuntime, cb: JSInterruptHandler, opaque: pointer = nil) = JS_SetInterruptHandler(rt, cb, opaque) -proc writeException*(ctx: JSContext, s: Stream) = +proc getExceptionStr*(ctx: JSContext): string = + result = "" let ex = JS_GetException(ctx) let str = fromJS[string](ctx, ex) if str.isSome: - s.write(str.get & '\n') + result &= str.get & '\n' let stack = JS_GetPropertyStr(ctx, ex, cstring("stack")); if not JS_IsUndefined(stack): - let str = fromJS[string](ctx, stack) - if str.isSome: - s.write(str.get) - s.flush() + result &= fromJS[string](ctx, stack).get("") JS_FreeValue(ctx, stack) JS_FreeValue(ctx, ex) +proc writeException*(ctx: JSContext, s: Stream) = + s.write(ctx.getExceptionStr()) + s.flush() + proc runJSJobs*(rt: JSRuntime, err: Stream) = while JS_IsJobPending(rt): var ctx: JSContext -- cgit 1.4.1-2-gfad0