tor-browser

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

block-decl-nested-blocks-with-fun-decl.js (1408B)


      1 // Copyright (C) 2018 André Bargull. All rights reserved.
      2 // This code is governed by the BSD license found in the LICENSE file.
      3 
      4 /*---
      5 esid: sec-web-compat-functiondeclarationinstantiation
      6 description: >
      7  Nested function declarations, the second declaration is not Annex-B applicable.
      8 info: |
      9  B.3.3.1 Changes to FunctionDeclarationInstantiation
     10 
     11  1. If strict is false, then
     12    a. For each FunctionDeclaration f that is directly contained in the
     13       StatementList of a Block, CaseClause, or DefaultClause, do
     14      i. Let F be StringValue of the BindingIdentifier of FunctionDeclaration f.
     15      ii. If replacing the FunctionDeclaration f with a VariableStatement that
     16          has F as a BindingIdentifier would not produce any Early Errors for
     17          func and F is not an element of parameterNames, then
     18       ...
     19 flags: [noStrict]
     20 ---*/
     21 
     22 function g() {
     23    // Create an outer block-statement.
     24    {
     25        // A lexically declared function declaration.
     26        // This function is applicable for Annex-B semantics.
     27        function f() { return 1; }
     28 
     29        // An inner block-statement with another function declaration.
     30        // This function is not applicable for Annex-B semantics, because
     31        // replacing it with |var f| would result in a SyntaxError.
     32        {
     33            function f() { return 2; }
     34        }
     35    }
     36 
     37    assert.sameValue(f(), 1);
     38 }
     39 
     40 g();
     41 
     42 reportCompare(0, 0);