tor-browser

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

public-class-field-initialization-is-visible-to-proxy.js (904B)


      1 // Copyright (C) 2019 Caio Lima. All rights reserved.
      2 // This code is governed by the BSD license found in the LICENSE file.
      3 
      4 /*---
      5 description: Public class field initialization calls [[DefineOwnProperty]] and can be observed by Proxies
      6 esid: sec-define-field
      7 info: |
      8  DefineField(receiver, fieldRecord)
      9    ...
     10    8. If fieldName is a Private Name,
     11      a. Perform ? PrivateFieldAdd(fieldName, receiver, initValue).
     12    9. Else,
     13      a. Assert: IsPropertyKey(fieldName) is true.
     14      b. Perform ? CreateDataPropertyOrThrow(receiver, fieldName, initValue).
     15    10. Return.
     16 features: [class, class-fields-public]
     17 ---*/
     18 
     19 function ProxyBase() {
     20  return new Proxy(this, {
     21    defineProperty: function (target, key, descriptor) {
     22      throw new Test262Error();
     23    }
     24  });
     25 }
     26 
     27 class Base extends ProxyBase {
     28  f = "Test262";
     29 }
     30 
     31 assert.throws(Test262Error, () => { new Base(); });
     32 
     33 reportCompare(0, 0);