aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar Jarred Sumner <709451+Jarred-Sumner@users.noreply.github.com> 2023-05-20 19:43:44 -0700
committerGravatar Jarred Sumner <709451+Jarred-Sumner@users.noreply.github.com> 2023-05-20 22:02:09 -0700
commit50bb4749af25efce64bc7e7b1045855f81b6343e (patch)
treef748b64298b380420526ed8bf36caea6296cc33e
parentff4df6b6001ac7fd30103b469d0a076021f533c2 (diff)
downloadbun-50bb4749af25efce64bc7e7b1045855f81b6343e.tar.gz
bun-50bb4749af25efce64bc7e7b1045855f81b6343e.tar.zst
bun-50bb4749af25efce64bc7e7b1045855f81b6343e.zip
[internal] Make `JSC.NewFunction` more type safe
-rw-r--r--src/bun.js/api/ffi.zig4
-rw-r--r--src/bun.js/bindings/bindings.zig11
-rw-r--r--src/bun.js/node/node_os.zig2
3 files changed, 9 insertions, 8 deletions
diff --git a/src/bun.js/api/ffi.zig b/src/bun.js/api/ffi.zig
index ae3e596f1..fe2b50955 100644
--- a/src/bun.js/api/ffi.zig
+++ b/src/bun.js/api/ffi.zig
@@ -384,7 +384,7 @@ pub const FFI = struct {
global,
&str,
@intCast(u32, function.arg_types.items.len),
- compiled.ptr,
+ bun.cast(JSC.JSHostFunctionPtr, compiled.ptr),
false,
);
compiled.js_function = cb;
@@ -480,7 +480,7 @@ pub const FFI = struct {
global,
name,
@intCast(u32, function.arg_types.items.len),
- compiled.ptr,
+ bun.cast(JSC.JSHostFunctionPtr, compiled.ptr),
false,
);
compiled.js_function = cb;
diff --git a/src/bun.js/bindings/bindings.zig b/src/bun.js/bindings/bindings.zig
index 6dc6d7457..a97ce3935 100644
--- a/src/bun.js/bindings/bindings.zig
+++ b/src/bun.js/bindings/bindings.zig
@@ -4937,7 +4937,8 @@ pub const EncodedJSValue = extern union {
asPtr: ?*anyopaque,
asDouble: f64,
};
-
+pub const JSHostFunctionType = fn (*JSGlobalObject, *CallFrame) callconv(.C) JSValue;
+pub const JSHostFunctionPtr = *const JSHostFunctionType;
const DeinitFunction = *const fn (ctx: *anyopaque, buffer: [*]u8, len: usize) callconv(.C) void;
pub const JSArray = struct {
@@ -4967,7 +4968,7 @@ const private = struct {
globalObject: *JSGlobalObject,
symbolName: ?*const ZigString,
argCount: u32,
- functionPointer: *const anyopaque,
+ functionPointer: JSHostFunctionPtr,
strong: bool,
) JSValue;
@@ -4989,7 +4990,7 @@ pub fn NewFunction(
globalObject: *JSGlobalObject,
symbolName: ?*const ZigString,
argCount: u32,
- comptime functionPointer: anytype,
+ comptime functionPointer: JSHostFunctionType,
strong: bool,
) JSValue {
return NewRuntimeFunction(globalObject, symbolName, argCount, &functionPointer, strong);
@@ -4999,11 +5000,11 @@ pub fn NewRuntimeFunction(
globalObject: *JSGlobalObject,
symbolName: ?*const ZigString,
argCount: u32,
- functionPointer: anytype,
+ functionPointer: JSHostFunctionPtr,
strong: bool,
) JSValue {
JSC.markBinding(@src());
- return private.Bun__CreateFFIFunctionValue(globalObject, symbolName, argCount, @ptrCast(*const anyopaque, functionPointer), strong);
+ return private.Bun__CreateFFIFunctionValue(globalObject, symbolName, argCount, functionPointer, strong);
}
pub fn getFunctionData(function: JSValue) ?*anyopaque {
diff --git a/src/bun.js/node/node_os.zig b/src/bun.js/node/node_os.zig
index 226c8659b..7b292ae36 100644
--- a/src/bun.js/node/node_os.zig
+++ b/src/bun.js/node/node_os.zig
@@ -668,7 +668,7 @@ pub const Os = struct {
return JSC.JSValue.jsNumberFromUint64(C.getSystemUptime());
}
- pub fn userInfo(globalThis: *JSC.JSGlobalObject, callframe: *JSC.CallFrame) JSC.JSValue {
+ pub fn userInfo(globalThis: *JSC.JSGlobalObject, callframe: *JSC.CallFrame) callconv(.C) JSC.JSValue {
const result = JSC.JSValue.createEmptyObject(globalThis, 5);
result.put(globalThis, JSC.ZigString.static("homedir"), homedir(globalThis, callframe));