Checks Debugger.getPossibleBreakpoints for class fields
// Copyright 2017 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 x = |R|class {}

|_|x = |R|class {
  x = |_|1;
  y = |_|2|R|;
}

|_|x = |R|class {
  x = |C|foo();
  y = |_|2;
  z = |C|bar()|R|;
}

|_|x = class {
  x = |C|foo();
  y = |_|2;
  z = |C|bar()|R|;
  constructor() {
    this.|_|x;
  |R|}
}

|_|x = class {
  x = |C|foo();
  y = |_|2;
  constructor() {
    this.|_|x;
  |R|}
  z = |C|bar()|R|;
}

|_|x = class {
  x = |C|foo();
  y = |_|2;
  constructor() {
    this.|_|x;
  |R|}
  z = |C|bar()|R|;
}

|_|x = |R|class {
  x = |_|1;
  foo() {|R|}
  y = |_|2|R|;
}

|_|x = |R|class {
  x = (function() {
    |C|foo();
  |R|})|C|();
  y = (() => {
    |C|bar();
  |R|})|C|()|R|;
}

|_|x = |R|class {
  x = |_|function() {
    |C|foo();
  |R|}|R|;
}

|_|x = |R|class {
  x = |_|async function() {
    |_|await |C|foo();
  |R|}|R|;
}

|_|x = |R|class {
  x = |_|() => {
    |C|foo();
  |R|};
  y = |_|() => |C|bar()|R|;
}

|_|x = |R|class {
  x = |_|async () => {
    |_|await |C|foo();
  |R|};
  y = |_|async () => |_|await |C|bar()|R|;
}

|_|x = |R|class {
  [|_|x] = |_|1;
  [|C|foo()] = |_|2|R|;
}

|_|x = |R|class {
  [|_|x] = |_|[...this]|R|;
}

|_|x = |R|class {
  x;
  [|C|foo()]|R|;
}

|_|x = |R|class {
  x = |_|function*|_|() {
    |_|yield 1;
  |R|}|R|;
}

|_|x = |R|class {
  static x = |_|1;
  static y = |_|2|R|;
}

|_|x = |R|class {
  static x = |C|foo();
  static y = |_|2;
  static z = |C|bar()|R|;
}

|_|x = class {
  static x = |C|foo();
  static y = |_|2;
  static z = |C|bar()|R|;
  constructor() {
    this.|_|x;
  |R|}
}

|_|x = class {
  static x = |C|foo();
  static y = |_|2;
  constructor() {
    this.|_|x;
  |R|}
  static z = |C|bar()|R|;
}

|_|x = |R|class {
  static x = |_|1;
  static foo() {|R|}
  bar() {|R|}
  static y = |_|2|R|;
}

|_|x = |R|class {
  static x = (function() {
    |C|foo();
  |R|})|C|();
  static y = (() => {
    |C|bar();
  |R|})|C|()|R|;
}

|_|x = |R|class {
  static x = |_|function() {
    |C|foo();
  |R|}|R|;
}

|_|x = |R|class {
  static x = |_|async function() {
    |_|await |C|foo();
  |R|}|R|;
}

|_|x = |R|class {
  static x = |_|() => {
    |C|foo();
  |R|};
  static y = |_|() => |C|bar()|R|;
}

|_|x = |R|class {
  static x = |_|async () => {
    |_|await |C|foo();
  |R|};
  static y = |_|async () => |_|await |C|bar()|R|;
}

|_|x = |R|class {
  static [|_|x] = |_|1;
  static [|C|foo()] = |_|2|R|;
}

|_|x = |R|class {
  static [|_|x] = |_|[...this]|R|;
}

|_|x = |R|class {
  static x;
  static [|C|foo()]|R|;
}

|_|x = |R|class {
  static x = |_|function*|_|() {
    |_|yield 1;
  |R|}|R|;
}

|_|x = |R|class {
  static x = |_|1;
  y = |_|2;
  static [|_|z] = |_|3;
  [|_|p] = |_|4;
  static [|C|foo()] = |_|5|R|;
  [|C|bar()] = |_|6|R|;
}
|R|
