class-private-methods-static-nested.js 1.55 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38
// Copyright 2020 the V8 project authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

let { session, contextGroup, Protocol } = InspectorTest.start(
  "Test static private class methods"
);

const script = `
function run() {
  class A {
    static #method() {
      debugger;
    }
    static test() {
      class B {
        static test() { debugger; }
      }
      A.#method();  // reference #method so it shows up
      B.test();
    }
  }
  A.test();
}`;

contextGroup.addScript(script);

InspectorTest.runAsyncTestSuite([
  async function testScopesPaused() {
    Protocol.Debugger.enable();

    // Do not await here, instead oncePaused should be awaited.
    Protocol.Runtime.evaluate({ expression: 'run()' });

    InspectorTest.log('privateProperties on class A');
    let {
      params: { callFrames }
    } = await Protocol.Debugger.oncePaused(); // inside A.#method()
39

40 41 42 43
    let frame = callFrames[0];
    let { result } = await Protocol.Runtime.getProperties({
      objectId: frame.this.objectId
    });
44
    InspectorTest.logMessage(result.privateProperties);
45 46 47 48 49 50 51 52 53 54 55 56 57 58 59
    Protocol.Debugger.resume();

    ({ params: { callFrames } } = await Protocol.Debugger.oncePaused());  // B.test();
    frame = callFrames[0];

    InspectorTest.log('privateProperties on class B');
    ({ result } = await Protocol.Runtime.getProperties({
      objectId: frame.this.objectId
    }));
    InspectorTest.logObject(result.privateProperties);

    Protocol.Debugger.resume();
    Protocol.Debugger.disable();
  }
]);