tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

StrictFunction_restricted-properties-strict.js (1758B)


      1 'use strict';
      2 // Copyright (C) 2015 Caitlin Potter. All rights reserved.
      3 // This code is governed by the BSD license found in the LICENSE file.
      4 
      5 /*---
      6 description: >
      7    ECMAScript Function objects defined using syntactic constructors
      8    in strict mode code do not have own properties "caller" or
      9    "arguments" other than those that are created by applying the
     10    AddRestrictedFunctionProperties abstract operation to the function.
     11 flags: [onlyStrict]
     12 es6id: 16.1
     13 ---*/
     14 
     15 function func() {}
     16 
     17 assert.throws(TypeError, function() {
     18  return func.caller;
     19 }, 'return func.caller throws a TypeError exception');
     20 
     21 assert.throws(TypeError, function() {
     22  func.caller = {};
     23 }, 'func.caller = {} throws a TypeError exception');
     24 
     25 assert.throws(TypeError, function() {
     26  return func.arguments;
     27 }, 'return func.arguments throws a TypeError exception');
     28 
     29 assert.throws(TypeError, function() {
     30  func.arguments = {};
     31 }, 'func.arguments = {} throws a TypeError exception');
     32 
     33 var newfunc = new Function('"use strict"');
     34 
     35 assert.sameValue(newfunc.hasOwnProperty('caller'), false, 'newfunc.hasOwnProperty(\'caller\') must return false');
     36 assert.sameValue(newfunc.hasOwnProperty('arguments'), false, 'newfunc.hasOwnProperty(\'arguments\') must return false');
     37 
     38 assert.throws(TypeError, function() {
     39  return newfunc.caller;
     40 }, 'return newfunc.caller throws a TypeError exception');
     41 
     42 assert.throws(TypeError, function() {
     43  newfunc.caller = {};
     44 }, 'newfunc.caller = {} throws a TypeError exception');
     45 
     46 assert.throws(TypeError, function() {
     47  return newfunc.arguments;
     48 }, 'return newfunc.arguments throws a TypeError exception');
     49 
     50 assert.throws(TypeError, function() {
     51  newfunc.arguments = {};
     52 }, 'newfunc.arguments = {} throws a TypeError exception');
     53 
     54 reportCompare(0, 0);