Files
scriptc/tests/corpus/3032-string-search-value.js

37 lines
1.6 KiB
JavaScript

console.log("undefined".indexOf(), "x".indexOf(), "undefined".includes(), "x".includes());
console.log("undefined".startsWith(), "x".startsWith(), "xundefined".endsWith(), "x".endsWith());
console.log("undefined".indexOf(undefined), "undefined".includes(void 0));
console.log("undefined".startsWith(undefined), "undefined".endsWith(undefined));
console.log("anullb".indexOf(null), "anullb".includes(null));
console.log("nulla".startsWith(null), "anull".endsWith(null));
console.log("truefalse".indexOf(true), "truefalse".includes(false));
console.log("truefalse".startsWith(true), "truefalse".endsWith(false));
console.log("42".indexOf(42), "42".includes(42), "42".startsWith(42), "42".endsWith(42));
console.log("1".indexOf(1n), "1".includes(1n), "1".startsWith(1n), "1".endsWith(1n));
/** @param {string | number | boolean | null | undefined} value */
function search(value) {
const text = "undefined-null-1-true";
console.log(text.indexOf(value), text.includes(value), text.startsWith(value), text.endsWith(value));
}
search(undefined);
search(null);
search(1);
search(true);
search("true");
let trace = "";
function receiver() { trace += "r"; return "undefined"; }
function needleEffect() { trace += "n"; return 1; }
console.log(receiver().indexOf(void needleEffect()), trace);
trace = "";
console.log(receiver().includes(void needleEffect()), trace);
trace = "";
console.log(receiver().startsWith(void needleEffect()), trace);
trace = "";
console.log(receiver().endsWith(void needleEffect()), trace);
function nullEffect() { trace += "n"; return null; }
trace = "";
console.log(receiver().indexOf(nullEffect()), trace);