Closed
Description
emcc tests\hello_world.c -o a.html -O2 --closure 1 -s CLOSURE_WARNINGS=error
prints out
E:\code\emsdk\emscripten\master>emcc tests\hello_world.c -o a.html -O2 --closure 1 -s CLOSURE_WARNINGS=error
building:ERROR: Closure compiler completed with warnings and -s CLOSURE_WARNINGS=error enabled, aborting!
building:ERROR: C:/Users/jukkaj/AppData/Local/Temp/emscripten_temp_dj7axm3w/a.js.jso.js:31:4095: WARNING - [JSC_WRONG_ARGUMENT_COUNT] Function WebAssembly.RuntimeError: called with 1 argument(s). Function requires at least 0 argument(s) and no more than 0 argument(s).
31| */function UTF8ToString(ptr,maxBytesToRead){return ptr?UTF8ArrayToString(HEAPU8,ptr,maxBytesToRead):""}function stringToUTF8Array(str,heap,outIdx,maxBytesToWrite){if(!(maxBytesToWrite>0))return 0;var startIdx=outIdx;var endIdx=outIdx+maxBytesToWrite-1;for(var i=0;i<str.length;++i){var u=str.charCodeAt(i);if(u>=55296&&u<=57343){var u1=str.charCodeAt(++i);u=65536+((u&1023)<<10)|(u1&1023)}if(u<=127){if(outIdx>=endIdx)break;heap[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;heap[outIdx++]=192|(u>>6);heap[outIdx++]=128|(u&63)}else if(u<=65535){if(outIdx+2>=endIdx)break;heap[outIdx++]=224|(u>>12);heap[outIdx++]=128|((u>>6)&63);heap[outIdx++]=128|(u&63)}else{if(outIdx+3>=endIdx)break;heap[outIdx++]=240|(u>>18);heap[outIdx++]=128|((u>>12)&63);heap[outIdx++]=128|((u>>6)&63);heap[outIdx++]=128|(u&63)}}heap[outIdx]=0;return outIdx-startIdx}function stringToUTF8(str,outPtr,maxBytesToWrite){return stringToUTF8Array(str,HEAPU8,outPtr,maxBytesToWrite)}function lengthBytesUTF8(str){var len=0;for(var i=0;i<str.length;++i){var u=str.charCodeAt(i);if(u>=55296&&u<=57343)u=65536+((u&1023)<<10)|(str.charCodeAt(++i)&1023);if(u<=127)++len;else if(u<=2047)len+=2;else if(u<=65535)len+=3;else len+=4}return len}var UTF16Decoder=typeof TextDecoder!=="undefined"?new TextDecoder("utf-16le"):undefined;function writeArrayToMemory(array,buffer){HEAP8.set(array,buffer)}/** @param {boolean=} dontAddNull */function writeAsciiToMemory(str,buffer,dontAddNull){for(var i=0;i<str.length;++i){HEAP8[((buffer++)>>0)]=str.charCodeAt(i)}if(!dontAddNull)HEAP8[((buffer)>>0)]=0}var/** @type {ArrayBuffer} */buffer,/** @type {Int8Array} */HEAP8,/** @type {Uint8Array} */HEAPU8,/** @type {Int16Array} */HEAP16,/** @type {Uint16Array} */HEAPU16,/** @type {Int32Array} */HEAP32,/** @type {Uint32Array} */HEAPU32,/** @type {Float32Array} */HEAPF32,/** @type {Float64Array} */HEAPF64;function updateGlobalBufferAndViews(buf){buffer=buf;Module["HEAP8"]=HEAP8=new Int8Array(buf);Module["HEAP16"]=HEAP16=new Int16Array(buf);Module["HEAP32"]=HEAP32=new Int32Array(buf);Module["HEAPU8"]=HEAPU8=new Uint8Array(buf);Module["HEAPU16"]=HEAPU16=new Uint16Array(buf);Module["HEAPU32"]=HEAPU32=new Uint32Array(buf);Module["HEAPF32"]=HEAPF32=new Float32Array(buf);Module["HEAPF64"]=HEAPF64=new Float64Array(buf)}var INITIAL_MEMORY=Module["INITIAL_MEMORY"]||16777216;if(Module["wasmMemory"]){wasmMemory=Module["wasmMemory"]}else{wasmMemory=new WebAssembly.Memory({"initial":INITIAL_MEMORY/65536,"maximum":INITIAL_MEMORY/65536})}if(wasmMemory){buffer=wasmMemory.buffer}INITIAL_MEMORY=buffer.byteLength;updateGlobalBufferAndViews(buffer);var wasmTable;var __ATPRERUN__=[];var __ATINIT__=[];var __ATMAIN__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;var runtimeExited=false;function preRun(){if(Module["preRun"]){if(typeof Module["preRun"]=="function")Module["preRun"]=[Module["preRun"]];while(Module["preRun"].length){addOnPreRun(Module["preRun"].shift())}}callRuntimeCallbacks(__ATPRERUN__)}function initRuntime(){runtimeInitialized=true;callRuntimeCallbacks(__ATINIT__)}function preMain(){callRuntimeCallbacks(__ATMAIN__)}function exitRuntime(){runtimeExited=true}function postRun(){if(Module["postRun"]){if(typeof Module["postRun"]=="function")Module["postRun"]=[Module["postRun"]];while(Module["postRun"].length){addOnPostRun(Module["postRun"].shift())}}callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(cb){__ATPRERUN__.unshift(cb)}function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}var runDependencies=0;var runDependencyWatcher=null;var dependenciesFulfilled=null;function addRunDependency(id){runDependencies++;if(Module["monitorRunDependencies"]){Module["monitorRunDependencies"](runDependencies)}}function removeRunDependency(id){runDependencies--;if(Module["monitorRunDependencies"]){Module["monitorRunDependencies"](runDependencies)}if(runDependencies==0){if(runDependencyWatcher!==null){clearInterval(runDependencyWatcher);runDependencyWatcher=null}if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback()}}}Module["preloadedImages"]={};Module["preloadedAudios"]={};/** @param {string|number=} what */function abort(what){if(Module["onAbort"]){Module["onAbort"](what)}what+="";err(what);ABORT=true;EXITSTATUS=1;what="abort("+what+"). Build with -s ASSERTIONS=1 for more info.";var e=new WebAssembly.RuntimeError(what);throw e}/**
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
C:/Users/jukkaj/AppData/Local/Temp/emscripten_temp_dj7axm3w/a.js.jso.js:35:2050: WARNING - [JSC_TYPE_MISMATCH] actual parameter 1 of WebAssembly.instantiateStreaming does not match formal parameter
found : Response
required: Promise<Response>
35| */function hasPrefix(str,prefix){return String.prototype.startsWith?str.startsWith(prefix):str.indexOf(prefix)===0}var dataURIPrefix="data:application/octet-stream;base64,";function isDataURI(filename){return hasPrefix(filename,dataURIPrefix)}var fileURIPrefix="file://";function isFileURI(filename){return hasPrefix(filename,fileURIPrefix)}var wasmBinaryFile="a.wasm";if(!isDataURI(wasmBinaryFile)){wasmBinaryFile=locateFile(wasmBinaryFile)}function getBinary(){try{if(wasmBinary){return new Uint8Array(wasmBinary)}if(readBinary){return readBinary(wasmBinaryFile)}else{throw"both async and sync fetching of the wasm failed"}}catch(err){abort(err)}}function getBinaryPromise(){if(!wasmBinary&&(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)&&typeof fetch==="function"&&!isFileURI(wasmBinaryFile)){return fetch(wasmBinaryFile,{credentials:"same-origin"}).then(function(response){if(!response["ok"]){throw"failed to load wasm binary file at '"+wasmBinaryFile+"'"}return response["arrayBuffer"]()}).catch(function(){return getBinary()})}return Promise.resolve().then(getBinary)}function createWasm(){var info={"env":asmLibraryArg,"wasi_snapshot_preview1":asmLibraryArg};/** @param {WebAssembly.Module=} module*/function receiveInstance(instance,module){var exports=instance.exports;Module["asm"]=exports;wasmTable=Module["asm"]["__indirect_function_table"];removeRunDependency("wasm-instantiate")}addRunDependency("wasm-instantiate");function receiveInstantiatedSource(output){receiveInstance(output["instance"])}function instantiateArrayBuffer(receiver){return getBinaryPromise().then(function(binary){return WebAssembly.instantiate(binary,info)}).then(receiver,function(reason){err("failed to asynchronously prepare wasm: "+reason);abort(reason)})}function instantiateAsync(){if(!wasmBinary&&typeof WebAssembly.instantiateStreaming==="function"&&!isDataURI(wasmBinaryFile)&&!isFileURI(wasmBinaryFile)&&typeof fetch==="function"){return fetch(wasmBinaryFile,{credentials:"same-origin"}).then(function(response){var result=WebAssembly.instantiateStreaming(response,info);return result.then(receiveInstantiatedSource,function(reason){err("wasm streaming compile failed: "+reason);err("falling back to ArrayBuffer instantiation");return instantiateArrayBuffer(receiveInstantiatedSource)})})}else{return instantiateArrayBuffer(receiveInstantiatedSource)}}if(Module["instantiateWasm"]){try{var exports=Module["instantiateWasm"](info,receiveInstance);return exports}catch(e){err("Module.instantiateWasm callback failed with error: "+e);return false}}instantiateAsync();return{}}var tempDouble;var tempI64;function callRuntimeCallbacks(callbacks){while(callbacks.length>0){var callback=callbacks.shift();if(typeof callback=="function"){callback(Module);continue}var func=callback.func;if(typeof func==="number"){if(callback.arg===undefined){wasmTable.get(func)()}else{wasmTable.get(func)(callback.arg)}}else{func(callback.arg===undefined?null:callback.arg)}}}function demangle(func){return func}function demangleAll(text){var regex=/\b_Z[\w\d_]+/g;return text.replace(regex,function(x){var y=demangle(x);return x===y?x:(y+" ["+x+"]")})}function dynCallLegacy(sig,ptr,args){if(args&&args.length){return Module["dynCall_"+sig].apply(null,[ptr].concat(args))}return Module["dynCall_"+sig].call(null,ptr)}function jsStackTrace(){var error=new Error;if(!error.stack){try{throw new Error}catch(e){error=e}if(!error.stack){return"(no stack trace available)"}}return error.stack.toString()}function _emscripten_memcpy_big(dest,src,num){HEAPU8.copyWithin(dest,src,src+num)}var SYSCALLS={mappings:{},buffers:[null,[],[]],printChar:function(stream,curr){var buffer=SYSCALLS.buffers[stream];if(curr===0||curr===10){(stream===1?out:err)(UTF8ArrayToString(buffer,0));buffer.length=0}else{buffer.push(curr)}},varargs:undefined,get:function(){SYSCALLS.varargs+=4;var ret=HEAP32[(((SYSCALLS.varargs)-(4))>>2)];return ret},getStr:function(ptr){var ret=UTF8ToString(ptr);return ret},get64:function(low,high){return low}};function _fd_write(fd,iov,iovcnt,pnum){var num=0;for(var i=0;i<iovcnt;i++){var ptr=HEAP32[(((iov)+(i*8))>>2)];var len=HEAP32[(((iov)+(i*8+4))>>2)];for(var j=0;j<len;j++){SYSCALLS.printChar(fd,HEAPU8[ptr+j])}num+=len}HEAP32[((pnum)>>2)]=num;return 0}function _setTempRet0($i){setTempRet0(($i)|0)}var ASSERTIONS=false;__ATINIT__.push({func:function(){___wasm_call_ctors()}});var asmLibraryArg={"emscripten_memcpy_big":_emscripten_memcpy_big,"fd_write":_fd_write,"memory":wasmMemory,"setTempRet0":_setTempRet0};var asm=createWasm();/** @type {function(...*):?} */var ___wasm_call_ctors=Module["___wasm_call_ctors"]=function(){return(___wasm_call_ctors=Module["___wasm_call_ctors"]=Module["asm"]["__wasm_call_ctors"]).apply(null,arguments)};/** @type {function(...*):?} */var _main=Module["_main"]=function(){return(_main=Module["_main"]=Module["asm"]["main"]).apply(null,arguments)};/** @type {function(...*):?} */var ___errno_location=Module["___errno_location"]=function(){return(___errno_location=Module["___errno_location"]=Module["asm"]["__errno_location"]).apply(null,arguments)};/** @type {function(...*):?} */var stackSave=Module["stackSave"]=function(){return(stackSave=Module["stackSave"]=Module["asm"]["stackSave"]).apply(null,arguments)};/** @type {function(...*):?} */var stackRestore=Module["stackRestore"]=function(){return(stackRestore=Module["stackRestore"]=Module["asm"]["stackRestore"]).apply(null,arguments)};/** @type {function(...*):?} */var stackAlloc=Module["stackAlloc"]=function(){return(stackAlloc=Module["stackAlloc"]=Module["asm"]["stackAlloc"]).apply(null,arguments)};/** @type {function(...*):?} */var dynCall_jiji=Module["dynCall_jiji"]=function(){return(dynCall_jiji=Module["dynCall_jiji"]=Module["asm"]["dynCall_jiji"]).apply(null,arguments)};var calledRun;/**
^^^^^^^^
E:/code/emsdk/emscripten/master/src/closure-externs/closure-externs.js:72:0: WARNING - [JSC_DUP_VAR_DECLARATION] variable WebAssembly.Module redefined, original definition at externs.zip//webassembly.js:35
72| WebAssembly.Module = function(bytes) {};
^^^^^^^^^^^^^^^^^^
E:/code/emsdk/emscripten/master/src/closure-externs/closure-externs.js:78:0: WARNING - [JSC_DUP_VAR_DECLARATION] variable WebAssembly.Instance redefined, original definition at externs.zip//webassembly.js:42
78| WebAssembly.Instance = function(moduleObject, importObject) {};
^^^^^^^^^^^^^^^^^^^^
E:/code/emsdk/emscripten/master/src/closure-externs/closure-externs.js:83:0: WARNING - [JSC_DUP_VAR_DECLARATION] variable WebAssembly.Memory redefined, original definition at externs.zip//webassembly.js:53
83| WebAssembly.Memory = function(memoryDescriptor) {};
^^^^^^^^^^^^^^^^^^
E:/code/emsdk/emscripten/master/src/closure-externs/closure-externs.js:88:0: WARNING - [JSC_DUP_VAR_DECLARATION] variable WebAssembly.Table redefined, original definition at externs.zip//webassembly.js:64
88| WebAssembly.Table = function(tableDescriptor) {};
^^^^^^^^^^^^^^^^^
E:/code/emsdk/emscripten/master/src/closure-externs/closure-externs.js:93:0: WARNING - [JSC_DUP_VAR_DECLARATION] variable WebAssembly.CompileError redefined, original definition at externs.zip//webassembly.js:70
93| WebAssembly.CompileError = function() {};
^^^^^^^^^^^^^^^^^^^^^^^^
E:/code/emsdk/emscripten/master/src/closure-externs/closure-externs.js:98:0: WARNING - [JSC_DUP_VAR_DECLARATION] variable WebAssembly.LinkError redefined, original definition at externs.zip//webassembly.js:76
98| WebAssembly.LinkError = function() {};
^^^^^^^^^^^^^^^^^^^^^
E:/code/emsdk/emscripten/master/src/closure-externs/closure-externs.js:106:0: WARNING - [JSC_DUP_VAR_DECLARATION] variable WebAssembly.RuntimeError redefined, original definition at externs.zip//webassembly.js:82
106| WebAssembly.RuntimeError = function(message, fileName, lineNumber) {};
^^^^^^^^^^^^^^^^^^^^^^^^
E:/code/emsdk/emscripten/master/src/closure-externs/closure-externs.js:106:27: WARNING - [JSC_TYPE_REDEFINITION] attempted re-definition of type WebAssembly.RuntimeError
found : (typeof WebAssembly.RuntimeError)
expected: (typeof WebAssembly.RuntimeError)
106| WebAssembly.RuntimeError = function(message, fileName, lineNumber) {};
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
E:/code/emsdk/emscripten/master/src/closure-externs/closure-externs.js:116:0: WARNING - [JSC_TYPE_MISMATCH] assignment to property instantiate of WebAssembly
found : function((ArrayBuffer|ArrayBufferView), (Object|null)=): Promise<{
instance: (WebAssembly.Instance|null),
module: (WebAssembly.Module|null)
}>
required: function((ArrayBuffer|ArrayBufferView), (Object|null)=): Promise<{
instance: WebAssembly.Instance,
module: WebAssembly.Module
}>
116| WebAssembly.instantiate = function(moduleObject, importObject) {};
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
E:/code/emsdk/emscripten/master/src/closure-externs/closure-externs.js:116:0: WARNING - [JSC_DUP_VAR_DECLARATION_TYPE_MISMATCH] variable WebAssembly.instantiate redefined with type function((ArrayBuffer|ArrayBufferView), (Object|null)=): Promise<{
instance: (WebAssembly.Instance|null),
module: (WebAssembly.Module|null)
}>, original definition at externs.zip//webassembly.js:91 with type function((ArrayBuffer|ArrayBufferView), (Object|null)=): Promise<{
instance: WebAssembly.Instance,
module: WebAssembly.Module
}>
116| WebAssembly.instantiate = function(moduleObject, importObject) {};
^^^^^^^^^^^^^^^^^^^^^^^
E:/code/emsdk/emscripten/master/src/closure-externs/closure-externs.js:122:0: WARNING - [JSC_TYPE_MISMATCH] assignment to property instantiateStreaming of WebAssembly
found : function((Promise<Response>|Response), (Object|null)=): Promise<{
instance: (WebAssembly.Instance|null),
module: (WebAssembly.Module|null)
}>
required: function(Promise<Response>, (Object|null)=): Promise<{
instance: WebAssembly.Instance,
module: WebAssembly.Module
}>
122| WebAssembly.instantiateStreaming = function(source, importObject) {};
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
E:/code/emsdk/emscripten/master/src/closure-externs/closure-externs.js:122:0: WARNING - [JSC_DUP_VAR_DECLARATION_TYPE_MISMATCH] variable WebAssembly.instantiateStreaming redefined with type function((Promise<Response>|Response), (Object|null)=): Promise<{
instance: (WebAssembly.Instance|null),
module: (WebAssembly.Module|null)
}>, original definition at externs.zip//webassembly.js:98 with type function(Promise<Response>, (Object|null)=): Promise<{
instance: WebAssembly.Instance,
module: WebAssembly.Module
}>
122| WebAssembly.instantiateStreaming = function(source, importObject) {};
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
E:/code/emsdk/emscripten/master/src/closure-externs/closure-externs.js:127:0: WARNING - [JSC_DUP_VAR_DECLARATION] variable WebAssembly.compile redefined, original definition at externs.zip//webassembly.js:104
127| WebAssembly.compile = function(bytes) {};
^^^^^^^^^^^^^^^^^^^
E:/code/emsdk/emscripten/master/src/closure-externs/closure-externs.js:132:0: WARNING - [JSC_DUP_VAR_DECLARATION] variable WebAssembly.validate redefined, original definition at externs.zip//webassembly.js:117
132| WebAssembly.validate = function(bytes) {};
^^^^^^^^^^^^^^^^^^^^
E:/code/emsdk/emscripten/master/src/closure-externs/closure-externs.js:137:0: WARNING - [JSC_DUP_VAR_DECLARATION] variable WebAssembly.Module.exports redefined, original definition at externs.zip//webassembly.js:123
137| WebAssembly.Module.exports = function(moduleObject) {};
^^^^^^^^^^^^^^^^^^^^^^^^^^
E:/code/emsdk/emscripten/master/src/closure-externs/closure-externs.js:142:0: WARNING - [JSC_DUP_VAR_DECLARATION] variable WebAssembly.Module.imports redefined, original definition at externs.zip//webassembly.js:129
142| WebAssembly.Module.imports = function(moduleObject) {};
^^^^^^^^^^^^^^^^^^^^^^^^^^
E:/code/emsdk/emscripten/master/src/closure-externs/closure-externs.js:148:0: WARNING - [JSC_DUP_VAR_DECLARATION] variable WebAssembly.Module.customSections redefined, original definition at externs.zip//webassembly.js:136
148| WebAssembly.Module.customSections = function(moduleObject, sectionName) {};
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
E:/code/emsdk/emscripten/master/src/closure-externs/closure-externs.js:155:0: WARNING - [JSC_DUP_VAR_DECLARATION] variable WebAssembly.Memory.prototype.grow redefined, original definition at externs.zip//webassembly.js:144
155| WebAssembly.Memory.prototype.grow = function(delta) {};
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
E:/code/emsdk/emscripten/master/src/closure-externs/closure-externs.js:164:0: WARNING - [JSC_DUP_VAR_DECLARATION] variable WebAssembly.Table.prototype.grow redefined, original definition at externs.zip//webassembly.js:155
164| WebAssembly.Table.prototype.grow = function(delta) {};
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
E:/code/emsdk/emscripten/master/src/closure-externs/closure-externs.js:173:0: WARNING - [JSC_DUP_VAR_DECLARATION] variable WebAssembly.Table.prototype.get redefined, original definition at externs.zip//webassembly.js:169
173| WebAssembly.Table.prototype.get = function(index) {};
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
E:/code/emsdk/emscripten/master/src/closure-externs/closure-externs.js:178:0: WARNING - [JSC_DUP_VAR_DECLARATION] variable WebAssembly.Table.prototype.set redefined, original definition at externs.zip//webassembly.js:176
178| WebAssembly.Table.prototype.set = function(index, value) {};
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
E:/code/emsdk/emscripten/master/src/closure-externs/closure-externs.js:305:0: WARNING - [JSC_DUP_VAR_DECLARATION_TYPE_MISMATCH] variable BaseAudioContext.prototype.audioWorklet redefined with type (AudioWorklet|null), original definition at externs.zip//w3c_audio.js:45 with type AudioWorklet
305| BaseAudioContext.prototype.audioWorklet;
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
0 error(s), 24 warning(s), 77.5% typed
building:WARNING: (rerun with -g1 linker flag for an unminified output)
emcc: error: closure compiler produced warnings and -s CLOSURE_WARNINGS=error enabled
-s CLOSURE_WARNINGS=warn
used to be clean on almost all build modes, but we could not make it a default because there still were some corner cases, so never added tests. It looks like the mode has regressed further.
I believe this is because both Closure upstream now recognizes WebAssembly API in its externs, but also our own externs carry the same API.
Additionally, at a glance it looks like upstream WebAssembly API externs are out of date(?) or erroneous, so simply deleting out externs does not get us back to warnings clean.
Would be good to clean this up and add a test for
emcc tests\hello_world.c -o a.html -O2 --closure 1 -s CLOSURE_WARNINGS=error
in the suite at least.
Metadata
Metadata
Assignees
Labels
No labels