diff --git a/src/embind/embind.js b/src/embind/embind.js index bee7627b4c9a0..4be33d707b4c3 100644 --- a/src/embind/embind.js +++ b/src/embind/embind.js @@ -101,7 +101,7 @@ var LibraryEmbind = { proto[methodName] = function(...args) { // TODO This check can be removed in -O3 level "unsafe" optimizations. if (!proto[methodName].overloadTable.hasOwnProperty(args.length)) { - throwBindingError(`Function '${humanName}' called with an invalid number of arguments (${args.length}) - expects one of (${proto[methodName].overloadTable})!`); + throwBindingError(`Function '${humanName}' called with an invalid number of arguments (${args.length}) - expects one of (${proto[methodName].overloadTable})!`); } return proto[methodName].overloadTable[args.length].apply(this, args); }; @@ -953,7 +953,7 @@ var LibraryEmbind = { throwUnboundTypeError(`Cannot call ${name} due to unbound types`, argTypes); }, argCount - 1); - whenDependentTypesAreResolved([], argTypes, function(argTypes) { + whenDependentTypesAreResolved([], argTypes, (argTypes) => { var invokerArgsArray = [argTypes[0] /* return value */, null /* no class 'this'*/].concat(argTypes.slice(1) /* actual params */); replacePublicSymbol(name, craftInvokerFunction(name, invokerArgsArray, null /* no class 'this'*/, rawInvoker, fn, isAsync), argCount - 1); return []; @@ -1015,7 +1015,7 @@ var LibraryEmbind = { var rawConstructor = reg.rawConstructor; var rawDestructor = reg.rawDestructor; - whenDependentTypesAreResolved([rawTupleType], elementTypes, function(elementTypes) { + whenDependentTypesAreResolved([rawTupleType], elementTypes, (elementTypes) => { elements.forEach((elt, i) => { var getterReturnType = elementTypes[i]; var getter = elt.getter; @@ -1753,7 +1753,7 @@ var LibraryEmbind = { whenDependentTypesAreResolved( [rawType, rawPointerType, rawConstPointerType], baseClassRawType ? [baseClassRawType] : [], - function(base) { + (base) => { base = base[0]; var baseClass; @@ -1851,7 +1851,7 @@ var LibraryEmbind = { var args = [rawConstructor]; var destructors = []; - whenDependentTypesAreResolved([], [rawClassType], function(classType) { + whenDependentTypesAreResolved([], [rawClassType], (classType) => { classType = classType[0]; var humanName = `constructor ${classType.name}`; @@ -1938,7 +1938,7 @@ var LibraryEmbind = { methodName = getFunctionName(methodName); rawInvoker = embind__requireFunction(invokerSignature, rawInvoker); - whenDependentTypesAreResolved([], [rawClassType], function(classType) { + whenDependentTypesAreResolved([], [rawClassType], (classType) => { classType = classType[0]; var humanName = `${classType.name}.${methodName}`; @@ -1969,11 +1969,13 @@ var LibraryEmbind = { proto[methodName].overloadTable[argCount - 2] = unboundTypesHandler; } - whenDependentTypesAreResolved([], rawArgTypes, function(argTypes) { + whenDependentTypesAreResolved([], rawArgTypes, (argTypes) => { var memberFunction = craftInvokerFunction(humanName, argTypes, classType, rawInvoker, context, isAsync); - // Replace the initial unbound-handler-stub function with the appropriate member function, now that all types - // are resolved. If multiple overloads are registered for this function, the function goes into an overload table. + // Replace the initial unbound-handler-stub function with the + // appropriate member function, now that all types are resolved. If + // multiple overloads are registered for this function, the function + // goes into an overload table. if (undefined === proto[methodName].overloadTable) { // Set argCount in case an overload is registered later memberFunction.argCount = argCount - 2; @@ -2005,7 +2007,7 @@ var LibraryEmbind = { fieldName = readLatin1String(fieldName); getter = embind__requireFunction(getterSignature, getter); - whenDependentTypesAreResolved([], [classType], function(classType) { + whenDependentTypesAreResolved([], [classType], (classType) => { classType = classType[0]; var humanName = `${classType.name}.${fieldName}`; var desc = { @@ -2026,7 +2028,7 @@ var LibraryEmbind = { whenDependentTypesAreResolved( [], (setter ? [getterReturnType, setterArgumentType] : [getterReturnType]), - function(types) { + (types) => { var getterReturnType = types[0]; var desc = { get() { @@ -2071,7 +2073,7 @@ var LibraryEmbind = { methodName = readLatin1String(methodName); methodName = getFunctionName(methodName); rawInvoker = embind__requireFunction(invokerSignature, rawInvoker); - whenDependentTypesAreResolved([], [rawClassType], function(classType) { + whenDependentTypesAreResolved([], [rawClassType], (classType) => { classType = classType[0]; var humanName = `${classType.name}.${methodName}`; @@ -2095,7 +2097,7 @@ var LibraryEmbind = { proto[methodName].overloadTable[argCount-1] = unboundTypesHandler; } - whenDependentTypesAreResolved([], rawArgTypes, function(argTypes) { + whenDependentTypesAreResolved([], rawArgTypes, (argTypes) => { // Replace the initial unbound-types-handler stub with the proper // function. If multiple overloads are registered, the function handlers // go into an overload table. @@ -2138,7 +2140,7 @@ var LibraryEmbind = { fieldName = readLatin1String(fieldName); getter = embind__requireFunction(getterSignature, getter); - whenDependentTypesAreResolved([], [rawClassType], function(classType) { + whenDependentTypesAreResolved([], [rawClassType], (classType) => { classType = classType[0]; var humanName = `${classType.name}.${fieldName}`; var desc = { @@ -2160,7 +2162,7 @@ var LibraryEmbind = { Object.defineProperty(classType.registeredClass.constructor, fieldName, desc); - whenDependentTypesAreResolved([], [rawFieldType], function(fieldType) { + whenDependentTypesAreResolved([], [rawFieldType], (fieldType) => { fieldType = fieldType[0]; var desc = { get() { @@ -2282,7 +2284,7 @@ var LibraryEmbind = { rawShare = embind__requireFunction(shareSignature, rawShare); rawDestructor = embind__requireFunction(destructorSignature, rawDestructor); - whenDependentTypesAreResolved([rawType], [rawPointeeType], function(pointeeType) { + whenDependentTypesAreResolved([rawType], [rawPointeeType], (pointeeType) => { pointeeType = pointeeType[0]; var registeredPointer = new RegisteredPointer(name, @@ -2342,7 +2344,7 @@ var LibraryEmbind = { _embind_register_constant__deps: ['$readLatin1String', '$whenDependentTypesAreResolved'], _embind_register_constant: (name, type, value) => { name = readLatin1String(name); - whenDependentTypesAreResolved([], [type], function(type) { + whenDependentTypesAreResolved([], [type], (type) => { type = type[0]; Module[name] = type['fromWireType'](value); return []; diff --git a/src/embind/embind_shared.js b/src/embind/embind_shared.js index 3c61ce07804e3..3e48a6fdc68d1 100644 --- a/src/embind/embind_shared.js +++ b/src/embind/embind_shared.js @@ -153,9 +153,9 @@ var LibraryEmbindShared = { $heap32VectorToArray: (count, firstElement) => { var array = []; for (var i = 0; i < count; i++) { - // TODO(https://github.com/emscripten-core/emscripten/issues/17310): - // Find a way to hoist the `>> 2` or `>> 3` out of this loop. - array.push({{{ makeGetValue('firstElement', `i * ${POINTER_SIZE}`, '*') }}}); + // TODO(https://github.com/emscripten-core/emscripten/issues/17310): + // Find a way to hoist the `>> 2` or `>> 3` out of this loop. + array.push({{{ makeGetValue('firstElement', `i * ${POINTER_SIZE}`, '*') }}}); } return array; }, @@ -165,14 +165,16 @@ var LibraryEmbindShared = { $requireRegisteredType: (rawType, humanName) => { var impl = registeredTypes[rawType]; if (undefined === impl) { - throwBindingError(humanName + " has unknown type " + getTypeName(rawType)); + throwBindingError(`${humanName} has unknown type ${getTypeName(rawType)}`); } return impl; }, $usesDestructorStack(argTypes) { - for (var i = 1; i < argTypes.length; ++i) { // Skip return value at index 0 - it's not deleted here. - if (argTypes[i] !== null && argTypes[i].destructorFunction === undefined) { // The type does not define a destructor function - must use dynamic stack + // Skip return value at index 0 - it's not deleted here. + for (var i = 1; i < argTypes.length; ++i) { + // The type does not define a destructor function - must use dynamic stack + if (argTypes[i] !== null && argTypes[i].destructorFunction === undefined) { return true; } } @@ -252,11 +254,12 @@ var LibraryEmbindShared = { invokerFnBody += (returns || isAsync ? "var rv = ":"") + "invoker(fn"+(argsListWired.length>0?", ":"")+argsListWired+");\n"; + var returnVal = returns ? "rv" : ""; #if ASYNCIFY == 1 args1.push("Asyncify"); #endif #if ASYNCIFY - invokerFnBody += "function onDone(" + (returns ? "rv" : "") + ") {\n"; + invokerFnBody += `function onDone(${returnVal}) {\n`; #endif if (needsDestructorStack) { @@ -265,8 +268,8 @@ var LibraryEmbindShared = { for (var i = isClassMethodFunc?1:2; i < argTypes.length; ++i) { // Skip return value at index 0 - it's not deleted here. Also skip class type if not a method. var paramName = (i === 1 ? "thisWired" : ("arg"+(i - 2)+"Wired")); if (argTypes[i].destructorFunction !== null) { - invokerFnBody += paramName+"_dtor("+paramName+");\n"; - args1.push(paramName+"_dtor"); + invokerFnBody += `${paramName}_dtor(${paramName});\n`; + args1.push(`${paramName}_dtor`); } } } @@ -285,10 +288,10 @@ var LibraryEmbindShared = { #if ASYNCIFY == 1 invokerFnBody += "}\n"; - invokerFnBody += "return Asyncify.currData ? Asyncify.whenDone().then(onDone) : onDone(" + (returns ? "rv" : "") +");\n" + invokerFnBody += `return Asyncify.currData ? Asyncify.whenDone().then(onDone) : onDone(${returnVal});\n` #elif ASYNCIFY == 2 invokerFnBody += "}\n"; - invokerFnBody += "return " + (isAsync ? "rv.then(onDone)" : "onDone(" + (returns ? "rv" : "") + ")") + ";"; + invokerFnBody += "return " + (isAsync ? "rv.then(onDone)" : `onDone(${returnVal})`) + ";"; #endif invokerFnBody += "}\n"; diff --git a/src/library_ccall.js b/src/library_ccall.js index 0eedb39017e3c..fe816644b95ce 100644 --- a/src/library_ccall.js +++ b/src/library_ccall.js @@ -143,8 +143,6 @@ addToLibrary({ return getCFunc(ident); } #endif - return function() { - return ccall(ident, returnType, argTypes, arguments, opts); - } + return (...args) => ccall(ident, returnType, argTypes, args, opts); }, });