2015-03-27 02:36:22 +01:00
// Copyright (C) 2015 Caitlin Potter. All rights reserved.
// This code is governed by the BSD license found in the LICENSE file.
/ * - - -
description : >
ECMAScript Function objects defined using syntactic constructors
in strict mode code do not have own properties "caller" or
2016-06-14 21:26:12 +02:00
"arguments" other than those that are created by applying the
AddRestrictedFunctionProperties abstract operation to the function .
2015-03-27 02:36:22 +01:00
flags : [ onlyStrict ]
es6id : 16.1
-- - * /
function func ( ) { }
assert . throws ( TypeError , function ( ) {
return func . caller ;
} ) ;
assert . throws ( TypeError , function ( ) {
func . caller = { } ;
} ) ;
assert . throws ( TypeError , function ( ) {
return func . arguments ;
} ) ;
assert . throws ( TypeError , function ( ) {
func . arguments = { } ;
} ) ;
var newfunc = new Function ( '"use strict"' ) ;
assert . sameValue ( newfunc . hasOwnProperty ( 'caller' ) , false , 'strict Functions created using Function constructor do not have own property "caller"' ) ;
assert . sameValue ( newfunc . hasOwnProperty ( 'arguments' ) , false , 'strict Functions created using Function constructor do not have own property "arguments"' ) ;
assert . throws ( TypeError , function ( ) {
return newfunc . caller ;
} ) ;
assert . throws ( TypeError , function ( ) {
newfunc . caller = { } ;
} ) ;
assert . throws ( TypeError , function ( ) {
return newfunc . arguments ;
} ) ;
assert . throws ( TypeError , function ( ) {
newfunc . arguments = { } ;
} ) ;