about summary refs log tree commit diff stats
path: root/src/js
diff options
context:
space:
mode:
authorbptato <nincsnevem662@gmail.com>2023-06-29 14:59:09 +0200
committerbptato <nincsnevem662@gmail.com>2023-06-29 14:59:09 +0200
commit0eef1cb27a9cf8cca861ad2743a895c9382f292f (patch)
tree6ba5ab7ef23a6bdaa5210c5c08b707fae86672d4 /src/js
parent19068fd7d803a157de671e189e01731bc903ba9e (diff)
downloadchawan-0eef1cb27a9cf8cca861ad2743a895c9382f292f.tar.gz
Remove .jsgctor
Not sure how it ever worked.
This fixes Text() constructors etc.
Diffstat (limited to 'src/js')
-rw-r--r--src/js/javascript.nim23
1 files changed, 2 insertions, 21 deletions
diff --git a/src/js/javascript.nim b/src/js/javascript.nim
index 013bbed3..d2b3c2e0 100644
--- a/src/js/javascript.nim
+++ b/src/js/javascript.nim
@@ -236,7 +236,7 @@ func getOpaque0*(val: JSValue): pointer =
   if JS_VALUE_GET_TAG(val) == JS_TAG_OBJECT:
     return JS_GetOpaque(val, JS_GetClassID(val))
 
-func getGlobalOpaque[T](ctx: JSContext, val: JSValue): Opt[T] =
+func getGlobalOpaque*(ctx: JSContext, T: typedesc, val: JSValue = JS_UNDEFINED): Opt[T] =
   let global = JS_GetGlobalObject(ctx)
   if JS_IsUndefined(val) or val == global:
     let opaque = JS_GetOpaque(global, JS_CLASS_OBJECT)
@@ -742,7 +742,7 @@ proc fromJSObject[T: ref object](ctx: JSContext, val: JSValue): Opt[T] =
   if JS_IsNull(val):
     return ok(T(nil))
   if ctx.isGlobal($T):
-    return getGlobalOpaque[T](ctx, val)
+    return getGlobalOpaque(ctx, T, val)
   if not JS_IsObject(val):
     JS_ThrowTypeError(ctx, "Value is not an object")
     return err()
@@ -1490,25 +1490,6 @@ macro jsctor*(fun: typed) =
   gen.registerConstructor()
   result = newStmtList(fun)
 
-macro jsgctor*(fun: typed) =
-  var gen = setupGenerator(fun, CONSTRUCTOR, thisname = none(string))
-  if gen.newName.strVal in existing_funcs:
-    #TODO TODO TODO implement function overloading
-    error("Function overloading hasn't been implemented yet...")
-  gen.addFixParam("this")
-  gen.addRequiredParams()
-  gen.addOptionalParams()
-  gen.finishFunCallList()
-  let jfcl = gen.jsFunCallList
-  let dl = gen.dielabel
-  gen.jsCallAndRet = quote do:
-    block `dl`:
-      return ctx.toJS(`jfcl`)
-    return JS_ThrowTypeError(ctx, "Invalid parameters passed to constructor")
-  discard gen.newJSProc(getJSParams())
-  gen.registerConstructor()
-  result = newStmtList(fun)
-
 macro jshasprop*(fun: typed) =
   var gen = setupGenerator(fun, PROPERTY_HAS, thisname = some("obj"))
   if gen.newName.strVal in existing_funcs: