function assert(b) { if (!b) throw new Error("Bad assertion!"); } noInline(assert); let value = false; function baz(x) { if (typeof x !== "number") { value = true; } return x; } noInline(baz); function bar(...args) { return args; } let didEffects = false; function effects() { didEffects = true; } noInline(effects); function foo(a) { let args = [1]; let theArgs = [...args, a, ...args]; baz(a); if (value) { effects(); } let r = bar.apply(null, theArgs); return r; } noInline(foo); for (let i = 0; i < 100000; i++) { foo(i); assert(!didEffects); } let o = {}; let [a, b, c] = foo(o); assert(a === 1); assert(b === o); assert(c === 1); assert(didEffects);