tor-browser

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

this-check-ordering.js (1910B)


      1 // Copyright (C) 2014 the V8 project authors. All rights reserved.
      2 // This code is governed by the BSD license found in the LICENSE file.
      3 /*---
      4 es6id: 14.5
      5 description: >
      6    class this check ordering
      7 ---*/
      8 var baseCalled = 0;
      9 class Base {
     10  constructor() { baseCalled++ }
     11 }
     12 
     13 var fCalled = 0;
     14 function f() { fCalled++; return 3; }
     15 
     16 class Subclass1 extends Base {
     17  constructor() {
     18    baseCalled = 0;
     19    super();
     20    assert.sameValue(baseCalled, 1, "The value of `baseCalled` is `1`");
     21    var obj = this;
     22 
     23    var exn = null;
     24    baseCalled = 0;
     25    fCalled = 0;
     26    try {
     27      super(f());
     28    } catch (e) { exn = e; }
     29    assert.sameValue(
     30      exn instanceof ReferenceError,
     31      true,
     32      "The result of `exn instanceof ReferenceError` is `true`"
     33    );
     34    assert.sameValue(fCalled, 1, "The value of `fCalled` is `1`");
     35    assert.sameValue(baseCalled, 1, "The value of `baseCalled` is `1`");
     36    assert.sameValue(this, obj, "`this` is `obj`");
     37 
     38    exn = null;
     39    baseCalled = 0;
     40    fCalled = 0;
     41    try {
     42      super(super(), f());
     43    } catch (e) { exn = e; }
     44    assert.sameValue(
     45      exn instanceof ReferenceError,
     46      true,
     47      "The result of `exn instanceof ReferenceError` is `true`"
     48    );
     49    assert.sameValue(fCalled, 0, "The value of `fCalled` is `0`");
     50    assert.sameValue(baseCalled, 1, "The value of `baseCalled` is `1`");
     51    assert.sameValue(this, obj, "`this` is `obj`");
     52 
     53    exn = null;
     54    baseCalled = 0;
     55    fCalled = 0;
     56    try {
     57      super(f(), super());
     58    } catch (e) { exn = e; }
     59    assert.sameValue(
     60      exn instanceof ReferenceError,
     61      true,
     62      "The result of `exn instanceof ReferenceError` is `true`"
     63    );
     64    assert.sameValue(fCalled, 1, "The value of `fCalled` is `1`");
     65    assert.sameValue(baseCalled, 1, "The value of `baseCalled` is `1`");
     66    assert.sameValue(this, obj, "`this` is `obj`");
     67  }
     68 }
     69 
     70 new Subclass1();
     71 
     72 reportCompare(0, 0);