tor-browser

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

optional-catch-binding-lexical.js (953B)


      1 // Copyright (C) 2017 Lucas Azzola. All rights reserved.
      2 // This code is governed by the BSD license found in the LICENSE file.
      3 
      4 /*---
      5 author: Lucas Azzola
      6 esid: pending
      7 description: lexical environment runtime semantics for optional catch binding
      8 features: [optional-catch-binding]
      9 info: |
     10  Runtime Semantics: CatchClauseEvaluation
     11 
     12  Catch : catch Block
     13    Let oldEnv be the running execution context's LexicalEnvironment.
     14    Let catchEnv be NewDeclarativeEnvironment(oldEnv).
     15    Set the running execution context's LexicalEnvironment to catchEnv.
     16    (...)
     17    Set the running execution context's LexicalEnvironment to oldEnv.
     18    Return Completion(B).
     19 ---*/
     20 
     21 let x = 1;
     22 let ranCatch = false;
     23 
     24 try {
     25    x = 2;
     26    throw new Error();
     27 } catch {
     28    let x = 3;
     29    let y = true;
     30    ranCatch = true;
     31 }
     32 
     33 assert(ranCatch, 'executed `catch` block');
     34 assert.sameValue(x, 2);
     35 
     36 assert.throws(ReferenceError, function() {
     37    y;
     38 });
     39 
     40 reportCompare(0, 0);