Skip to content

Commit bd05b48

Browse files
authored
Use nullish operators where is makes sense. NFC (#26864)
1 parent ed73db0 commit bd05b48

17 files changed

Lines changed: 57 additions & 58 deletions

src/Fetch.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,7 @@ class FetchXHR {
8181
// Handle Basic Authentication if user/password are provided.
8282
// This creates a base64-encoded string and sets the Authorization header.
8383
if (user) {
84-
const credentials = btoa(`${user}:${password || ''}`);
84+
const credentials = btoa(`${user}:${password ?? ''}`);
8585
this._headers['Authorization'] = `Basic ${credentials}`;
8686
}
8787

@@ -593,7 +593,7 @@ function fetchXHR(fetch, onsuccess, onerror, onprogress, onreadystatechange) {
593593
{{{ makeSetValue('fetch', C_STRUCTS.emscripten_fetch_t.data, 'ptr', '*') }}}
594594
writeI53ToI64(fetch + {{{ C_STRUCTS.emscripten_fetch_t.numBytes }}}, ptrLen);
595595
writeI53ToI64(fetch + {{{ C_STRUCTS.emscripten_fetch_t.dataOffset }}}, 0);
596-
var len = xhr.response ? xhr.response.byteLength : 0;
596+
var len = xhr.response?.byteLength ?? 0;
597597
if (len) {
598598
// If the final XHR.onload handler receives the bytedata to compute total length, report that,
599599
// otherwise don't write anything out here, which will retain the latest byte size reported in
@@ -660,7 +660,7 @@ function fetchXHR(fetch, onsuccess, onerror, onprogress, onreadystatechange) {
660660
if (!Fetch.xhrs.has(id)) {
661661
return;
662662
}
663-
var ptrLen = (fetchAttrLoadToMemory && fetchAttrStreamData && xhr.response) ? xhr.response.byteLength : 0;
663+
var ptrLen = (fetchAttrLoadToMemory && fetchAttrStreamData) ? xhr.response?.byteLength ?? 0 : 0;
664664
var ptr = 0;
665665
if (ptrLen > 0 && fetchAttrLoadToMemory && fetchAttrStreamData) {
666666
#if FETCH_DEBUG

src/jsifier.mjs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -136,7 +136,7 @@ function getTransitiveDeps(symbol) {
136136
while (toVisit.length) {
137137
const sym = toVisit.pop();
138138
if (!seen.has(sym)) {
139-
let directDeps = LibraryManager.library[sym + '__deps'] || [];
139+
let directDeps = LibraryManager.library[sym + '__deps'] ?? [];
140140
directDeps = directDeps.filter((d) => typeof d === 'string');
141141
for (const dep of directDeps) {
142142
if (!transitiveDeps.has(dep)) {
@@ -228,7 +228,7 @@ function checkDependencies(symbol, snippet, deps, postset) {
228228
continue;
229229
}
230230
const mangled = mangleCSymbolName(dep);
231-
if (!snippet.includes(mangled) && (!postset || !postset.includes(mangled))) {
231+
if (!snippet.includes(mangled) && !postset?.includes(mangled)) {
232232
error(`${symbol}: unused dependency: ${dep}`);
233233
}
234234
}
@@ -883,7 +883,7 @@ function(${args}) {
883883

884884
writeOutput('// Begin JS library code\n');
885885
for (const item of libraryItems.concat(postSets)) {
886-
writeOutput(indentify(item || '', 2));
886+
writeOutput(indentify(item ?? '', 2));
887887
}
888888
writeOutput('// End JS library code\n');
889889

src/lib/libcore.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1522,7 +1522,7 @@ addToLibrary({
15221522

15231523
_emscripten_sanitizer_get_option__deps: ['$stringToNewUTF8', '$UTF8ToString'],
15241524
_emscripten_sanitizer_get_option__sig: 'pp',
1525-
_emscripten_sanitizer_get_option: (name) => stringToNewUTF8(Module[UTF8ToString(name)] || ''),
1525+
_emscripten_sanitizer_get_option: (name) => stringToNewUTF8(Module[UTF8ToString(name)] ?? ''),
15261526
#endif
15271527

15281528
$readEmAsmArgsArray: [],
@@ -1725,7 +1725,7 @@ addToLibrary({
17251725
return "./this.program";
17261726
},
17271727
#else
1728-
$getExecutableName: () => thisProgram || './this.program',
1728+
$getExecutableName: () => thisProgram ?? './this.program',
17291729
#endif
17301730

17311731
// Receives a Web Audio context plus a set of elements to listen for user
@@ -2246,7 +2246,7 @@ addToLibrary({
22462246
return this.allocated[id] !== undefined;
22472247
}
22482248
allocate(handle) {
2249-
var id = this.freelist.pop() || this.allocated.length;
2249+
var id = this.freelist.pop() ?? this.allocated.length;
22502250
this.allocated[id] = handle;
22512251
return id;
22522252
}

src/lib/libfs.js

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1342,8 +1342,8 @@ FS.staticInit();`;
13421342
return stream.stream_ops.ioctl(stream, cmd, arg);
13431343
},
13441344
readFile(path, opts = {}) {
1345-
opts.flags = opts.flags || {{{ cDefs.O_RDONLY }}};
1346-
opts.encoding = opts.encoding || 'binary';
1345+
opts.flags = opts.flags ?? {{{ cDefs.O_RDONLY }}};
1346+
opts.encoding = opts.encoding ?? 'binary';
13471347
if (opts.encoding !== 'utf8' && opts.encoding !== 'binary') {
13481348
abort(`Invalid encoding type "${opts.encoding}"`);
13491349
}
@@ -1362,7 +1362,7 @@ FS.staticInit();`;
13621362
* @param {TypedArray|Array|string} data
13631363
*/
13641364
writeFile(path, data, opts = {}) {
1365-
opts.flags = opts.flags || {{{ cDefs.O_TRUNC | cDefs.O_CREAT | cDefs.O_WRONLY }}};
1365+
opts.flags = opts.flags ?? {{{ cDefs.O_TRUNC | cDefs.O_CREAT | cDefs.O_WRONLY }}};
13661366
var stream = FS.open(path, opts.flags, opts.mode);
13671367
data = FS_fileDataToTypedArray(data);
13681368
FS.write(stream, data, 0, data.byteLength, undefined, opts.canOwn);
@@ -1755,8 +1755,8 @@ FS.staticInit();`;
17551755

17561756
// Function to get a range from the remote URL.
17571757
var doXHR = (from, to) => {
1758-
if (from > to) abort("invalid range (" + from + ", " + to + ") or no bytes requested!");
1759-
if (to > datalength-1) abort("only " + datalength + " bytes available! programmer error!");
1758+
if (from > to) abort(`invalid range (${from}, ${to}) or no bytes requested!`);
1759+
if (to > datalength-1) abort(`only ${datalength} bytes available! programmer error!`);
17601760

17611761
// TODO: Use mozResponseArrayBuffer, responseStream, etc. if available.
17621762
var xhr = new XMLHttpRequest();
@@ -1774,7 +1774,7 @@ FS.staticInit();`;
17741774
if (xhr.response !== undefined) {
17751775
return new Uint8Array(/** @type{Array<number>} */(xhr.response || []));
17761776
}
1777-
return intArrayFromString(xhr.responseText || '', true);
1777+
return intArrayFromString(xhr.responseText ?? '', true);
17781778
};
17791779
var lazyArray = this;
17801780
lazyArray.setDataGetter((chunkNum) => {

src/lib/libhtml5.js

Lines changed: 10 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -245,10 +245,9 @@ var LibraryHTML5 = {
245245
#endif
246246

247247
getNodeNameForTarget(target) {
248-
if (!target) return '';
249248
if (target == window) return '#window';
250249
if (target == screen) return '#screen';
251-
return target?.nodeName || '';
250+
return target?.nodeName ?? '';
252251
},
253252

254253
fullscreenEnabled() {
@@ -297,10 +296,10 @@ var LibraryHTML5 = {
297296
HEAP32[idx + {{{ C_STRUCTS.EmscriptenKeyboardEvent.charCode / 4 }}}] = e.charCode;
298297
HEAP32[idx + {{{ C_STRUCTS.EmscriptenKeyboardEvent.keyCode / 4 }}}] = e.keyCode;
299298
HEAP32[idx + {{{ C_STRUCTS.EmscriptenKeyboardEvent.which / 4 }}}] = e.which;
300-
stringToUTF8(e.key || '', keyEventData + {{{ C_STRUCTS.EmscriptenKeyboardEvent.key }}}, {{{ cDefs.EM_HTML5_SHORT_STRING_LEN_BYTES }}});
301-
stringToUTF8(e.code || '', keyEventData + {{{ C_STRUCTS.EmscriptenKeyboardEvent.code }}}, {{{ cDefs.EM_HTML5_SHORT_STRING_LEN_BYTES }}});
302-
stringToUTF8(e.char || '', keyEventData + {{{ C_STRUCTS.EmscriptenKeyboardEvent.charValue }}}, {{{ cDefs.EM_HTML5_SHORT_STRING_LEN_BYTES }}});
303-
stringToUTF8(e.locale || '', keyEventData + {{{ C_STRUCTS.EmscriptenKeyboardEvent.locale }}}, {{{ cDefs.EM_HTML5_SHORT_STRING_LEN_BYTES }}});
299+
stringToUTF8(e.key ?? '', keyEventData + {{{ C_STRUCTS.EmscriptenKeyboardEvent.key }}}, {{{ cDefs.EM_HTML5_SHORT_STRING_LEN_BYTES }}});
300+
stringToUTF8(e.code ?? '', keyEventData + {{{ C_STRUCTS.EmscriptenKeyboardEvent.code }}}, {{{ cDefs.EM_HTML5_SHORT_STRING_LEN_BYTES }}});
301+
stringToUTF8(e.char ?? '', keyEventData + {{{ C_STRUCTS.EmscriptenKeyboardEvent.charValue }}}, {{{ cDefs.EM_HTML5_SHORT_STRING_LEN_BYTES }}});
302+
stringToUTF8(e.locale ?? '', keyEventData + {{{ C_STRUCTS.EmscriptenKeyboardEvent.locale }}}, {{{ cDefs.EM_HTML5_SHORT_STRING_LEN_BYTES }}});
304303

305304
#if PTHREADS
306305
if (targetThread) __emscripten_run_callback_on_thread(targetThread, callbackfunc, eventTypeId, keyEventData, eventSize, userData);
@@ -727,7 +726,7 @@ var LibraryHTML5 = {
727726

728727
var focusEventHandlerFunc = (e) => {
729728
var nodeName = JSEvents.getNodeNameForTarget(e.target);
730-
var id = e.target.id ? e.target.id : '';
729+
var id = e.target.id ?? '';
731730

732731
var focusEvent = JSEvents.focusEvent;
733732
stringToUTF8(nodeName, focusEvent + {{{ C_STRUCTS.EmscriptenFocusEvent.nodeName }}}, {{{ cDefs.EM_HTML5_LONG_STRING_LEN_BYTES }}});
@@ -1025,11 +1024,11 @@ var LibraryHTML5 = {
10251024
// If transitioning to windowed mode, report info about the element that just was fullscreen.
10261025
var reportedElement = isFullscreen ? fullscreenElement : JSEvents.previousFullscreenElement;
10271026
var nodeName = JSEvents.getNodeNameForTarget(reportedElement);
1028-
var id = reportedElement?.id || '';
1027+
var id = reportedElement?.id ?? '';
10291028
stringToUTF8(nodeName, eventStruct + {{{ C_STRUCTS.EmscriptenFullscreenChangeEvent.nodeName }}}, {{{ cDefs.EM_HTML5_LONG_STRING_LEN_BYTES }}});
10301029
stringToUTF8(id, eventStruct + {{{ C_STRUCTS.EmscriptenFullscreenChangeEvent.id }}}, {{{ cDefs.EM_HTML5_LONG_STRING_LEN_BYTES }}});
1031-
{{{ makeSetValue('eventStruct', C_STRUCTS.EmscriptenFullscreenChangeEvent.elementWidth, 'reportedElement ? reportedElement.clientWidth : 0', 'i32') }}};
1032-
{{{ makeSetValue('eventStruct', C_STRUCTS.EmscriptenFullscreenChangeEvent.elementHeight, 'reportedElement ? reportedElement.clientHeight : 0', 'i32') }}};
1030+
{{{ makeSetValue('eventStruct', C_STRUCTS.EmscriptenFullscreenChangeEvent.elementWidth, 'reportedElement?.clientWidth ?? 0', 'i32') }}};
1031+
{{{ makeSetValue('eventStruct', C_STRUCTS.EmscriptenFullscreenChangeEvent.elementHeight, 'reportedElement?.clientHeight ?? 0', 'i32') }}};
10331032
{{{ makeSetValue('eventStruct', C_STRUCTS.EmscriptenFullscreenChangeEvent.screenWidth, 'screen.width', 'i32') }}};
10341033
{{{ makeSetValue('eventStruct', C_STRUCTS.EmscriptenFullscreenChangeEvent.screenHeight, 'screen.height', 'i32') }}};
10351034
if (isFullscreen) {
@@ -1533,7 +1532,7 @@ var LibraryHTML5 = {
15331532
/** @suppress{checkTypes} */
15341533
{{{ makeSetValue('eventStruct', C_STRUCTS.EmscriptenPointerlockChangeEvent.isActive, 'isPointerlocked', 'i8') }}};
15351534
var nodeName = JSEvents.getNodeNameForTarget(pointerLockElement);
1536-
var id = pointerLockElement?.id || '';
1535+
var id = pointerLockElement?.id ?? '';
15371536
stringToUTF8(nodeName, eventStruct + {{{ C_STRUCTS.EmscriptenPointerlockChangeEvent.nodeName }}}, {{{ cDefs.EM_HTML5_LONG_STRING_LEN_BYTES }}});
15381537
stringToUTF8(id, eventStruct + {{{ C_STRUCTS.EmscriptenPointerlockChangeEvent.id }}}, {{{ cDefs.EM_HTML5_LONG_STRING_LEN_BYTES }}});
15391538
},

src/lib/libopenal.js

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -253,8 +253,8 @@ var LibraryOpenAL = {
253253
src.bufOffset = 0.0;
254254
} else {
255255
var delta = (currentTime - src.bufStartTime) * src.playbackRate;
256-
var loopStart = buf.audioBuf._loopStart || 0.0;
257-
var loopEnd = buf.audioBuf._loopEnd || buf.audioBuf.duration;
256+
var loopStart = buf.audioBuf._loopStart ?? 0.0;
257+
var loopEnd = buf.audioBuf._loopEnd ?? buf.audioBuf.duration;
258258
if (loopEnd <= loopStart) {
259259
loopEnd = buf.audioBuf.duration;
260260
}
@@ -969,8 +969,8 @@ var LibraryOpenAL = {
969969
return [0, 0];
970970
}
971971
return [
972-
(buf.audioBuf._loopStart || 0.0) * buf.frequency,
973-
(buf.audioBuf._loopEnd || buf.length) * buf.frequency
972+
(buf.audioBuf._loopStart ?? 0.0) * buf.frequency,
973+
(buf.audioBuf._loopEnd ?? buf.length) * buf.frequency
974974
];
975975
default:
976976
#if OPENAL_DEBUG

src/lib/libpthread.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -802,7 +802,7 @@ var LibraryPThread = {
802802
#endif
803803

804804
var offscreenCanvases = {}; // Dictionary of OffscreenCanvas objects we'll transfer to the created thread to own
805-
var moduleCanvasId = Module['canvas']?.id || '';
805+
var moduleCanvasId = Module['canvas']?.id ?? '';
806806
// Note that transferredCanvasNames might be null (so we cannot do a for-of loop).
807807
for (var name of transferredCanvasNames) {
808808
name = name.trim();

src/lib/libwasmfs_js_file.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ addToLibrary({
4444
HEAPU8.set(fileData.subarray(offset, offset + length), buffer);
4545
return length;
4646
},
47-
getSize: (file) => wasmFS$JSMemoryFiles[file]?.length || 0,
47+
getSize: (file) => wasmFS$JSMemoryFiles[file]?.length ?? 0,
4848
setSize: (file, size) => {
4949
// Allocate a new array of the proper size, and copy as much data as
5050
// possible.

src/lib/libwebgl.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -219,7 +219,7 @@ for (/**@suppress{duplicate}*/var i = 0; i <= {{{ GL_POOL_TEMP_BUFFERS_SIZE }}};
219219
'WEBGL_polygon_mode'
220220
];
221221
// .getSupportedExtensions() can return null if context is lost, so coerce to empty array.
222-
return (ctx.getSupportedExtensions() || []).filter(ext => supportedExtensions.includes(ext));
222+
return ctx.getSupportedExtensions()?.filter(ext => supportedExtensions.includes(ext)) ?? [];
223223
},
224224

225225
$GLctx__internal: true,
@@ -3317,7 +3317,7 @@ for (/**@suppress{duplicate}*/var i = 0; i <= {{{ GL_POOL_TEMP_BUFFERS_SIZE }}};
33173317
#endif
33183318
GLctx.compileShader(GL.shaders[shader]);
33193319
#if GL_DEBUG
3320-
var log = (GLctx.getShaderInfoLog(GL.shaders[shader]) || '').trim();
3320+
var log = GLctx.getShaderInfoLog(GL.shaders[shader])?.trim();
33213321
if (log) dbg(`glCompileShader: ${log}`);
33223322
#endif
33233323
},
@@ -3501,7 +3501,7 @@ for (/**@suppress{duplicate}*/var i = 0; i <= {{{ GL_POOL_TEMP_BUFFERS_SIZE }}};
35013501
program = GL.programs[program];
35023502
GLctx.linkProgram(program);
35033503
#if GL_DEBUG
3504-
var log = (GLctx.getProgramInfoLog(program) || '').trim();
3504+
var log = GLctx.getProgramInfoLog(program)?.trim();
35053505
if (log) dbg(`glLinkProgram: ${log}`);
35063506
if (program.uniformLocsById) dbg(`glLinkProgram invalidated ${Object.keys(program.uniformLocsById).length} uniform location mappings`);
35073507
#endif

src/parseTools.mjs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -847,14 +847,14 @@ export function modifyJSFunction(text, func) {
847847
let oneliner = false;
848848
let match = text.match(/^\s*(async\s+)?function\s+([^(]*)?\s*\(([^)]*)\)/);
849849
if (match) {
850-
async_ = match[1] || '';
850+
async_ = match[1] ?? '';
851851
args = match[3];
852852
rest = text.slice(match[0].length);
853853
} else {
854854
// Match an arrow function
855855
let match = text.match(/^\s*(var (\w+) = )?(async\s+)?\(([^)]*)\)\s+=>\s+/);
856856
if (match) {
857-
async_ = match[3] || '';
857+
async_ = match[3] ?? '';
858858
args = match[4];
859859
rest = text.slice(match[0].length);
860860
rest = rest.trim();
@@ -864,7 +864,7 @@ export function modifyJSFunction(text, func) {
864864
// for both, but it would be more complex).
865865
match = text.match(/^\s*(async\s+)?function\(([^)]*)\)/);
866866
assert(match, `could not match function:\n${text}\n`);
867-
async_ = match[1] || '';
867+
async_ = match[1] ?? '';
868868
args = match[2];
869869
rest = text.slice(match[0].length);
870870
}

0 commit comments

Comments
 (0)