nondefinable-function-same-script.js (884B)
1 // |reftest| skip-if(!xulRuntime.shell) 2 3 function assertEvaluateAndIndirectEvalThrows(str) { 4 assertThrowsInstanceOf(() => evaluate(str), TypeError); 5 assertThrowsInstanceOf(() => (1,eval)(str), TypeError); 6 } 7 8 // Regular vars 9 assertEvaluateAndIndirectEvalThrows(`var NaN; function NaN() {}`); 10 11 // for-of vars 12 assertEvaluateAndIndirectEvalThrows(`for (var NaN of []); function NaN() {}`); 13 14 // Annex B.3.3 synthesized vars 15 assertEvaluateAndIndirectEvalThrows(`{ function NaN() {} } function NaN() {}`); 16 17 // Non-data properties 18 Object.defineProperty(this, 'foo', { set: function() {} }); 19 assertEvaluateAndIndirectEvalThrows(`var foo; function foo() {}`); 20 assertEvaluateAndIndirectEvalThrows(`for (var foo of []); function foo() {}`); 21 assertEvaluateAndIndirectEvalThrows(`{ function foo() {} } function foo() {}`); 22 23 if (typeof reportCompare === "function") 24 reportCompare(true, true);