mirror of https://github.com/tc39/test262.git
34 lines
1.5 KiB
JavaScript
34 lines
1.5 KiB
JavaScript
// This file was procedurally generated from the following sources:
|
|
// - src/function-forms/forbidden-ext-direct-access-prop-caller.case
|
|
// - src/function-forms/forbidden-extensions/bullet-one/func-decl-strict.template
|
|
/*---
|
|
description: Forbidden extension, o.caller (function declaration)
|
|
esid: sec-function-definitions-runtime-semantics-instantiatefunctionobject
|
|
flags: [generated, noStrict]
|
|
info: |
|
|
FunctionDeclaration :
|
|
function BindingIdentifier ( FormalParameters ) { FunctionBody }
|
|
|
|
ECMAScript function objects defined using syntactic constructors in strict mode code must
|
|
not be created with own properties named "caller" or "arguments". Such own properties also
|
|
must not be created for function objects defined using an ArrowFunction, MethodDefinition,
|
|
GeneratorDeclaration, GeneratorExpression, AsyncGeneratorDeclaration, AsyncGeneratorExpression,
|
|
ClassDeclaration, ClassExpression, AsyncFunctionDeclaration, AsyncFunctionExpression, or
|
|
AsyncArrowFunction regardless of whether the definition is contained in strict mode code.
|
|
Built-in functions, strict functions created using the Function constructor, generator functions
|
|
created using the Generator constructor, async functions created using the AsyncFunction
|
|
constructor, and functions created using the bind method also must not be created with such own
|
|
properties.
|
|
|
|
---*/
|
|
|
|
var callCount = 0;
|
|
function f() {
|
|
"use strict";
|
|
assert.sameValue(f.hasOwnProperty("caller"), false);
|
|
callCount++;
|
|
}
|
|
|
|
f();
|
|
assert.sameValue(callCount, 1, 'function body evaluated');
|