tor-browser

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

left-hand-side-private-reference-data-property-srshift.js (1910B)


      1 // This file was procedurally generated from the following sources:
      2 // - src/compound-assignment-private/srshift.case
      3 // - src/compound-assignment-private/default/data-property.template
      4 /*---
      5 description: Compound signed-right-shift assignment with target being a private reference (to a field)
      6 esid: sec-assignment-operators-runtime-semantics-evaluation
      7 features: [class-fields-private]
      8 flags: [generated]
      9 info: |
     10    sec-assignment-operators-runtime-semantics-evaluation
     11    AssignmentExpression : LeftHandSideExpression AssignmentOperator AssignmentExpression
     12      1. Let _lref_ be the result of evaluating |LeftHandSideExpression|.
     13      2. Let _lval_ be ? GetValue(_lref_).
     14      ...
     15      7. Let _r_ be ApplyStringOrNumericBinaryOperator(_lval_, _opText_, _rval_).
     16      8. Perform ? PutValue(_lref_, _r_).
     17      9. Return _r_.
     18 
     19    sec-property-accessors-runtime-semantics-evaluation
     20    MemberExpression : MemberExpression `.` PrivateIdentifier
     21 
     22      1. Let _baseReference_ be the result of evaluating |MemberExpression|.
     23      2. Let _baseValue_ be ? GetValue(_baseReference_).
     24      3. Let _fieldNameString_ be the StringValue of |PrivateIdentifier|.
     25      4. Return ! MakePrivateReference(_baseValue_, _fieldNameString_).
     26 
     27    PutValue (V, W)
     28      ...
     29      5.b. If IsPrivateReference(_V_) is *true*, then
     30        i. Return ? PrivateSet(_baseObj_, _V_.[[ReferencedName]], _W_).
     31 
     32    PrivateSet (O, P, value)
     33      ...
     34      3. If _entry_.[[Kind]] is ~field~, then
     35        a. Set _entry_.[[Value]] to _value_.
     36 
     37 ---*/
     38 
     39 
     40 class C {
     41  #field = 0b1100;
     42  compoundAssignment() {
     43    return this.#field >>= 2;
     44  }
     45  fieldValue() {
     46    return this.#field;
     47  }
     48 }
     49 
     50 const o = new C();
     51 assert.sameValue(o.compoundAssignment(), 0b0011, "The expression should evaluate to the result");
     52 assert.sameValue(o.fieldValue(), 0b0011, "PutValue should store the result in the private reference");
     53 
     54 reportCompare(0, 0);