blob: a5f377f68484a72397bde496aca72ade0e8d32ad [file] [log] [blame]
function doesThrow() {
try {
1 in ""
return false
} catch(v45) {
return true
}
}
noInline(doesThrow)
noFTL(doesThrow)
function doesThrowFTL() {
try {
1 in ""
return false
} catch(v45) {
return true
}
}
noInline(doesThrowFTL)
function blackbox() {
return { }
}
noInline(blackbox)
function doesNotThrow() {
try {
1 in blackbox()
return false
} catch(v45) {
return true
}
}
noInline(doesNotThrow)
noFTL(doesNotThrow)
function trickster(o) {
try {
1 in o
return false
} catch(v45) {
return true
}
}
noInline(trickster)
// Does not throw
function enumeratorTest(o) {
let sum = 0
for (let i in o)
sum += o[i]
return sum
}
noInline(enumeratorTest)
noInline(enumeratorTest)
let indexedObject = []
indexedObject.length = 10
indexedObject.fill(1)
function main() {
for (let j = 0; j < 50000; j++) {
if (!doesThrow())
throw new Error("Should throw!")
if (!doesThrowFTL())
throw new Error("Should throw!")
if (doesNotThrow())
throw new Error("Should not throw!")
let o = {}
o["a" + j] = 0
if (trickster(o))
throw new Error("Should not throw!")
enumeratorTest(indexedObject)
}
if (!trickster(""))
throw new Error("Should throw!")
enumeratorTest("")
}
noDFG(main)
noFTL(main)
noInline(main)
main()