123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164 |
- // with preexisting semi
- x; [1, 2, 3].forEach(fn)
- x; [a, b, ...c] = [1, 2]
- x; /r/i.test('r')
- x; +1
- x; - 1
- x; ('h' + 'i').repeat(10)
- x; (1, 2)
- x; (() => {})()
- x; ({ a: 1 }).entries()
- x; ({ a: 1 }).entries()
- x; <Hello />
- x; `string`
- x; (x, y) => x
- // doesn't have to be preceded by a semicolon
- class X {} [1, 2, 3].forEach(fn)
- // TODO: upgrade parser
- // class A {
- // async; // The semicolon is *not* necessary
- // x(){}
- // }
- // class B {
- // static; // The semicolon *is* necessary
- // x(){}
- // }
- class C {
- get; // The semicolon *is* necessary
- x(){}
- }
- class C {
- get = () => {}; // The semicolon is *not* necessary
- x(){}
- }
- class C {
- set; // The semicolon *is* necessary
- x(){}
- }
- class C {
- set = () => {}; // The semicolon is *not* necessary
- x(){}
- }
- // don't semicolon if it doesn't start statement
- if (true) (() => {})()
- class A {
- 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 G {
- x = 1
- }
- class G {
- x() {}
- }
- class G {
- *x() {}
- }
- class G {
- [x] = 1
- }
- // check indentation
- if (true) {
- x; (() => {})()
- }
- // flow
- (x: void);
- (y: void)
- // check statement clauses
- do break; while (false)
- if (true) do break; while (false)
- if (true) 1; else 2
- for (;;) ;
- for (x of y) ;
- debugger
- // check that it doesn't break non-ASI
- 1
- - 1
- 1
- + 1
- 1
- / 1
- arr
- [0]
- fn
- (x)
- !1
- 1
- < 1
- tag
- `string`
- x; x => x
- x; (a || b).c++
- x; ++(a || b).c
- while (false)
- (function(){}())
- aReallyLongLine012345678901234567890123456789012345678901234567890123456789 *
- (b + c)
|