chromium/third_party/blink/web_tests/fast/js/script-tests/immediate-constant-instead-of-cell.js

description("Test immediate constants where objects are expects.  Should not crash.");

tests = [];
function createTest(expr) {
    tests.push(new Function(expr.replace("%value%", "true")));
    tests.push(new Function(expr.replace("%value%", "(-0)")));
    tests.push(new Function(expr.replace("%value%", "(0)")));
    tests.push(new Function(expr.replace("%value%", "(1)")));
    tests.push(new Function(expr.replace("%value%", "null")));
    tests.push(new Function(expr.replace("%value%", "undefined")));
}
num=1;
createTest("%value% instanceof Object");
createTest("Object instanceof %value%");
createTest("%value%.toString");
createTest("'toString' in %value%");
createTest("%value% in Object");
createTest("num << %value%");
createTest("%value% << num");
createTest("num >> %value%");
createTest("%value% >> num");
createTest("num >>> %value%");
createTest("%value% >>> num");
createTest("num ^ %value%");
createTest("%value% ^ num");
createTest("num | %value%");
createTest("%value% | num");
createTest("num & %value%");
createTest("%value% & num");
createTest("num + %value%");
createTest("%value% + num");
createTest("num - %value%");
createTest("%value% - num");
createTest("num * %value%");
createTest("%value% * num");
createTest("num / %value%");
createTest("%value% / num");
createTest("num % %value%");
createTest("%value% % num");
createTest("num || %value%");
createTest("%value% || num");
createTest("num && %value%");
createTest("%value% && num");
createTest("%value%()");
createTest("%value%.toString()");
createTest("Object[%value%]()");
createTest("for(var i in %value%) {  }");
createTest("var o = {a:1, b:2, c:3}; for(var i in o) { o = %value%; o[i]; }");

for (var i = 0; i < tests.length; i++) {
    try { tests[i](); } catch(e) {}
}