// Type conversion error for native function should report its name and type // in C style. load(libdir + 'asserts.js'); function test() { let lib; try { lib = ctypes.open(ctypes.libraryName("m")); } catch (e) { } if (!lib) return; let func = lib.declare("hypot", ctypes.default_abi, ctypes.double, ctypes.double, ctypes.double); assertTypeErrorMessage(() => { func(1, "xyzzy"); }, "can't pass the string \"xyzzy\" to argument 2 of double hypot(double, double)"); // test C style source for various types let test_struct = ctypes.StructType("test_struct", [{ "x": ctypes.int32_t }]); let test_func = ctypes.FunctionType(ctypes.default_abi, ctypes.voidptr_t, [ctypes.int32_t]).ptr; func = lib.declare("hypot", ctypes.default_abi, ctypes.double, ctypes.double, ctypes.int32_t.ptr.ptr.ptr.array(), test_struct, test_struct.ptr.ptr, test_func, test_func.ptr.ptr.ptr, "..."); assertTypeErrorMessage(() => { func("xyzzy", 1, 2, 3, 4, 5); }, "can't pass the string \"xyzzy\" to argument 1 of double hypot(double, int32_t****, struct test_struct, struct test_struct**, void* (*)(int32_t), void* (****)(int32_t), ...)"); } if (typeof ctypes === "object") test();