tor-browser

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

optional-call-preserves-this.js (828B)


      1 // Copyright (C) 2019 Sony Interactive Entertainment Inc. All rights reserved.
      2 // This code is governed by the BSD license found in the LICENSE file.
      3 /*---
      4 esid: sec-optional-chaining-chain-evaluation
      5 description: >
      6  optional call must preserve this context, as with a non-optional call
      7 info: |
      8  OptionalChain : ?. Arguments
      9    1. Let thisChain be this OptionalChain.
     10    2. Let tailCall be IsInTailPosition(thisChain).
     11    3. Return ? EvaluateCall(baseValue, baseReference, Arguments, tailCall).
     12 features: [optional-chaining]
     13 ---*/
     14 
     15 const a = {
     16    b() { return this._b; },
     17    _b: { c: 42 }
     18 };
     19 
     20 assert.sameValue(a?.b().c, 42);
     21 assert.sameValue((a?.b)().c, 42);
     22 
     23 assert.sameValue(a.b?.().c, 42);
     24 assert.sameValue((a.b)?.().c, 42);
     25 
     26 assert.sameValue(a?.b?.().c, 42);
     27 assert.sameValue((a?.b)?.().c, 42);
     28 
     29 reportCompare(0, 0);