mirror of https://github.com/tc39/test262.git
Prefer explicit error checking where possible
The `negative` frontmatter tag expresses an expectation for the behavior of the test file as a whole. The `assert.throws` helper function offers more fine-grained control over expectations because it may be applied to specific statements and expressions. This makes it preferable in cases where it may be used (i.e. when the test body does not describe a syntax error or early error). Re-implement assertions for errors to use the `assert.throws` helper function wherever possible.
This commit is contained in:
parent
0027a6b6bf
commit
10e0d977ec
|
@ -5,7 +5,6 @@
|
|||
info: Array.prototype.splice sets `length` on `this`
|
||||
es5id: 15.4.4.12_A6.1_T2
|
||||
description: Array.prototype.splice throws if `length` is read-only
|
||||
negative: TypeError
|
||||
---*/
|
||||
|
||||
var a = [0, 1, 2];
|
||||
|
@ -14,4 +13,6 @@ Object.defineProperty(a, 'length', {
|
|||
writable: false
|
||||
});
|
||||
|
||||
a.splice(1, 2, 4);
|
||||
assert.throws(TypeError, function() {
|
||||
a.splice(1, 2, 4);
|
||||
});
|
||||
|
|
|
@ -9,10 +9,11 @@ es5id: 15.3.5-2gs
|
|||
description: >
|
||||
StrictMode - error is thrown when reading the 'caller' property of
|
||||
a function object
|
||||
negative: TypeError
|
||||
flags: [onlyStrict]
|
||||
---*/
|
||||
|
||||
function _15_3_5_1_gs() {}
|
||||
_15_3_5_1_gs.caller;
|
||||
throw NotEarlyError;
|
||||
|
||||
assert.throws(TypeError, function() {
|
||||
_15_3_5_1_gs.caller;
|
||||
});
|
||||
|
|
|
@ -10,13 +10,14 @@ description: >
|
|||
Strict mode - checking access to strict function caller from
|
||||
non-strict function (New'ed Function constructor includes strict
|
||||
directive prologue)
|
||||
negative: TypeError
|
||||
flags: [noStrict]
|
||||
---*/
|
||||
|
||||
var f = new Function("\"use strict\";\nreturn gNonStrict();");
|
||||
f();
|
||||
|
||||
assert.throws(TypeError, function() {
|
||||
f();
|
||||
});
|
||||
|
||||
function gNonStrict() {
|
||||
return gNonStrict.caller || gNonStrict.caller.throwTypeError;
|
||||
|
|
|
@ -9,11 +9,12 @@ es5id: 15.3.5.4_2-11gs
|
|||
description: >
|
||||
Strict mode - checking access to strict function caller from
|
||||
strict function (eval used within strict mode)
|
||||
negative: TypeError
|
||||
flags: [onlyStrict]
|
||||
---*/
|
||||
|
||||
eval("gNonStrict();");
|
||||
assert.throws(TypeError, function() {
|
||||
eval("gNonStrict();");
|
||||
});
|
||||
|
||||
|
||||
function gNonStrict() {
|
||||
|
|
|
@ -9,13 +9,14 @@ es5id: 15.3.5.4_2-13gs
|
|||
description: >
|
||||
Strict mode - checking access to non-strict function caller from
|
||||
strict function (indirect eval used within strict mode)
|
||||
negative: TypeError
|
||||
flags: [onlyStrict]
|
||||
---*/
|
||||
|
||||
var my_eval = eval;
|
||||
my_eval("gNonStrict();");
|
||||
|
||||
assert.throws(TypeError, function() {
|
||||
my_eval("gNonStrict();");
|
||||
});
|
||||
|
||||
function gNonStrict() {
|
||||
return gNonStrict.caller;
|
||||
|
|
|
@ -10,15 +10,16 @@ description: >
|
|||
Strict mode - checking access to strict function caller from
|
||||
strict function (New'ed object from FunctionDeclaration defined
|
||||
within strict mode)
|
||||
negative: TypeError
|
||||
flags: [onlyStrict]
|
||||
---*/
|
||||
|
||||
function f() {
|
||||
return gNonStrict();
|
||||
}
|
||||
new f();
|
||||
|
||||
assert.throws(TypeError, function() {
|
||||
new f();
|
||||
});
|
||||
|
||||
function gNonStrict() {
|
||||
return gNonStrict.caller;
|
||||
|
|
|
@ -10,7 +10,6 @@ description: >
|
|||
Strict mode - checking access to strict function caller from
|
||||
non-strict function (New'ed object from FunctionDeclaration
|
||||
includes strict directive prologue)
|
||||
negative: TypeError
|
||||
flags: [noStrict]
|
||||
---*/
|
||||
|
||||
|
@ -18,8 +17,10 @@ function f() {
|
|||
"use strict";
|
||||
return gNonStrict();
|
||||
}
|
||||
new f();
|
||||
|
||||
assert.throws(TypeError, function() {
|
||||
new f();
|
||||
});
|
||||
|
||||
function gNonStrict() {
|
||||
return gNonStrict.caller || gNonStrict.caller.throwTypeError;
|
||||
|
|
|
@ -10,15 +10,16 @@ description: >
|
|||
Strict mode - checking access to strict function caller from
|
||||
strict function (New'ed object from FunctionExpression defined
|
||||
within strict mode)
|
||||
negative: TypeError
|
||||
flags: [onlyStrict]
|
||||
---*/
|
||||
|
||||
var f = function () {
|
||||
return gNonStrict();
|
||||
}
|
||||
new f();
|
||||
|
||||
assert.throws(TypeError, function() {
|
||||
new f();
|
||||
});
|
||||
|
||||
function gNonStrict() {
|
||||
return gNonStrict.caller;
|
||||
|
|
|
@ -10,7 +10,6 @@ description: >
|
|||
Strict mode - checking access to strict function caller from
|
||||
non-strict function (New'ed object from FunctionExpression
|
||||
includes strict directive prologue)
|
||||
negative: TypeError
|
||||
flags: [noStrict]
|
||||
---*/
|
||||
|
||||
|
@ -18,8 +17,10 @@ var f = function () {
|
|||
"use strict";
|
||||
return gNonStrict();
|
||||
}
|
||||
new f();
|
||||
|
||||
assert.throws(TypeError, function() {
|
||||
new f();
|
||||
});
|
||||
|
||||
function gNonStrict() {
|
||||
return gNonStrict.caller || gNonStrict.caller.throwTypeError;
|
||||
|
|
|
@ -10,15 +10,15 @@ description: >
|
|||
Strict mode - checking access to strict function caller from
|
||||
strict function (New'ed object from Anonymous FunctionExpression
|
||||
defined within strict mode)
|
||||
negative: TypeError
|
||||
flags: [onlyStrict]
|
||||
---*/
|
||||
|
||||
var obj = new (function () {
|
||||
return gNonStrict();
|
||||
assert.throws(TypeError, function() {
|
||||
var obj = new (function () {
|
||||
return gNonStrict();
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
function gNonStrict() {
|
||||
return gNonStrict.caller;
|
||||
}
|
||||
|
|
|
@ -9,15 +9,16 @@ es5id: 15.3.5.4_2-1gs
|
|||
description: >
|
||||
Strict mode - checking access to strict function caller from
|
||||
strict function (FunctionDeclaration defined within strict mode)
|
||||
negative: TypeError
|
||||
flags: [onlyStrict]
|
||||
---*/
|
||||
|
||||
function f() {
|
||||
return gNonStrict();
|
||||
}
|
||||
f();
|
||||
|
||||
assert.throws(TypeError, function() {
|
||||
f();
|
||||
});
|
||||
|
||||
function gNonStrict() {
|
||||
return gNonStrict.caller;
|
||||
|
|
|
@ -10,13 +10,14 @@ description: >
|
|||
Strict mode - checking access to strict function caller from
|
||||
non-strict function (New'ed object from Anonymous
|
||||
FunctionExpression includes strict directive prologue)
|
||||
negative: TypeError
|
||||
flags: [noStrict]
|
||||
---*/
|
||||
|
||||
var obj = new (function () {
|
||||
"use strict";
|
||||
return gNonStrict();
|
||||
assert.throws(TypeError, function() {
|
||||
var obj = new (function () {
|
||||
"use strict";
|
||||
return gNonStrict();
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
|
|
|
@ -10,7 +10,6 @@ description: >
|
|||
Strict mode - checking access to strict function caller from
|
||||
strict function (FunctionDeclaration defined within a
|
||||
FunctionDeclaration inside strict mode)
|
||||
negative: TypeError
|
||||
flags: [onlyStrict]
|
||||
---*/
|
||||
|
||||
|
@ -20,8 +19,10 @@ function f1() {
|
|||
}
|
||||
return f();
|
||||
}
|
||||
f1();
|
||||
|
||||
assert.throws(TypeError, function() {
|
||||
f1();
|
||||
});
|
||||
|
||||
function gNonStrict() {
|
||||
return gNonStrict.caller;
|
||||
|
|
|
@ -10,7 +10,6 @@ description: >
|
|||
Strict mode - checking access to strict function caller from
|
||||
strict function (FunctionExpression defined within a
|
||||
FunctionDeclaration inside strict mode)
|
||||
negative: TypeError
|
||||
flags: [onlyStrict]
|
||||
---*/
|
||||
|
||||
|
@ -20,8 +19,10 @@ function f1() {
|
|||
}
|
||||
return f();
|
||||
}
|
||||
f1();
|
||||
|
||||
assert.throws(TypeError, function() {
|
||||
f1();
|
||||
});
|
||||
|
||||
function gNonStrict() {
|
||||
return gNonStrict.caller;
|
||||
|
|
|
@ -10,7 +10,6 @@ description: >
|
|||
Strict mode - checking access to strict function caller from
|
||||
strict function (Anonymous FunctionExpression defined within a
|
||||
FunctionDeclaration inside strict mode)
|
||||
negative: TypeError
|
||||
flags: [onlyStrict]
|
||||
---*/
|
||||
|
||||
|
@ -19,8 +18,10 @@ function f1() {
|
|||
return gNonStrict();
|
||||
})();
|
||||
}
|
||||
f1();
|
||||
|
||||
assert.throws(TypeError, function() {
|
||||
f1();
|
||||
});
|
||||
|
||||
function gNonStrict() {
|
||||
return gNonStrict.caller;
|
||||
|
|
|
@ -10,7 +10,6 @@ description: >
|
|||
Strict mode - checking access to strict function caller from
|
||||
strict function (FunctionDeclaration defined within a
|
||||
FunctionExpression inside strict mode)
|
||||
negative: TypeError
|
||||
flags: [onlyStrict]
|
||||
---*/
|
||||
|
||||
|
@ -20,7 +19,10 @@ var f1 = function () {
|
|||
}
|
||||
return f();
|
||||
}
|
||||
f1();
|
||||
|
||||
assert.throws(TypeError, function() {
|
||||
f1();
|
||||
});
|
||||
|
||||
|
||||
function gNonStrict() {
|
||||
|
|
|
@ -10,7 +10,6 @@ description: >
|
|||
Strict mode - checking access to strict function caller from
|
||||
strict function (FunctionExpression defined within a
|
||||
FunctionExpression inside strict mode)
|
||||
negative: TypeError
|
||||
flags: [onlyStrict]
|
||||
---*/
|
||||
|
||||
|
@ -20,8 +19,10 @@ var f1 = function () {
|
|||
}
|
||||
return f();
|
||||
}
|
||||
f1();
|
||||
|
||||
assert.throws(TypeError, function() {
|
||||
f1();
|
||||
});
|
||||
|
||||
function gNonStrict() {
|
||||
return gNonStrict.caller;
|
||||
|
|
|
@ -10,7 +10,6 @@ description: >
|
|||
Strict mode - checking access to strict function caller from
|
||||
strict function (Anonymous FunctionExpression defined within a
|
||||
FunctionExpression inside strict mode)
|
||||
negative: TypeError
|
||||
flags: [onlyStrict]
|
||||
---*/
|
||||
|
||||
|
@ -19,8 +18,10 @@ var f1 = function () {
|
|||
return gNonStrict();
|
||||
})();
|
||||
}
|
||||
f1();
|
||||
|
||||
assert.throws(TypeError, function() {
|
||||
f1();
|
||||
});
|
||||
|
||||
function gNonStrict() {
|
||||
return gNonStrict.caller;
|
||||
|
|
|
@ -10,17 +10,17 @@ description: >
|
|||
Strict mode - checking access to strict function caller from
|
||||
strict function (FunctionDeclaration defined within an Anonymous
|
||||
FunctionExpression inside strict mode)
|
||||
negative: TypeError
|
||||
flags: [onlyStrict]
|
||||
---*/
|
||||
|
||||
(function () {
|
||||
function f() {
|
||||
return gNonStrict();
|
||||
}
|
||||
return f();
|
||||
})();
|
||||
|
||||
assert.throws(TypeError, function() {
|
||||
(function () {
|
||||
function f() {
|
||||
return gNonStrict();
|
||||
}
|
||||
return f();
|
||||
})();
|
||||
});
|
||||
|
||||
function gNonStrict() {
|
||||
return gNonStrict.caller;
|
||||
|
|
|
@ -10,16 +10,17 @@ description: >
|
|||
Strict mode - checking access to strict function caller from
|
||||
strict function (FunctionExpression defined within an Anonymous
|
||||
FunctionExpression inside strict mode)
|
||||
negative: TypeError
|
||||
flags: [onlyStrict]
|
||||
---*/
|
||||
|
||||
(function () {
|
||||
var f = function () {
|
||||
return gNonStrict();
|
||||
}
|
||||
return f();
|
||||
})();
|
||||
assert.throws(TypeError, function() {
|
||||
(function () {
|
||||
var f = function () {
|
||||
return gNonStrict();
|
||||
}
|
||||
return f();
|
||||
})();
|
||||
});
|
||||
|
||||
|
||||
function gNonStrict() {
|
||||
|
|
|
@ -10,16 +10,16 @@ description: >
|
|||
Strict mode - checking access to strict function caller from
|
||||
strict function (Anonymous FunctionExpression defined within an
|
||||
Anonymous FunctionExpression inside strict mode)
|
||||
negative: TypeError
|
||||
flags: [onlyStrict]
|
||||
---*/
|
||||
|
||||
(function () {
|
||||
return (function () {
|
||||
return gNonStrict();
|
||||
assert.throws(TypeError, function() {
|
||||
(function () {
|
||||
return (function () {
|
||||
return gNonStrict();
|
||||
})();
|
||||
})();
|
||||
})();
|
||||
|
||||
});
|
||||
|
||||
function gNonStrict() {
|
||||
return gNonStrict.caller;
|
||||
|
|
|
@ -10,7 +10,6 @@ description: >
|
|||
Strict mode - checking access to strict function caller from
|
||||
non-strict function (FunctionDeclaration includes strict directive
|
||||
prologue)
|
||||
negative: TypeError
|
||||
flags: [noStrict]
|
||||
---*/
|
||||
|
||||
|
@ -18,8 +17,10 @@ function f() {
|
|||
"use strict";
|
||||
return gNonStrict();
|
||||
}
|
||||
f();
|
||||
|
||||
assert.throws(TypeError, function() {
|
||||
f();
|
||||
});
|
||||
|
||||
function gNonStrict() {
|
||||
return gNonStrict.caller || gNonStrict.caller.throwTypeError;
|
||||
|
|
|
@ -10,7 +10,6 @@ description: >
|
|||
Strict mode - checking access to strict function caller from
|
||||
non-strict function (FunctionDeclaration defined within a
|
||||
FunctionDeclaration with a strict directive prologue)
|
||||
negative: TypeError
|
||||
flags: [noStrict]
|
||||
---*/
|
||||
|
||||
|
@ -21,8 +20,10 @@ function f1() {
|
|||
}
|
||||
return f();
|
||||
}
|
||||
f1();
|
||||
|
||||
assert.throws(TypeError, function() {
|
||||
f1();
|
||||
});
|
||||
|
||||
function gNonStrict() {
|
||||
return gNonStrict.caller || gNonStrict.caller.throwTypeError;
|
||||
|
|
|
@ -10,7 +10,6 @@ description: >
|
|||
Strict mode - checking access to strict function caller from
|
||||
non-strict function (FunctionExpression defined within a
|
||||
FunctionDeclaration with a strict directive prologue)
|
||||
negative: TypeError
|
||||
flags: [noStrict]
|
||||
---*/
|
||||
|
||||
|
@ -21,8 +20,10 @@ function f1() {
|
|||
}
|
||||
return f();
|
||||
}
|
||||
f1();
|
||||
|
||||
assert.throws(TypeError, function() {
|
||||
f1();
|
||||
});
|
||||
|
||||
function gNonStrict() {
|
||||
return gNonStrict.caller || gNonStrict.caller.throwTypeError;
|
||||
|
|
|
@ -10,7 +10,6 @@ description: >
|
|||
Strict mode - checking access to strict function caller from
|
||||
non-strict function (Anonymous FunctionExpression defined within a
|
||||
FunctionDeclaration with a strict directive prologue)
|
||||
negative: TypeError
|
||||
flags: [noStrict]
|
||||
---*/
|
||||
|
||||
|
@ -20,8 +19,10 @@ function f1() {
|
|||
return gNonStrict();
|
||||
})();
|
||||
}
|
||||
f1();
|
||||
|
||||
assert.throws(TypeError, function() {
|
||||
f1();
|
||||
});
|
||||
|
||||
function gNonStrict() {
|
||||
return gNonStrict.caller || gNonStrict.caller.throwTypeError;
|
||||
|
|
|
@ -10,7 +10,6 @@ description: >
|
|||
Strict mode - checking access to strict function caller from
|
||||
non-strict function (FunctionDeclaration defined within a
|
||||
FunctionExpression with a strict directive prologue)
|
||||
negative: TypeError
|
||||
flags: [noStrict]
|
||||
---*/
|
||||
|
||||
|
@ -21,8 +20,10 @@ var f1 = function () {
|
|||
}
|
||||
return f();
|
||||
}
|
||||
f1();
|
||||
|
||||
assert.throws(TypeError, function() {
|
||||
f1();
|
||||
});
|
||||
|
||||
function gNonStrict() {
|
||||
return gNonStrict.caller || gNonStrict.caller.throwTypeError;
|
||||
|
|
|
@ -10,7 +10,6 @@ description: >
|
|||
Strict mode - checking access to strict function caller from
|
||||
non-strict function (FunctionExpression defined within a
|
||||
FunctionExpression with a strict directive prologue)
|
||||
negative: TypeError
|
||||
flags: [noStrict]
|
||||
---*/
|
||||
|
||||
|
@ -21,8 +20,10 @@ var f1 = function () {
|
|||
}
|
||||
return f();
|
||||
}
|
||||
f1();
|
||||
|
||||
assert.throws(TypeError, function() {
|
||||
f1();
|
||||
});
|
||||
|
||||
function gNonStrict() {
|
||||
return gNonStrict.caller || gNonStrict.caller.throwTypeError;
|
||||
|
|
|
@ -10,7 +10,6 @@ description: >
|
|||
Strict mode - checking access to strict function caller from
|
||||
non-strict function (Anonymous FunctionExpression defined within a
|
||||
FunctionExpression with a strict directive prologue)
|
||||
negative: TypeError
|
||||
flags: [noStrict]
|
||||
---*/
|
||||
|
||||
|
@ -20,8 +19,10 @@ var f1 = function () {
|
|||
return gNonStrict();
|
||||
})();
|
||||
}
|
||||
f1();
|
||||
|
||||
assert.throws(TypeError, function() {
|
||||
f1();
|
||||
});
|
||||
|
||||
function gNonStrict() {
|
||||
return gNonStrict.caller || gNonStrict.caller.throwTypeError;
|
||||
|
|
|
@ -10,18 +10,18 @@ description: >
|
|||
Strict mode - checking access to strict function caller from
|
||||
non-strict function (FunctionDeclaration defined within an
|
||||
Anonymous FunctionExpression with a strict directive prologue)
|
||||
negative: TypeError
|
||||
flags: [noStrict]
|
||||
---*/
|
||||
|
||||
(function () {
|
||||
"use strict";
|
||||
function f() {
|
||||
return gNonStrict();
|
||||
}
|
||||
return f();
|
||||
})();
|
||||
|
||||
assert.throws(TypeError, function() {
|
||||
(function () {
|
||||
"use strict";
|
||||
function f() {
|
||||
return gNonStrict();
|
||||
}
|
||||
return f();
|
||||
})();
|
||||
});
|
||||
|
||||
function gNonStrict() {
|
||||
return gNonStrict.caller || gNonStrict.caller.throwTypeError;
|
||||
|
|
|
@ -10,18 +10,18 @@ description: >
|
|||
Strict mode - checking access to strict function caller from
|
||||
non-strict function (FunctionExpression defined within an
|
||||
Anonymous FunctionExpression with a strict directive prologue)
|
||||
negative: TypeError
|
||||
flags: [noStrict]
|
||||
---*/
|
||||
|
||||
(function () {
|
||||
"use strict";
|
||||
var f = function () {
|
||||
return gNonStrict();
|
||||
}
|
||||
return f();
|
||||
})();
|
||||
|
||||
assert.throws(TypeError, function() {
|
||||
(function () {
|
||||
"use strict";
|
||||
var f = function () {
|
||||
return gNonStrict();
|
||||
}
|
||||
return f();
|
||||
})();
|
||||
});
|
||||
|
||||
function gNonStrict() {
|
||||
return gNonStrict.caller || gNonStrict.caller.throwTypeError;
|
||||
|
|
|
@ -10,17 +10,17 @@ description: >
|
|||
Strict mode - checking access to strict function caller from
|
||||
non-strict function (Anonymous FunctionExpression defined within
|
||||
an Anonymous FunctionExpression with a strict directive prologue)
|
||||
negative: TypeError
|
||||
flags: [noStrict]
|
||||
---*/
|
||||
|
||||
(function () {
|
||||
"use strict";
|
||||
return (function () {
|
||||
return gNonStrict();
|
||||
assert.throws(TypeError, function() {
|
||||
(function () {
|
||||
"use strict";
|
||||
return (function () {
|
||||
return gNonStrict();
|
||||
})();
|
||||
})();
|
||||
})();
|
||||
|
||||
});
|
||||
|
||||
function gNonStrict() {
|
||||
return gNonStrict.caller || gNonStrict.caller.throwTypeError;
|
||||
|
|
|
@ -10,7 +10,6 @@ description: >
|
|||
Strict mode - checking access to strict function caller from
|
||||
non-strict function (FunctionDeclaration with a strict directive
|
||||
prologue defined within a FunctionDeclaration)
|
||||
negative: TypeError
|
||||
flags: [noStrict]
|
||||
---*/
|
||||
|
||||
|
@ -22,8 +21,10 @@ function f1() {
|
|||
}
|
||||
return f();
|
||||
}
|
||||
f1();
|
||||
|
||||
assert.throws(TypeError, function() {
|
||||
f1();
|
||||
});
|
||||
|
||||
function gNonStrict() {
|
||||
return gNonStrict.caller || gNonStrict.caller.throwTypeError;
|
||||
|
|
|
@ -9,15 +9,16 @@ es5id: 15.3.5.4_2-3gs
|
|||
description: >
|
||||
Strict mode - checking access to strict function caller from
|
||||
strict function (FunctionExpression defined within strict mode)
|
||||
negative: TypeError
|
||||
flags: [onlyStrict]
|
||||
---*/
|
||||
|
||||
var f = function () {
|
||||
return gNonStrict();
|
||||
}
|
||||
f();
|
||||
|
||||
assert.throws(TypeError, function() {
|
||||
f();
|
||||
});
|
||||
|
||||
function gNonStrict() {
|
||||
return gNonStrict.caller;
|
||||
|
|
|
@ -10,7 +10,6 @@ description: >
|
|||
Strict mode - checking access to strict function caller from
|
||||
non-strict function (FunctionExpression with a strict directive
|
||||
prologue defined within a FunctionDeclaration)
|
||||
negative: TypeError
|
||||
flags: [noStrict]
|
||||
---*/
|
||||
|
||||
|
@ -22,8 +21,10 @@ function f1() {
|
|||
}
|
||||
return f();
|
||||
}
|
||||
f1();
|
||||
|
||||
assert.throws(TypeError, function() {
|
||||
f1();
|
||||
});
|
||||
|
||||
function gNonStrict() {
|
||||
return gNonStrict.caller || gNonStrict.caller.throwTypeError;
|
||||
|
|
|
@ -10,7 +10,6 @@ description: >
|
|||
Strict mode - checking access to strict function caller from
|
||||
non-strict function (Anonymous FunctionExpression with a strict
|
||||
directive prologue defined within a FunctionDeclaration)
|
||||
negative: TypeError
|
||||
flags: [noStrict]
|
||||
---*/
|
||||
|
||||
|
@ -21,8 +20,10 @@ function f1() {
|
|||
return r;
|
||||
})();
|
||||
}
|
||||
f1();
|
||||
|
||||
assert.throws(TypeError, function() {
|
||||
f1();
|
||||
});
|
||||
|
||||
function gNonStrict() {
|
||||
return gNonStrict.caller || gNonStrict.caller.throwTypeError;
|
||||
|
|
|
@ -10,7 +10,6 @@ description: >
|
|||
Strict mode - checking access to strict function caller from
|
||||
non-strict function (FunctionDeclaration with a strict directive
|
||||
prologue defined within a FunctionExpression)
|
||||
negative: TypeError
|
||||
flags: [noStrict]
|
||||
---*/
|
||||
|
||||
|
@ -22,8 +21,10 @@ var f1 = function () {
|
|||
}
|
||||
return f();
|
||||
}
|
||||
f1();
|
||||
|
||||
assert.throws(TypeError, function() {
|
||||
f1();
|
||||
});
|
||||
|
||||
function gNonStrict() {
|
||||
return gNonStrict.caller || gNonStrict.caller.throwTypeError;
|
||||
|
|
|
@ -10,7 +10,6 @@ description: >
|
|||
Strict mode - checking access to strict function caller from
|
||||
non-strict function (FunctionExpression with a strict directive
|
||||
prologue defined within a FunctionExpression)
|
||||
negative: TypeError
|
||||
flags: [noStrict]
|
||||
---*/
|
||||
|
||||
|
@ -22,8 +21,10 @@ var f1 = function () {
|
|||
}
|
||||
return f();
|
||||
}
|
||||
f1();
|
||||
|
||||
assert.throws(TypeError, function() {
|
||||
f1();
|
||||
});
|
||||
|
||||
function gNonStrict() {
|
||||
return gNonStrict.caller || gNonStrict.caller.throwTypeError;
|
||||
|
|
|
@ -10,7 +10,6 @@ description: >
|
|||
Strict mode - checking access to strict function caller from
|
||||
non-strict function (Anonymous FunctionExpression with a strict
|
||||
directive prologue defined within a FunctionExpression)
|
||||
negative: TypeError
|
||||
flags: [noStrict]
|
||||
---*/
|
||||
|
||||
|
@ -21,8 +20,10 @@ var f1 = function () {
|
|||
return r;
|
||||
})();
|
||||
}
|
||||
f1();
|
||||
|
||||
assert.throws(TypeError, function() {
|
||||
f1();
|
||||
});
|
||||
|
||||
function gNonStrict() {
|
||||
return gNonStrict.caller || gNonStrict.caller.throwTypeError;
|
||||
|
|
|
@ -10,19 +10,19 @@ description: >
|
|||
Strict mode - checking access to strict function caller from
|
||||
non-strict function (FunctionDeclaration with a strict directive
|
||||
prologue defined within an Anonymous FunctionExpression)
|
||||
negative: TypeError
|
||||
flags: [noStrict]
|
||||
---*/
|
||||
|
||||
(function () {
|
||||
function f() {
|
||||
"use strict";
|
||||
var r = gNonStrict();
|
||||
return r;
|
||||
}
|
||||
return f();
|
||||
})();
|
||||
|
||||
assert.throws(TypeError, function() {
|
||||
(function () {
|
||||
function f() {
|
||||
"use strict";
|
||||
var r = gNonStrict();
|
||||
return r;
|
||||
}
|
||||
return f();
|
||||
})();
|
||||
});
|
||||
|
||||
function gNonStrict() {
|
||||
return gNonStrict.caller || gNonStrict.caller.throwTypeError;
|
||||
|
|
|
@ -10,19 +10,19 @@ description: >
|
|||
Strict mode - checking access to strict function caller from
|
||||
non-strict function (FunctionExpression with a strict directive
|
||||
prologue defined within an Anonymous FunctionExpression)
|
||||
negative: TypeError
|
||||
flags: [noStrict]
|
||||
---*/
|
||||
|
||||
(function () {
|
||||
var f = function () {
|
||||
"use strict";
|
||||
var r = gNonStrict();
|
||||
return r;
|
||||
}
|
||||
return f();
|
||||
})();
|
||||
|
||||
assert.throws(TypeError, function() {
|
||||
(function () {
|
||||
var f = function () {
|
||||
"use strict";
|
||||
var r = gNonStrict();
|
||||
return r;
|
||||
}
|
||||
return f();
|
||||
})();
|
||||
});
|
||||
|
||||
function gNonStrict() {
|
||||
return gNonStrict.caller || gNonStrict.caller.throwTypeError;
|
||||
|
|
|
@ -10,17 +10,18 @@ description: >
|
|||
Strict mode - checking access to strict function caller from
|
||||
non-strict function (Anonymous FunctionExpression with a strict
|
||||
directive prologue defined within an Anonymous FunctionExpression)
|
||||
negative: TypeError
|
||||
flags: [noStrict]
|
||||
---*/
|
||||
|
||||
(function () {
|
||||
return (function () {
|
||||
"use strict";
|
||||
var r = gNonStrict();
|
||||
return r;
|
||||
assert.throws(TypeError, function() {
|
||||
(function () {
|
||||
return (function () {
|
||||
"use strict";
|
||||
var r = gNonStrict();
|
||||
return r;
|
||||
})();
|
||||
})();
|
||||
})();
|
||||
});
|
||||
|
||||
|
||||
function gNonStrict() {
|
||||
|
|
|
@ -9,13 +9,14 @@ es5id: 15.3.5.4_2-48gs
|
|||
description: >
|
||||
Strict mode - checking access to strict function caller from
|
||||
strict function (Literal getter defined within strict mode)
|
||||
negative: TypeError
|
||||
flags: [onlyStrict]
|
||||
---*/
|
||||
|
||||
var o = { get foo() { return gNonStrict(); } }
|
||||
o.foo;
|
||||
|
||||
assert.throws(TypeError, function() {
|
||||
o.foo;
|
||||
});
|
||||
|
||||
function gNonStrict() {
|
||||
return gNonStrict.caller;
|
||||
|
|
|
@ -10,13 +10,14 @@ description: >
|
|||
Strict mode - checking access to strict function caller from
|
||||
non-strict function (Literal getter includes strict directive
|
||||
prologue)
|
||||
negative: TypeError
|
||||
flags: [noStrict]
|
||||
---*/
|
||||
|
||||
var o = { get foo() { "use strict"; return gNonStrict(); } }
|
||||
o.foo;
|
||||
|
||||
assert.throws(TypeError, function() {
|
||||
o.foo;
|
||||
});
|
||||
|
||||
function gNonStrict() {
|
||||
return gNonStrict.caller || gNonStrict.caller.throwTypeError;
|
||||
|
|
|
@ -10,7 +10,6 @@ description: >
|
|||
Strict mode - checking access to strict function caller from
|
||||
non-strict function (FunctionExpression includes strict directive
|
||||
prologue)
|
||||
negative: TypeError
|
||||
flags: [noStrict]
|
||||
---*/
|
||||
|
||||
|
@ -18,8 +17,10 @@ var f = function () {
|
|||
"use strict";
|
||||
return gNonStrict();
|
||||
}
|
||||
f();
|
||||
|
||||
assert.throws(TypeError, function() {
|
||||
f();
|
||||
});
|
||||
|
||||
function gNonStrict() {
|
||||
return gNonStrict.caller || gNonStrict.caller.throwTypeError;
|
||||
|
|
|
@ -9,13 +9,14 @@ es5id: 15.3.5.4_2-50gs
|
|||
description: >
|
||||
Strict mode - checking access to strict function caller from
|
||||
strict function (Literal setter defined within strict mode)
|
||||
negative: TypeError
|
||||
flags: [onlyStrict]
|
||||
---*/
|
||||
|
||||
var o = { set foo(stuff) { return gNonStrict(); } }
|
||||
o.foo = 7;
|
||||
|
||||
assert.throws(TypeError, function() {
|
||||
o.foo = 7;
|
||||
});
|
||||
|
||||
function gNonStrict() {
|
||||
return gNonStrict.caller;
|
||||
|
|
|
@ -10,13 +10,14 @@ description: >
|
|||
Strict mode - checking access to strict function caller from
|
||||
non-strict function (Literal setter includes strict directive
|
||||
prologue)
|
||||
negative: TypeError
|
||||
flags: [noStrict]
|
||||
---*/
|
||||
|
||||
var o = { set foo(stuff) { "use strict"; return gNonStrict(); } }
|
||||
o.foo = 8;
|
||||
|
||||
assert.throws(TypeError, function() {
|
||||
o.foo = 8;
|
||||
});
|
||||
|
||||
function gNonStrict() {
|
||||
return gNonStrict.caller || gNonStrict.caller.throwTypeError;
|
||||
|
|
|
@ -9,14 +9,15 @@ es5id: 15.3.5.4_2-52gs
|
|||
description: >
|
||||
Strict mode - checking access to strict function caller from
|
||||
strict function (Injected getter defined within strict mode)
|
||||
negative: TypeError
|
||||
flags: [onlyStrict]
|
||||
---*/
|
||||
|
||||
var o = {};
|
||||
Object.defineProperty(o, "foo", { get: function() { return gNonStrict(); } });
|
||||
o.foo;
|
||||
|
||||
assert.throws(TypeError, function() {
|
||||
o.foo;
|
||||
});
|
||||
|
||||
function gNonStrict() {
|
||||
return gNonStrict.caller;
|
||||
|
|
|
@ -10,14 +10,15 @@ description: >
|
|||
Strict mode - checking access to strict function caller from
|
||||
non-strict function (Injected getter includes strict directive
|
||||
prologue)
|
||||
negative: TypeError
|
||||
flags: [noStrict]
|
||||
---*/
|
||||
|
||||
var o = {};
|
||||
Object.defineProperty(o, "foo", { get: function() { "use strict"; return gNonStrict(); } });
|
||||
o.foo;
|
||||
|
||||
assert.throws(TypeError, function() {
|
||||
o.foo;
|
||||
});
|
||||
|
||||
function gNonStrict() {
|
||||
return gNonStrict.caller || gNonStrict.caller.throwTypeError;
|
||||
|
|
|
@ -9,14 +9,15 @@ es5id: 15.3.5.4_2-54gs
|
|||
description: >
|
||||
Strict mode - checking access to strict function caller from
|
||||
strict function (Injected setter defined within strict mode)
|
||||
negative: TypeError
|
||||
flags: [onlyStrict]
|
||||
---*/
|
||||
|
||||
var o = {};
|
||||
Object.defineProperty(o, "foo", { set: function(stuff) { return gNonStrict(); } });
|
||||
o.foo = 9;
|
||||
|
||||
assert.throws(TypeError, function() {
|
||||
o.foo = 9;
|
||||
});
|
||||
|
||||
function gNonStrict() {
|
||||
return gNonStrict.caller;
|
||||
|
|
|
@ -10,14 +10,15 @@ description: >
|
|||
Strict mode - checking access to strict function caller from
|
||||
non-strict function (Injected setter includes strict directive
|
||||
prologue)
|
||||
negative: TypeError
|
||||
flags: [noStrict]
|
||||
---*/
|
||||
|
||||
var o = {};
|
||||
Object.defineProperty(o, "foo", { set: function(stuff) { "use strict"; return gNonStrict(); } });
|
||||
o.foo = 10;
|
||||
|
||||
assert.throws(TypeError, function() {
|
||||
o.foo = 10;
|
||||
});
|
||||
|
||||
function gNonStrict() {
|
||||
return gNonStrict.caller || gNonStrict.caller.throwTypeError;
|
||||
|
|
|
@ -10,14 +10,15 @@ description: >
|
|||
Strict mode - checking access to strict function caller from
|
||||
non-strict function (strict function declaration called by
|
||||
non-strict function declaration)
|
||||
negative: TypeError
|
||||
flags: [noStrict]
|
||||
---*/
|
||||
|
||||
function f() { "use strict"; var r = gNonStrict(); return r;};
|
||||
function foo() { return f();}
|
||||
foo();
|
||||
|
||||
assert.throws(TypeError, function() {
|
||||
foo();
|
||||
});
|
||||
|
||||
function gNonStrict() {
|
||||
return gNonStrict.caller || gNonStrict.caller.throwTypeError;
|
||||
|
|
|
@ -10,13 +10,14 @@ description: >
|
|||
Strict mode - checking access to strict function caller from
|
||||
non-strict function (strict function declaration called by
|
||||
non-strict eval)
|
||||
negative: TypeError
|
||||
flags: [noStrict]
|
||||
---*/
|
||||
|
||||
function f() { "use strict"; return gNonStrict();};
|
||||
eval("f();");
|
||||
|
||||
assert.throws(TypeError, function() {
|
||||
eval("f();");
|
||||
});
|
||||
|
||||
function gNonStrict() {
|
||||
return gNonStrict.caller || gNonStrict.caller.throwTypeError;
|
||||
|
|
|
@ -10,13 +10,14 @@ description: >
|
|||
Strict mode - checking access to strict function caller from
|
||||
non-strict function (strict function declaration called by
|
||||
non-strict Function constructor)
|
||||
negative: TypeError
|
||||
flags: [noStrict]
|
||||
---*/
|
||||
|
||||
function f() { "use strict"; var r = gNonStrict(); return r;};
|
||||
Function("return f();")();
|
||||
|
||||
assert.throws(TypeError, function() {
|
||||
Function("return f();")();
|
||||
});
|
||||
|
||||
function gNonStrict() {
|
||||
return gNonStrict.caller || gNonStrict.caller.throwTypeError;
|
||||
|
|
|
@ -10,13 +10,14 @@ description: >
|
|||
Strict mode - checking access to strict function caller from
|
||||
non-strict function (strict function declaration called by
|
||||
non-strict new'ed Function constructor)
|
||||
negative: TypeError
|
||||
flags: [noStrict]
|
||||
---*/
|
||||
|
||||
function f() { "use strict"; var r = gNonStrict(); return r;};
|
||||
new Function("return f();")();
|
||||
|
||||
assert.throws(TypeError, function() {
|
||||
new Function("return f();")();
|
||||
});
|
||||
|
||||
function gNonStrict() {
|
||||
return gNonStrict.caller || gNonStrict.caller.throwTypeError;
|
||||
|
|
|
@ -10,14 +10,14 @@ description: >
|
|||
Strict mode - checking access to strict function caller from
|
||||
strict function (Anonymous FunctionExpression defined within
|
||||
strict mode)
|
||||
negative: TypeError
|
||||
flags: [onlyStrict]
|
||||
---*/
|
||||
|
||||
(function () {
|
||||
return gNonStrict();
|
||||
})();
|
||||
|
||||
assert.throws(TypeError, function() {
|
||||
(function () {
|
||||
return gNonStrict();
|
||||
})();
|
||||
});
|
||||
|
||||
function gNonStrict() {
|
||||
return gNonStrict.caller;
|
||||
|
|
|
@ -10,13 +10,14 @@ description: >
|
|||
Strict mode - checking access to strict function caller from
|
||||
non-strict function (strict function declaration called by
|
||||
Function.prototype.apply())
|
||||
negative: TypeError
|
||||
flags: [noStrict]
|
||||
---*/
|
||||
|
||||
function f() { "use strict"; return gNonStrict();};
|
||||
f.apply();
|
||||
|
||||
assert.throws(TypeError, function() {
|
||||
f.apply();
|
||||
});
|
||||
|
||||
function gNonStrict() {
|
||||
return gNonStrict.caller || gNonStrict.caller.throwTypeError;
|
||||
|
|
|
@ -10,13 +10,14 @@ description: >
|
|||
Strict mode - checking access to strict function caller from
|
||||
non-strict function (strict function declaration called by
|
||||
Function.prototype.apply(null))
|
||||
negative: TypeError
|
||||
flags: [noStrict]
|
||||
---*/
|
||||
|
||||
function f() { "use strict"; return gNonStrict();};
|
||||
f.apply(null);
|
||||
|
||||
assert.throws(TypeError, function() {
|
||||
f.apply(null);
|
||||
});
|
||||
|
||||
function gNonStrict() {
|
||||
return gNonStrict.caller || gNonStrict.caller.throwTypeError;
|
||||
|
|
|
@ -10,13 +10,14 @@ description: >
|
|||
Strict mode - checking access to strict function caller from
|
||||
non-strict function (strict function declaration called by
|
||||
Function.prototype.apply(undefined))
|
||||
negative: TypeError
|
||||
flags: [noStrict]
|
||||
---*/
|
||||
|
||||
function f() { "use strict"; return gNonStrict();};
|
||||
f.apply(undefined);
|
||||
|
||||
assert.throws(TypeError, function() {
|
||||
f.apply(undefined);
|
||||
});
|
||||
|
||||
function gNonStrict() {
|
||||
return gNonStrict.caller || gNonStrict.caller.throwTypeError;
|
||||
|
|
|
@ -10,14 +10,15 @@ description: >
|
|||
Strict mode - checking access to strict function caller from
|
||||
non-strict function (strict function declaration called by
|
||||
Function.prototype.apply(someObject))
|
||||
negative: TypeError
|
||||
flags: [noStrict]
|
||||
---*/
|
||||
|
||||
function f() { "use strict"; return gNonStrict();};
|
||||
var o = {};
|
||||
f.apply(o);
|
||||
|
||||
assert.throws(TypeError, function() {
|
||||
f.apply(o);
|
||||
});
|
||||
|
||||
function gNonStrict() {
|
||||
return gNonStrict.caller || gNonStrict.caller.throwTypeError;
|
||||
|
|
|
@ -10,14 +10,15 @@ description: >
|
|||
Strict mode - checking access to strict function caller from
|
||||
non-strict function (strict function declaration called by
|
||||
Function.prototype.apply(globalObject))
|
||||
negative: TypeError
|
||||
flags: [noStrict]
|
||||
includes: [fnGlobalObject.js]
|
||||
---*/
|
||||
|
||||
function f() { "use strict"; return gNonStrict();};
|
||||
f.apply(fnGlobalObject());
|
||||
|
||||
assert.throws(TypeError, function() {
|
||||
f.apply(fnGlobalObject());
|
||||
});
|
||||
|
||||
function gNonStrict() {
|
||||
return gNonStrict.caller || gNonStrict.caller.throwTypeError;
|
||||
|
|
|
@ -10,13 +10,14 @@ description: >
|
|||
Strict mode - checking access to strict function caller from
|
||||
non-strict function (strict function declaration called by
|
||||
Function.prototype.call())
|
||||
negative: TypeError
|
||||
flags: [noStrict]
|
||||
---*/
|
||||
|
||||
function f() { "use strict"; return gNonStrict();};
|
||||
f.call();
|
||||
|
||||
assert.throws(TypeError, function() {
|
||||
f.call();
|
||||
});
|
||||
|
||||
function gNonStrict() {
|
||||
return gNonStrict.caller || gNonStrict.caller.throwTypeError;
|
||||
|
|
|
@ -10,13 +10,14 @@ description: >
|
|||
Strict mode - checking access to strict function caller from
|
||||
non-strict function (strict function declaration called by
|
||||
Function.prototype.call(null))
|
||||
negative: TypeError
|
||||
flags: [noStrict]
|
||||
---*/
|
||||
|
||||
function f() { "use strict"; return gNonStrict();};
|
||||
f.call(null);
|
||||
|
||||
assert.throws(TypeError, function() {
|
||||
f.call(null);
|
||||
});
|
||||
|
||||
function gNonStrict() {
|
||||
return gNonStrict.caller || gNonStrict.caller.throwTypeError;
|
||||
|
|
|
@ -10,13 +10,14 @@ description: >
|
|||
Strict mode - checking access to strict function caller from
|
||||
non-strict function (strict function declaration called by
|
||||
Function.prototype.call(undefined))
|
||||
negative: TypeError
|
||||
flags: [noStrict]
|
||||
---*/
|
||||
|
||||
function f() { "use strict"; return gNonStrict();};
|
||||
f.call(undefined);
|
||||
|
||||
assert.throws(TypeError, function() {
|
||||
f.call(undefined);
|
||||
});
|
||||
|
||||
function gNonStrict() {
|
||||
return gNonStrict.caller || gNonStrict.caller.throwTypeError;
|
||||
|
|
|
@ -10,14 +10,15 @@ description: >
|
|||
Strict mode - checking access to strict function caller from
|
||||
non-strict function (strict function declaration called by
|
||||
Function.prototype.call(someObject))
|
||||
negative: TypeError
|
||||
flags: [noStrict]
|
||||
---*/
|
||||
|
||||
function f() { "use strict"; return gNonStrict();};
|
||||
var o = {};
|
||||
f.call(o);
|
||||
|
||||
assert.throws(TypeError, function() {
|
||||
f.call(o);
|
||||
});
|
||||
|
||||
function gNonStrict() {
|
||||
return gNonStrict.caller || gNonStrict.caller.throwTypeError;
|
||||
|
|
|
@ -10,14 +10,15 @@ description: >
|
|||
Strict mode - checking access to strict function caller from
|
||||
non-strict function (strict function declaration called by
|
||||
Function.prototype.call(globalObject))
|
||||
negative: TypeError
|
||||
flags: [noStrict]
|
||||
includes: [fnGlobalObject.js]
|
||||
---*/
|
||||
|
||||
function f() { "use strict"; return gNonStrict();};
|
||||
f.call(fnGlobalObject());
|
||||
|
||||
assert.throws(TypeError, function() {
|
||||
f.call(fnGlobalObject());
|
||||
});
|
||||
|
||||
function gNonStrict() {
|
||||
return gNonStrict.caller || gNonStrict.caller.throwTypeError;
|
||||
|
|
|
@ -10,14 +10,15 @@ description: >
|
|||
Strict mode - checking access to strict function caller from
|
||||
non-strict function (Anonymous FunctionExpression includes strict
|
||||
directive prologue)
|
||||
negative: TypeError
|
||||
flags: [noStrict]
|
||||
---*/
|
||||
|
||||
(function () {
|
||||
"use strict";
|
||||
return gNonStrict();
|
||||
})();
|
||||
assert.throws(TypeError, function() {
|
||||
(function () {
|
||||
"use strict";
|
||||
return gNonStrict();
|
||||
})();
|
||||
});
|
||||
|
||||
|
||||
function gNonStrict() {
|
||||
|
|
|
@ -10,13 +10,14 @@ description: >
|
|||
Strict mode - checking access to strict function caller from
|
||||
non-strict function (strict function declaration called by
|
||||
Function.prototype.bind()())
|
||||
negative: TypeError
|
||||
flags: [noStrict]
|
||||
---*/
|
||||
|
||||
function f() { "use strict"; return gNonStrict();};
|
||||
f.bind()();
|
||||
|
||||
assert.throws(TypeError, function() {
|
||||
f.bind()();
|
||||
});
|
||||
|
||||
function gNonStrict() {
|
||||
return gNonStrict.caller || gNonStrict.caller.throwTypeError;
|
||||
|
|
|
@ -10,13 +10,14 @@ description: >
|
|||
Strict mode - checking access to strict function caller from
|
||||
non-strict function (strict function declaration called by
|
||||
Function.prototype.bind(null)())
|
||||
negative: TypeError
|
||||
flags: [noStrict]
|
||||
---*/
|
||||
|
||||
function f() { "use strict"; return gNonStrict();};
|
||||
f.bind(null)();
|
||||
|
||||
assert.throws(TypeError, function() {
|
||||
f.bind(null)();
|
||||
});
|
||||
|
||||
function gNonStrict() {
|
||||
return gNonStrict.caller || gNonStrict.caller.throwTypeError;
|
||||
|
|
|
@ -10,13 +10,14 @@ description: >
|
|||
Strict mode - checking access to strict function caller from
|
||||
non-strict function (strict function declaration called by
|
||||
Function.prototype.bind(undefined)())
|
||||
negative: TypeError
|
||||
flags: [noStrict]
|
||||
---*/
|
||||
|
||||
function f() { "use strict"; return gNonStrict();};
|
||||
f.bind(undefined)();
|
||||
|
||||
assert.throws(TypeError, function() {
|
||||
f.bind(undefined)();
|
||||
});
|
||||
|
||||
function gNonStrict() {
|
||||
return gNonStrict.caller || gNonStrict.caller.throwTypeError;
|
||||
|
|
|
@ -10,14 +10,15 @@ description: >
|
|||
Strict mode - checking access to strict function caller from
|
||||
non-strict function (strict function declaration called by
|
||||
Function.prototype.bind(someObject)())
|
||||
negative: TypeError
|
||||
flags: [noStrict]
|
||||
---*/
|
||||
|
||||
function f() { "use strict"; return gNonStrict();};
|
||||
var o = {};
|
||||
f.bind(o)();
|
||||
|
||||
assert.throws(TypeError, function() {
|
||||
f.bind(o)();
|
||||
});
|
||||
|
||||
function gNonStrict() {
|
||||
return gNonStrict.caller || gNonStrict.caller.throwTypeError;
|
||||
|
|
|
@ -10,14 +10,15 @@ description: >
|
|||
Strict mode - checking access to strict function caller from
|
||||
non-strict function (strict function declaration called by
|
||||
Function.prototype.bind(globalObject)())
|
||||
negative: TypeError
|
||||
flags: [noStrict]
|
||||
includes: [fnGlobalObject.js]
|
||||
---*/
|
||||
|
||||
function f() { "use strict"; return gNonStrict();};
|
||||
f.bind(fnGlobalObject())();
|
||||
|
||||
assert.throws(TypeError, function() {
|
||||
f.bind(fnGlobalObject())();
|
||||
});
|
||||
|
||||
function gNonStrict() {
|
||||
return gNonStrict.caller || gNonStrict.caller.throwTypeError;
|
||||
|
|
|
@ -9,13 +9,14 @@ es5id: 15.3.5.4_2-7gs
|
|||
description: >
|
||||
Strict mode - checking access to non-strict function caller from
|
||||
strict function (Function constructor defined within strict mode)
|
||||
negative: TypeError
|
||||
flags: [onlyStrict]
|
||||
---*/
|
||||
|
||||
var f = Function("return gNonStrict();");
|
||||
f();
|
||||
|
||||
assert.throws(TypeError, function() {
|
||||
f();
|
||||
});
|
||||
|
||||
function gNonStrict() {
|
||||
return gNonStrict.caller;
|
||||
|
|
|
@ -10,13 +10,14 @@ description: >
|
|||
Strict mode - checking access to strict function caller from
|
||||
non-strict function (Function constructor includes strict
|
||||
directive prologue)
|
||||
negative: TypeError
|
||||
flags: [noStrict]
|
||||
---*/
|
||||
|
||||
var f = Function("\"use strict\";\nreturn gNonStrict();");
|
||||
f();
|
||||
|
||||
assert.throws(TypeError, function() {
|
||||
f();
|
||||
});
|
||||
|
||||
function gNonStrict() {
|
||||
return gNonStrict.caller || gNonStrict.caller.throwTypeError;
|
||||
|
|
|
@ -10,7 +10,6 @@ description: >
|
|||
Strict mode - checking access to strict function caller from
|
||||
non-strict function expression (FunctionDeclaration includes
|
||||
strict directive prologue)
|
||||
negative: TypeError
|
||||
flags: [noStrict]
|
||||
---*/
|
||||
|
||||
|
@ -22,4 +21,7 @@ function f() {
|
|||
"use strict";
|
||||
return gNonStrict();
|
||||
}
|
||||
f();
|
||||
|
||||
assert.throws(TypeError, function() {
|
||||
f();
|
||||
});
|
||||
|
|
|
@ -10,7 +10,6 @@ description: >
|
|||
Strict mode - checking access to strict function caller from
|
||||
non-strict, constructor-based function (FunctionDeclaration
|
||||
includes strict directive prologue)
|
||||
negative: TypeError
|
||||
flags: [noStrict]
|
||||
---*/
|
||||
|
||||
|
@ -20,4 +19,7 @@ function f() {
|
|||
"use strict";
|
||||
return gNonStrict();
|
||||
}
|
||||
f();
|
||||
|
||||
assert.throws(TypeError, function() {
|
||||
f();
|
||||
});
|
||||
|
|
|
@ -10,7 +10,6 @@ description: >
|
|||
Strict mode - checking access to strict function caller from
|
||||
non-strict property (FunctionDeclaration includes strict directive
|
||||
prologue)
|
||||
negative: TypeError
|
||||
flags: [noStrict]
|
||||
---*/
|
||||
|
||||
|
@ -26,4 +25,7 @@ function f() {
|
|||
"use strict";
|
||||
return o.gNonStrict;
|
||||
}
|
||||
f();
|
||||
|
||||
assert.throws(TypeError, function() {
|
||||
f();
|
||||
});
|
||||
|
|
|
@ -10,7 +10,6 @@ description: >
|
|||
Strict mode - checking access to strict function caller from bound
|
||||
non-strict function (FunctionDeclaration includes strict directive
|
||||
prologue)
|
||||
negative: TypeError
|
||||
flags: [noStrict]
|
||||
---*/
|
||||
|
||||
|
@ -20,8 +19,10 @@ function f() {
|
|||
"use strict";
|
||||
return gNonStrict();
|
||||
}
|
||||
f();
|
||||
|
||||
assert.throws(TypeError, function() {
|
||||
f();
|
||||
});
|
||||
|
||||
function gNonStrictBindee() {
|
||||
return gNonStrictBindee.caller || gNonStrictBindee.caller.throwTypeError;
|
||||
|
|
|
@ -10,13 +10,14 @@ description: >
|
|||
Strict mode - checking access to non-strict function caller from
|
||||
strict function (New'ed Function constructor defined within strict
|
||||
mode)
|
||||
negative: TypeError
|
||||
flags: [onlyStrict]
|
||||
---*/
|
||||
|
||||
var f = new Function("return gNonStrict();");
|
||||
f();
|
||||
|
||||
assert.throws(TypeError, function() {
|
||||
f();
|
||||
});
|
||||
|
||||
function gNonStrict() {
|
||||
return gNonStrict.caller;
|
||||
|
|
|
@ -4,7 +4,8 @@
|
|||
/*---
|
||||
es5id: 15.3.4.3_A13
|
||||
description: If IsCallable(func) is false, then throw a TypeError exception.
|
||||
negative: TypeError
|
||||
---*/
|
||||
|
||||
Function.prototype.apply.call(undefined, {}, []);
|
||||
assert.throws(TypeError, function() {
|
||||
Function.prototype.apply.call(undefined, {}, []);
|
||||
});
|
||||
|
|
|
@ -4,7 +4,8 @@
|
|||
/*---
|
||||
es5id: 15.3.4.3_A14
|
||||
description: If IsCallable(func) is false, then throw a TypeError exception.
|
||||
negative: TypeError
|
||||
---*/
|
||||
|
||||
Function.prototype.apply.call(null, {}, []);
|
||||
assert.throws(TypeError, function() {
|
||||
Function.prototype.apply.call(null, {}, []);
|
||||
});
|
||||
|
|
|
@ -4,7 +4,8 @@
|
|||
/*---
|
||||
es5id: 15.3.4.3_A15
|
||||
description: If IsCallable(func) is false, then throw a TypeError exception.
|
||||
negative: TypeError
|
||||
---*/
|
||||
|
||||
Function.prototype.apply.call({}, {}, []);
|
||||
assert.throws(TypeError, function() {
|
||||
Function.prototype.apply.call({}, {}, []);
|
||||
});
|
||||
|
|
|
@ -5,10 +5,12 @@
|
|||
info: "\"caller\" of bound function is poisoned (step 20)"
|
||||
es5id: 15.3.4.5_A1
|
||||
description: A bound function should fail to find its "caller"
|
||||
negative: TypeError
|
||||
---*/
|
||||
|
||||
function foo() { return bar.caller; }
|
||||
var bar = foo.bind({});
|
||||
function baz() { return bar(); }
|
||||
baz();
|
||||
|
||||
assert.throws(TypeError, function() {
|
||||
baz();
|
||||
});
|
||||
|
|
|
@ -4,7 +4,8 @@
|
|||
/*---
|
||||
es5id: 15.3.4.5_A13
|
||||
description: If IsCallable(func) is false, then throw a TypeError exception.
|
||||
negative: TypeError
|
||||
---*/
|
||||
|
||||
Function.prototype.bind.call(undefined, {});
|
||||
assert.throws(TypeError, function() {
|
||||
Function.prototype.bind.call(undefined, {});
|
||||
});
|
||||
|
|
|
@ -4,7 +4,8 @@
|
|||
/*---
|
||||
es5id: 15.3.4.5_A14
|
||||
description: If IsCallable(func) is false, then throw a TypeError exception.
|
||||
negative: TypeError
|
||||
---*/
|
||||
|
||||
Function.prototype.bind.call(null, {});
|
||||
assert.throws(TypeError, function() {
|
||||
Function.prototype.bind.call(null, {});
|
||||
});
|
||||
|
|
|
@ -4,7 +4,8 @@
|
|||
/*---
|
||||
es5id: 15.3.4.5_A15
|
||||
description: If IsCallable(func) is false, then throw a TypeError exception.
|
||||
negative: TypeError
|
||||
---*/
|
||||
|
||||
Function.prototype.bind.call({}, {});
|
||||
assert.throws(TypeError, function() {
|
||||
Function.prototype.bind.call({}, {});
|
||||
});
|
||||
|
|
|
@ -5,10 +5,12 @@
|
|||
info: "\"arguments\" of bound function is poisoned (step 21)"
|
||||
es5id: 15.3.4.5_A2
|
||||
description: a bound function should fail to find the bound function "arguments"
|
||||
negative: TypeError
|
||||
---*/
|
||||
|
||||
function foo() { return bar.arguments; }
|
||||
var bar = foo.bind({});
|
||||
function baz() { return bar(); }
|
||||
baz();
|
||||
|
||||
assert.throws(TypeError, function() {
|
||||
baz();
|
||||
});
|
||||
|
|
|
@ -4,7 +4,8 @@
|
|||
/*---
|
||||
es5id: 15.3.4.4_A13
|
||||
description: If IsCallable(func) is false, then throw a TypeError exception.
|
||||
negative: TypeError
|
||||
---*/
|
||||
|
||||
Function.prototype.call.call(undefined, {});
|
||||
assert.throws(TypeError, function() {
|
||||
Function.prototype.call.call(undefined, {});
|
||||
});
|
||||
|
|
|
@ -4,7 +4,8 @@
|
|||
/*---
|
||||
es5id: 15.3.4.4_A14
|
||||
description: If IsCallable(func) is false, then throw a TypeError exception.
|
||||
negative: TypeError
|
||||
---*/
|
||||
|
||||
Function.prototype.call.call(null, {});
|
||||
assert.throws(TypeError, function() {
|
||||
Function.prototype.call.call(null, {});
|
||||
});
|
||||
|
|
|
@ -4,7 +4,8 @@
|
|||
/*---
|
||||
es5id: 15.3.4.4_A15
|
||||
description: If IsCallable(func) is false, then throw a TypeError exception.
|
||||
negative: TypeError
|
||||
---*/
|
||||
|
||||
Function.prototype.call.call({}, {});
|
||||
assert.throws(TypeError, function() {
|
||||
Function.prototype.call.call({}, {});
|
||||
});
|
||||
|
|
|
@ -6,7 +6,8 @@ es5id: 15.3.4.2_A12
|
|||
description: >
|
||||
The Function.prototype.toString function is not generic; it throws
|
||||
a TypeError exception if its this value is not a Function object.
|
||||
negative: TypeError
|
||||
---*/
|
||||
|
||||
Function.prototype.toString.call(undefined);
|
||||
assert.throws(TypeError, function() {
|
||||
Function.prototype.toString.call(undefined);
|
||||
});
|
||||
|
|
|
@ -6,7 +6,8 @@ es5id: 15.3.4.2_A13
|
|||
description: >
|
||||
The toString function is not generic; it throws a TypeError
|
||||
exception if its this value is not a Function object.
|
||||
negative: TypeError
|
||||
---*/
|
||||
|
||||
Function.prototype.toString.call(null);
|
||||
assert.throws(TypeError, function() {
|
||||
Function.prototype.toString.call(null);
|
||||
});
|
||||
|
|
|
@ -6,7 +6,8 @@ es5id: 15.3.4.2_A14
|
|||
description: >
|
||||
The toString function is not generic; it throws a TypeError
|
||||
exception if its this value is not a Function object.
|
||||
negative: TypeError
|
||||
---*/
|
||||
|
||||
Function.prototype.toString.call({});
|
||||
assert.throws(TypeError, function() {
|
||||
Function.prototype.toString.call({});
|
||||
});
|
||||
|
|
|
@ -9,7 +9,8 @@ es5id: 15.3.4.2_A15
|
|||
description: >
|
||||
Whether or not they are callable, RegExp objects are not Function
|
||||
objects, so toString should throw a TypeError.
|
||||
negative: TypeError
|
||||
---*/
|
||||
|
||||
Function.prototype.toString.call(/x/);
|
||||
assert.throws(TypeError, function() {
|
||||
Function.prototype.toString.call(/x/);
|
||||
});
|
||||
|
|
|
@ -10,9 +10,10 @@ description: >
|
|||
The String constructor, given an object, should invoke that
|
||||
object's toString method as a method, i.e., with its this value
|
||||
bound to that object.
|
||||
negative: TypeError
|
||||
---*/
|
||||
|
||||
var obj = {toString: Function.prototype.toString};
|
||||
|
||||
String(obj);
|
||||
assert.throws(TypeError, function() {
|
||||
String(obj);
|
||||
});
|
||||
|
|
|
@ -6,7 +6,8 @@ es5id: 15.2.4.5_A12
|
|||
description: >
|
||||
Let O be the result of calling ToObject passing the this value as
|
||||
the argument.
|
||||
negative: TypeError
|
||||
---*/
|
||||
|
||||
Object.prototype.hasOwnProperty.call(undefined, 'foo');
|
||||
assert.throws(TypeError, function() {
|
||||
Object.prototype.hasOwnProperty.call(undefined, 'foo');
|
||||
});
|
||||
|
|
|
@ -6,7 +6,8 @@ es5id: 15.2.4.5_A13
|
|||
description: >
|
||||
Let O be the result of calling ToObject passing the this value as
|
||||
the argument.
|
||||
negative: TypeError
|
||||
---*/
|
||||
|
||||
Object.prototype.hasOwnProperty.call(null, 'foo');
|
||||
assert.throws(TypeError, function() {
|
||||
Object.prototype.hasOwnProperty.call(null, 'foo');
|
||||
});
|
||||
|
|
|
@ -6,7 +6,8 @@ es5id: 15.2.4.6_A12
|
|||
description: >
|
||||
Let O be the result of calling ToObject passing the this value as
|
||||
the argument.
|
||||
negative: TypeError
|
||||
---*/
|
||||
|
||||
Object.prototype.isPrototypeOf.call(undefined, {});
|
||||
assert.throws(TypeError, function() {
|
||||
Object.prototype.isPrototypeOf.call(undefined, {});
|
||||
});
|
||||
|
|
|
@ -6,7 +6,8 @@ es5id: 15.2.4.6_A13
|
|||
description: >
|
||||
Let O be the result of calling ToObject passing the this value as
|
||||
the argument.
|
||||
negative: TypeError
|
||||
---*/
|
||||
|
||||
Object.prototype.isPrototypeOf.call(null, {});
|
||||
assert.throws(TypeError, function() {
|
||||
Object.prototype.isPrototypeOf.call(null, {});
|
||||
});
|
||||
|
|
|
@ -6,7 +6,8 @@ es5id: 15.2.4.7_A12
|
|||
description: >
|
||||
Let O be the result of calling ToObject passing the this value as
|
||||
the argument.
|
||||
negative: TypeError
|
||||
---*/
|
||||
|
||||
Object.prototype.propertyIsEnumerable.call(undefined, 'foo');
|
||||
assert.throws(TypeError, function() {
|
||||
Object.prototype.propertyIsEnumerable.call(undefined, 'foo');
|
||||
});
|
||||
|
|
|
@ -6,7 +6,8 @@ es5id: 15.2.4.7_A13
|
|||
description: >
|
||||
Let O be the result of calling ToObject passing the this value as
|
||||
the argument.
|
||||
negative: TypeError
|
||||
---*/
|
||||
|
||||
Object.prototype.propertyIsEnumerable.call(null, 'foo');
|
||||
assert.throws(TypeError, function() {
|
||||
Object.prototype.propertyIsEnumerable.call(null, 'foo');
|
||||
});
|
||||
|
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue