// TODO: upgrade parser // class A { // async; // The semicolon is *not* necessary // x(){} // } // class B { // static; // The semicolon *is* necessary // x(){} // } class C1 { get; // The semicolon *is* necessary x() {} } class C2 { get = () => {}; // The semicolon is *not* necessary x() {} } class C3 { set; // The semicolon *is* necessary x() {} } class C4 { set = () => {}; // The semicolon is *not* necessary x() {} } class A1 { a = 0; [b]() {} c = 0; *d() {} e = 0; [f] = 0; // none of the semicolons above this comment can be omitted. // none of the semicolons below this comment are necessary. q() {} [h]() {} p() {} *i() {} a = 1; get ["y"]() {} a = 1; static ["y"]() {} a = 1; set ["z"](z) {} a = 1; async ["a"]() {} a = 1; async *g() {} a = 0; b = 1; } class A2 { a = 0; [b]() {} c = 0; *d() {} e = 0; [f] = 0; // none of the semicolons above this comment can be omitted. // none of the semicolons below this comment are necessary. q() {} [h]() {} p() {} *i() {} a = 1; get ["y"]() {} a = 1; static ["y"]() {} a = 1; set ["z"](z) {} a = 1; async ["a"]() {} a = 1; async *g() {} a = 0; b = 1; } // being first/last shouldn't break things class G1 { x = 1; } class G2 { x() {} } class G3 { *x() {} } class G4 { [x] = 1; }