2 * @fileoverview Tests for semi rule.
3 * @author Nicholas C. Zakas
8 //------------------------------------------------------------------------------
10 //------------------------------------------------------------------------------
12 const rule
= require("../../../lib/rules/semi"),
13 { RuleTester
} = require("../../../lib/rule-tester");
15 //------------------------------------------------------------------------------
17 //------------------------------------------------------------------------------
19 const ruleTester
= new RuleTester();
21 ruleTester
.run("semi", rule
, {
27 "setTimeout(function() {foo = \"bar\"; });",
28 "setTimeout(function() {foo = \"bar\";});",
31 "if (true) {}\n;[global, extended].forEach(function(){});",
32 "throw new Error('foo');",
33 { code
: "throw new Error('foo')", options
: ["never"] },
34 { code
: "var x = 5", options
: ["never"] },
35 { code
: "var x =5, y", options
: ["never"] },
36 { code
: "foo()", options
: ["never"] },
37 { code
: "debugger", options
: ["never"] },
38 { code
: "for (var a in b){}", options
: ["never"] },
39 { code
: "for (var i;;){}", options
: ["never"] },
40 { code
: "x = foo()", options
: ["never"] },
41 { code
: "if (true) {}\n;[global, extended].forEach(function(){})", options
: ["never"] },
42 { code
: "(function bar() {})\n;(function foo(){})", options
: ["never"] },
43 { code
: ";/foo/.test('bar')", options
: ["never"] },
44 { code
: ";+5", options
: ["never"] },
45 { code
: ";-foo()", options
: ["never"] },
46 { code
: "a++\nb++", options
: ["never"] },
47 { code
: "a++; b++", options
: ["never"] },
48 { code
: "for (let thing of {}) {\n console.log(thing);\n}", parserOptions
: { ecmaVersion
: 6 } },
49 { code
: "do{}while(true)", options
: ["never"] },
50 { code
: "do{}while(true);", options
: ["always"] },
51 { code
: "class C { static {} }", parserOptions
: { ecmaVersion
: 2022 } },
52 { code
: "class C { static {} }", options
: ["never"], parserOptions
: { ecmaVersion
: 2022 } },
53 { code
: "class C { static { foo(); } }", parserOptions
: { ecmaVersion
: 2022 } },
54 { code
: "class C { static { foo(); } }", options
: ["always"], parserOptions
: { ecmaVersion
: 2022 } },
55 { code
: "class C { static { foo(); bar(); } }", parserOptions
: { ecmaVersion
: 2022 } },
56 { code
: "class C { static { foo(); bar(); baz();} }", parserOptions
: { ecmaVersion
: 2022 } },
57 { code
: "class C { static { foo() } }", options
: ["never"], parserOptions
: { ecmaVersion
: 2022 } },
58 { code
: "class C { static { foo()\nbar() } }", options
: ["never"], parserOptions
: { ecmaVersion
: 2022 } },
59 { code
: "class C { static { foo()\nbar()\nbaz() } }", options
: ["never"], parserOptions
: { ecmaVersion
: 2022 } },
60 { code
: "class C { static { foo(); bar() } }", options
: ["never"], parserOptions
: { ecmaVersion
: 2022 } },
61 { code
: "class C { static { foo();\n (a) } }", options
: ["never"], parserOptions
: { ecmaVersion
: 2022 } },
62 { code
: "class C { static { foo()\n ;(a) } }", options
: ["never"], parserOptions
: { ecmaVersion
: 2022 } },
63 { code
: "class C { static { foo();\n [a] } }", options
: ["never"], parserOptions
: { ecmaVersion
: 2022 } },
64 { code
: "class C { static { foo()\n ;[a] } }", options
: ["never"], parserOptions
: { ecmaVersion
: 2022 } },
65 { code
: "class C { static { foo();\n +a } }", options
: ["never"], parserOptions
: { ecmaVersion
: 2022 } },
66 { code
: "class C { static { foo()\n ;+a } }", options
: ["never"], parserOptions
: { ecmaVersion
: 2022 } },
67 { code
: "class C { static { foo();\n -a } }", options
: ["never"], parserOptions
: { ecmaVersion
: 2022 } },
68 { code
: "class C { static { foo()\n ;-a } }", options
: ["never"], parserOptions
: { ecmaVersion
: 2022 } },
69 { code
: "class C { static { foo();\n /a/ } }", options
: ["never"], parserOptions
: { ecmaVersion
: 2022 } },
70 { code
: "class C { static { foo()\n ;/a/} }", options
: ["never"], parserOptions
: { ecmaVersion
: 2022 } },
72 code
: "class C { static { foo();\n (a) } }",
73 options
: ["never", { beforeStatementContinuationChars
: "never" }],
74 parserOptions
: { ecmaVersion
: 2022 }
77 code
: "class C { static { do ; while (foo)\n (a)} }",
78 options
: ["never", { beforeStatementContinuationChars
: "never" }],
79 parserOptions
: { ecmaVersion
: 2022 }
82 code
: "class C { static { do ; while (foo)\n ;(a)} }",
83 options
: ["never", { beforeStatementContinuationChars
: "always" }],
84 parserOptions
: { ecmaVersion
: 2022 }
87 // omitLastInOneLineBlock: true
88 { code
: "if (foo) { bar() }", options
: ["always", { omitLastInOneLineBlock
: true }] },
89 { code
: "if (foo) { bar(); baz() }", options
: ["always", { omitLastInOneLineBlock
: true }] },
90 { code
: "if (foo)\n{ bar(); baz() }", options
: ["always", { omitLastInOneLineBlock
: true }] },
91 { code
: "if (foo) {\n bar(); baz(); }", options
: ["always", { omitLastInOneLineBlock
: true }] },
92 { code
: "if (foo) { bar(); baz(); \n}", options
: ["always", { omitLastInOneLineBlock
: true }] },
93 { code
: "function foo() { bar(); baz() }", options
: ["always", { omitLastInOneLineBlock
: true }] },
94 { code
: "function foo()\n{ bar(); baz() }", options
: ["always", { omitLastInOneLineBlock
: true }] },
95 { code
: "function foo(){\n bar(); baz(); }", options
: ["always", { omitLastInOneLineBlock
: true }] },
96 { code
: "function foo(){ bar(); baz(); \n}", options
: ["always", { omitLastInOneLineBlock
: true }] },
97 { code
: "() => { bar(); baz() };", options
: ["always", { omitLastInOneLineBlock
: true }], parserOptions
: { ecmaVersion
: 6 } },
98 { code
: "() =>\n { bar(); baz() };", options
: ["always", { omitLastInOneLineBlock
: true }], parserOptions
: { ecmaVersion
: 6 } },
99 { code
: "() => {\n bar(); baz(); };", options
: ["always", { omitLastInOneLineBlock
: true }], parserOptions
: { ecmaVersion
: 6 } },
100 { code
: "() => { bar(); baz(); \n};", options
: ["always", { omitLastInOneLineBlock
: true }], parserOptions
: { ecmaVersion
: 6 } },
101 { code
: "const obj = { method() { bar(); baz() } };", options
: ["always", { omitLastInOneLineBlock
: true }], parserOptions
: { ecmaVersion
: 6 } },
102 { code
: "const obj = { method()\n { bar(); baz() } };", options
: ["always", { omitLastInOneLineBlock
: true }], parserOptions
: { ecmaVersion
: 6 } },
103 { code
: "const obj = { method() {\n bar(); baz(); } };", options
: ["always", { omitLastInOneLineBlock
: true }], parserOptions
: { ecmaVersion
: 6 } },
104 { code
: "const obj = { method() { bar(); baz(); \n} };", options
: ["always", { omitLastInOneLineBlock
: true }], parserOptions
: { ecmaVersion
: 6 } },
105 { code
: "class C {\n method() { bar(); baz() } \n}", options
: ["always", { omitLastInOneLineBlock
: true }], parserOptions
: { ecmaVersion
: 6 } },
106 { code
: "class C {\n method()\n { bar(); baz() } \n}", options
: ["always", { omitLastInOneLineBlock
: true }], parserOptions
: { ecmaVersion
: 6 } },
107 { code
: "class C {\n method() {\n bar(); baz(); } \n}", options
: ["always", { omitLastInOneLineBlock
: true }], parserOptions
: { ecmaVersion
: 6 } },
108 { code
: "class C {\n method() { bar(); baz(); \n} \n}", options
: ["always", { omitLastInOneLineBlock
: true }], parserOptions
: { ecmaVersion
: 6 } },
109 { code
: "class C {\n static { bar(); baz() } \n}", options
: ["always", { omitLastInOneLineBlock
: true }], parserOptions
: { ecmaVersion
: 2022 } },
110 { code
: "class C {\n static\n { bar(); baz() } \n}", options
: ["always", { omitLastInOneLineBlock
: true }], parserOptions
: { ecmaVersion
: 2022 } },
111 { code
: "class C {\n static {\n bar(); baz(); } \n}", options
: ["always", { omitLastInOneLineBlock
: true }], parserOptions
: { ecmaVersion
: 2022 } },
112 { code
: "class C {\n static { bar(); baz(); \n} \n}", options
: ["always", { omitLastInOneLineBlock
: true }], parserOptions
: { ecmaVersion
: 2022 } },
114 // omitLastInOneLineClassBody: true
117 export class SomeClass{
119 console.log(this.type);
123 export class Variant1 extends SomeClass{type=1}
124 export class Variant2 extends SomeClass{type=2}
125 export class Variant3 extends SomeClass{type=3}
126 export class Variant4 extends SomeClass{type=4}
127 export class Variant5 extends SomeClass{type=5}
129 options
: ["always", { omitLastInOneLineClassBody
: true }],
130 parserOptions
: { ecmaVersion
: 2022, sourceType
: "module" }
134 export class SomeClass{
136 console.log(this.type);
137 console.log(this.anotherType);
141 export class Variant1 extends SomeClass{type=1; anotherType=2}
143 options
: ["always", { omitLastInOneLineClassBody
: true }],
144 parserOptions
: { ecmaVersion
: 2022, sourceType
: "module" }
148 export class SomeClass{
150 console.log(this.type);
154 export class Variant1 extends SomeClass{type=1;}
155 export class Variant2 extends SomeClass{type=2;}
156 export class Variant3 extends SomeClass{type=3;}
157 export class Variant4 extends SomeClass{type=4;}
158 export class Variant5 extends SomeClass{type=5;}
160 options
: ["always", { omitLastInOneLineClassBody
: false }],
161 parserOptions
: { ecmaVersion
: 2022, sourceType
: "module" }
164 code
: "class C {\nfoo;}",
165 options
: ["always", { omitLastInOneLineClassBody
: true }],
166 parserOptions
: { ecmaVersion
: 2022 }
169 code
: "class C {foo;\n}",
170 options
: ["always", { omitLastInOneLineClassBody
: true }],
171 parserOptions
: { ecmaVersion
: 2022 }
174 code
: "class C {foo;\nbar;}",
175 options
: ["always", { omitLastInOneLineClassBody
: true }],
176 parserOptions
: { ecmaVersion
: 2022 }
180 options
: ["always", { omitLastInOneLineClassBody
: true }],
181 parserOptions
: { ecmaVersion
: 2022 }
184 code
: "class C\n{ foo }",
185 options
: ["always", { omitLastInOneLineClassBody
: true }],
186 parserOptions
: { ecmaVersion
: 2022 }
189 // method definitions and static blocks don't have a semicolon.
190 { code
: "class A { a() {} b() {} }", parserOptions
: { ecmaVersion
: 6 } },
191 { code
: "var A = class { a() {} b() {} };", parserOptions
: { ecmaVersion
: 6 } },
192 { code
: "class A { static {} }", parserOptions
: { ecmaVersion
: 2022 } },
194 { code
: "import theDefault, { named1, named2 } from 'src/mylib';", parserOptions
: { ecmaVersion
: 6, sourceType
: "module" } },
195 { code
: "import theDefault, { named1, named2 } from 'src/mylib'", options
: ["never"], parserOptions
: { ecmaVersion
: 6, sourceType
: "module" } },
198 { code
: "export * from 'foo';", parserOptions
: { ecmaVersion
: 6, sourceType
: "module" } },
199 { code
: "export { foo } from 'foo';", parserOptions
: { ecmaVersion
: 6, sourceType
: "module" } },
200 { code
: "var foo = 0;export { foo };", parserOptions
: { ecmaVersion
: 6, sourceType
: "module" } },
201 { code
: "export var foo;", parserOptions
: { ecmaVersion
: 6, sourceType
: "module" } },
202 { code
: "export function foo () { }", parserOptions
: { ecmaVersion
: 6, sourceType
: "module" } },
203 { code
: "export function* foo () { }", parserOptions
: { ecmaVersion
: 6, sourceType
: "module" } },
204 { code
: "export class Foo { }", parserOptions
: { ecmaVersion
: 6, sourceType
: "module" } },
205 { code
: "export let foo;", parserOptions
: { ecmaVersion
: 6, sourceType
: "module" } },
206 { code
: "export const FOO = 42;", parserOptions
: { ecmaVersion
: 6, sourceType
: "module" } },
207 { code
: "export default function() { }", parserOptions
: { ecmaVersion
: 6, sourceType
: "module" } },
208 { code
: "export default function* () { }", parserOptions
: { ecmaVersion
: 6, sourceType
: "module" } },
209 { code
: "export default class { }", parserOptions
: { ecmaVersion
: 6, sourceType
: "module" } },
210 { code
: "export default foo || bar;", parserOptions
: { ecmaVersion
: 6, sourceType
: "module" } },
211 { code
: "export default (foo) => foo.bar();", parserOptions
: { ecmaVersion
: 6, sourceType
: "module" } },
212 { code
: "export default foo = 42;", parserOptions
: { ecmaVersion
: 6, sourceType
: "module" } },
213 { code
: "export default foo += 42;", parserOptions
: { ecmaVersion
: 6, sourceType
: "module" } },
216 { code
: "export * from 'foo'", options
: ["never"], parserOptions
: { ecmaVersion
: 6, sourceType
: "module" } },
217 { code
: "export { foo } from 'foo'", options
: ["never"], parserOptions
: { ecmaVersion
: 6, sourceType
: "module" } },
218 { code
: "var foo = 0; export { foo }", options
: ["never"], parserOptions
: { ecmaVersion
: 6, sourceType
: "module" } },
219 { code
: "export var foo", options
: ["never"], parserOptions
: { ecmaVersion
: 6, sourceType
: "module" } },
220 { code
: "export function foo () { }", options
: ["never"], parserOptions
: { ecmaVersion
: 6, sourceType
: "module" } },
221 { code
: "export function* foo () { }", options
: ["never"], parserOptions
: { ecmaVersion
: 6, sourceType
: "module" } },
222 { code
: "export class Foo { }", options
: ["never"], parserOptions
: { ecmaVersion
: 6, sourceType
: "module" } },
223 { code
: "export let foo", options
: ["never"], parserOptions
: { ecmaVersion
: 6, sourceType
: "module" } },
224 { code
: "export const FOO = 42", options
: ["never"], parserOptions
: { ecmaVersion
: 6, sourceType
: "module" } },
225 { code
: "export default function() { }", options
: ["never"], parserOptions
: { ecmaVersion
: 6, sourceType
: "module" } },
226 { code
: "export default function* () { }", options
: ["never"], parserOptions
: { ecmaVersion
: 6, sourceType
: "module" } },
227 { code
: "export default class { }", options
: ["never"], parserOptions
: { ecmaVersion
: 6, sourceType
: "module" } },
228 { code
: "export default foo || bar", options
: ["never"], parserOptions
: { ecmaVersion
: 6, sourceType
: "module" } },
229 { code
: "export default (foo) => foo.bar()", options
: ["never"], parserOptions
: { ecmaVersion
: 6, sourceType
: "module" } },
230 { code
: "export default foo = 42", options
: ["never"], parserOptions
: { ecmaVersion
: 6, sourceType
: "module" } },
231 { code
: "export default foo += 42", options
: ["never"], parserOptions
: { ecmaVersion
: 6, sourceType
: "module" } },
232 { code
: "++\nfoo;", options
: ["always"] },
233 { code
: "var a = b;\n+ c", options
: ["never"] },
235 // https://github.com/eslint/eslint/issues/7782
236 { code
: "var a = b;\n/foo/.test(c)", options
: ["never"] },
237 { code
: "var a = b;\n`foo`", options
: ["never"], parserOptions
: { ecmaVersion
: 6 } },
239 // https://github.com/eslint/eslint/issues/9521
243 [1,2,3].forEach(doSomething)
245 options
: ["never", { beforeStatementContinuationChars
: "any" }]
250 [1,2,3].forEach(doSomething)
252 options
: ["never", { beforeStatementContinuationChars
: "any" }]
257 [1,2,3].forEach(doSomething)
259 options
: ["never", { beforeStatementContinuationChars
: "always" }],
260 parserOptions
: { ecmaVersion
: 6, sourceType
: "module" }
264 var a = 0; export {a};
267 options
: ["never", { beforeStatementContinuationChars
: "always" }],
268 parserOptions
: { ecmaVersion
: 6, sourceType
: "module" }
277 options
: ["never", { beforeStatementContinuationChars
: "always" }],
278 parserOptions
: { ecmaVersion
: 2015 }
287 options
: ["never", { beforeStatementContinuationChars
: "always" }]
293 [1,2,3].forEach(doSomething)
296 options
: ["never", { beforeStatementContinuationChars
: "always" }]
301 [1,2,3].forEach(doSomething)
303 options
: ["never", { beforeStatementContinuationChars
: "always" }]
308 [1,2,3].forEach(doSomething)
310 options
: ["never", { beforeStatementContinuationChars
: "always" }],
311 parserOptions
: { ecmaVersion
: 2015 }
316 [1,2,3].forEach(doSomething)
318 options
: ["never", { beforeStatementContinuationChars
: "never" }],
319 parserOptions
: { ecmaVersion
: 6, sourceType
: "module" }
323 var a = 0; export {a}
326 options
: ["never", { beforeStatementContinuationChars
: "never" }],
327 parserOptions
: { ecmaVersion
: 6, sourceType
: "module" }
336 options
: ["never", { beforeStatementContinuationChars
: "never" }],
337 parserOptions
: { ecmaVersion
: 2015 }
346 options
: ["never", { beforeStatementContinuationChars
: "never" }]
352 [1,2,3].forEach(doSomething)
355 options
: ["never", { beforeStatementContinuationChars
: "never" }]
360 [1,2,3].forEach(doSomething)
362 options
: ["never", { beforeStatementContinuationChars
: "never" }]
367 [1,2,3].forEach(doSomething)
369 options
: ["never", { beforeStatementContinuationChars
: "never" }],
370 parserOptions
: { ecmaVersion
: 2015 }
375 code
: "class C { foo; }",
376 parserOptions
: { ecmaVersion
: 2022 }
379 code
: "class C { foo; }",
381 parserOptions
: { ecmaVersion
: 2022 }
384 code
: "class C { foo }",
386 parserOptions
: { ecmaVersion
: 2022 }
389 code
: "class C { foo = obj\n;[bar] }",
391 parserOptions
: { ecmaVersion
: 2022 }
394 code
: "class C { foo;\n[bar]; }",
396 parserOptions
: { ecmaVersion
: 2022 }
399 code
: "class C { foo\n;[bar] }",
401 parserOptions
: { ecmaVersion
: 2022 }
404 code
: "class C { foo\n[bar] }",
406 parserOptions
: { ecmaVersion
: 2022 }
409 code
: "class C { foo\n;[bar] }",
410 options
: ["never", { beforeStatementContinuationChars
: "always" }],
411 parserOptions
: { ecmaVersion
: 2022 }
414 code
: "class C { foo\n[bar] }",
415 options
: ["never", { beforeStatementContinuationChars
: "never" }],
416 parserOptions
: { ecmaVersion
: 2022 }
419 code
: "class C { foo = () => {}\n;[bar] }",
421 parserOptions
: { ecmaVersion
: 2022 }
424 code
: "class C { foo = () => {}\n[bar] }",
426 parserOptions
: { ecmaVersion
: 2022 }
429 code
: "class C { foo = () => {}\n;[bar] }",
430 options
: ["never", { beforeStatementContinuationChars
: "always" }],
431 parserOptions
: { ecmaVersion
: 2022 }
434 code
: "class C { foo = () => {}\n[bar] }",
435 options
: ["never", { beforeStatementContinuationChars
: "never" }],
436 parserOptions
: { ecmaVersion
: 2022 }
439 code
: "class C { foo() {} }",
441 parserOptions
: { ecmaVersion
: 2022 }
444 code
: "class C { foo() {}; }", // no-extra-semi reports it
446 parserOptions
: { ecmaVersion
: 2022 }
449 code
: "class C { static {}; }", // no-extra-semi reports it
451 parserOptions
: { ecmaVersion
: 2022 }
454 code
: "class C { a=b;\n*foo() {} }",
456 parserOptions
: { ecmaVersion
: 2022 }
459 code
: "class C { get;\nfoo() {} }",
461 parserOptions
: { ecmaVersion
: 2022 }
464 code
: "class C { set;\nfoo() {} }",
466 parserOptions
: { ecmaVersion
: 2022 }
469 code
: "class C { static;\nfoo() {} }",
471 parserOptions
: { ecmaVersion
: 2022 }
474 code
: "class C { a=b;\nin }",
476 parserOptions
: { ecmaVersion
: 2022 }
479 code
: "class C { a=b;\ninstanceof }",
481 parserOptions
: { ecmaVersion
: 2022 }
496 options
: ["never", { beforeStatementContinuationChars
: "never" }],
497 parserOptions
: { ecmaVersion
: 2022 }
512 options
: ["never", { beforeStatementContinuationChars
: "always" }],
513 parserOptions
: { ecmaVersion
: 2022 }
516 code
: "class C { foo\n[bar] }",
517 options
: ["never", { beforeStatementContinuationChars
: "always" }],
518 parserOptions
: { ecmaVersion
: 2022 }
521 code
: "class C { foo = () => {}\n[bar] }",
522 options
: ["never", { beforeStatementContinuationChars
: "always" }],
523 parserOptions
: { ecmaVersion
: 2022 }
526 code
: "class C { foo\n;[bar] }",
527 options
: ["never", { beforeStatementContinuationChars
: "never" }],
528 parserOptions
: { ecmaVersion
: 2022 }
531 code
: "class C { foo = () => {}\n;[bar] }",
532 options
: ["never", { beforeStatementContinuationChars
: "never" }],
533 parserOptions
: { ecmaVersion
: 2022 }
536 code
: "class C { [foo] = bar;\nin }",
538 parserOptions
: { ecmaVersion
: 2022 }
541 code
: "class C { #foo = bar;\nin }",
543 parserOptions
: { ecmaVersion
: 2022 }
546 code
: "class C { static static = bar;\nin }",
548 parserOptions
: { ecmaVersion
: 2022 }
551 code
: "class C { [foo];\nin }",
553 parserOptions
: { ecmaVersion
: 2022 }
556 code
: "class C { [get];\nin }",
558 parserOptions
: { ecmaVersion
: 2022 }
561 code
: "class C { [get] = 5;\nin }",
563 parserOptions
: { ecmaVersion
: 2022 }
566 code
: "class C { #get;\nin }",
568 parserOptions
: { ecmaVersion
: 2022 }
571 code
: "class C { #set = 5;\nin }",
573 parserOptions
: { ecmaVersion
: 2022 }
576 code
: "class C { static static;\nin }",
578 parserOptions
: { ecmaVersion
: 2022 }
583 code
: "import * as utils from './utils'",
584 output
: "import * as utils from './utils';",
585 parserOptions
: { ecmaVersion
: 6, sourceType
: "module" },
587 messageId
: "missingSemi",
588 type
: "ImportDeclaration",
596 code
: "import { square, diag } from 'lib'",
597 output
: "import { square, diag } from 'lib';",
598 parserOptions
: { ecmaVersion
: 6, sourceType
: "module" },
600 messageId
: "missingSemi",
601 type
: "ImportDeclaration",
609 code
: "import { default as foo } from 'lib'",
610 output
: "import { default as foo } from 'lib';",
611 parserOptions
: { ecmaVersion
: 6, sourceType
: "module" },
613 messageId
: "missingSemi",
614 type
: "ImportDeclaration",
622 code
: "import 'src/mylib'",
623 output
: "import 'src/mylib';",
624 parserOptions
: { ecmaVersion
: 6, sourceType
: "module" },
626 messageId
: "missingSemi",
627 type
: "ImportDeclaration",
635 code
: "import theDefault, { named1, named2 } from 'src/mylib'",
636 output
: "import theDefault, { named1, named2 } from 'src/mylib';",
637 parserOptions
: { ecmaVersion
: 6, sourceType
: "module" },
639 messageId
: "missingSemi",
640 type
: "ImportDeclaration",
648 code
: "function foo() { return [] }",
649 output
: "function foo() { return []; }",
651 messageId
: "missingSemi",
652 type
: "ReturnStatement",
660 code
: "while(true) { break }",
661 output
: "while(true) { break; }",
663 messageId
: "missingSemi",
664 type
: "BreakStatement",
672 code
: "while(true) { continue }",
673 output
: "while(true) { continue; }",
675 messageId
: "missingSemi",
676 type
: "ContinueStatement",
685 output
: "let x = 5;",
686 parserOptions
: { ecmaVersion
: 6 },
688 messageId
: "missingSemi",
689 type
: "VariableDeclaration",
698 output
: "var x = 5;",
700 messageId
: "missingSemi",
701 type
: "VariableDeclaration",
709 code
: "var x = 5, y",
710 output
: "var x = 5, y;",
712 messageId
: "missingSemi",
713 type
: "VariableDeclaration",
724 messageId
: "missingSemi",
725 type
: "DebuggerStatement",
736 messageId
: "missingSemi",
737 type
: "ExpressionStatement",
748 messageId
: "missingSemi",
749 type
: "ExpressionStatement",
758 output
: "foo();\r\n",
760 messageId
: "missingSemi",
761 type
: "ExpressionStatement",
769 code
: "foo()\nbar();",
770 output
: "foo();\nbar();",
772 messageId
: "missingSemi",
773 type
: "ExpressionStatement",
781 code
: "foo()\r\nbar();",
782 output
: "foo();\r\nbar();",
784 messageId
: "missingSemi",
785 type
: "ExpressionStatement",
793 code
: "for (var a in b) var i ",
794 output
: "for (var a in b) var i; ",
796 messageId
: "missingSemi",
797 type
: "VariableDeclaration",
805 code
: "for (;;){var i}",
806 output
: "for (;;){var i;}",
808 messageId
: "missingSemi",
809 type
: "VariableDeclaration",
817 code
: "for (;;) var i ",
818 output
: "for (;;) var i; ",
820 messageId
: "missingSemi",
821 type
: "VariableDeclaration",
829 code
: "for (var j;;) {var i}",
830 output
: "for (var j;;) {var i;}",
832 messageId
: "missingSemi",
833 type
: "VariableDeclaration",
841 code
: "var foo = {\n bar: baz\n}",
842 output
: "var foo = {\n bar: baz\n};",
844 messageId
: "missingSemi",
845 type
: "VariableDeclaration",
853 code
: "var foo\nvar bar;",
854 output
: "var foo;\nvar bar;",
856 messageId
: "missingSemi",
857 type
: "VariableDeclaration",
865 code
: "throw new Error('foo')",
866 output
: "throw new Error('foo');",
868 messageId
: "missingSemi",
869 type
: "ThrowStatement",
877 code
: "do{}while(true)",
878 output
: "do{}while(true);",
880 messageId
: "missingSemi",
881 type
: "DoWhileStatement",
889 code
: "if (foo) {bar()}",
890 output
: "if (foo) {bar();}",
892 messageId
: "missingSemi",
900 code
: "if (foo) {bar()} ",
901 output
: "if (foo) {bar();} ",
903 messageId
: "missingSemi",
911 code
: "if (foo) {bar()\n}",
912 output
: "if (foo) {bar();\n}",
914 messageId
: "missingSemi",
923 code
: "throw new Error('foo');",
924 output
: "throw new Error('foo')",
927 messageId
: "extraSemi",
928 type
: "ThrowStatement",
936 code
: "function foo() { return []; }",
937 output
: "function foo() { return [] }",
940 messageId
: "extraSemi",
941 type
: "ReturnStatement",
949 code
: "while(true) { break; }",
950 output
: "while(true) { break }",
953 messageId
: "extraSemi",
954 type
: "BreakStatement",
962 code
: "while(true) { continue; }",
963 output
: "while(true) { continue }",
966 messageId
: "extraSemi",
967 type
: "ContinueStatement",
978 parserOptions
: { ecmaVersion
: 6 },
980 messageId
: "extraSemi",
981 type
: "VariableDeclaration",
993 messageId
: "extraSemi",
994 type
: "VariableDeclaration",
1002 code
: "var x = 5, y;",
1003 output
: "var x = 5, y",
1006 messageId
: "extraSemi",
1007 type
: "VariableDeclaration",
1019 messageId
: "extraSemi",
1020 type
: "DebuggerStatement",
1032 messageId
: "extraSemi",
1033 type
: "ExpressionStatement",
1041 code
: "for (var a in b) var i; ",
1042 output
: "for (var a in b) var i ",
1045 messageId
: "extraSemi",
1046 type
: "VariableDeclaration",
1054 code
: "for (;;){var i;}",
1055 output
: "for (;;){var i}",
1058 messageId
: "extraSemi",
1059 type
: "VariableDeclaration",
1067 code
: "for (;;) var i; ",
1068 output
: "for (;;) var i ",
1071 messageId
: "extraSemi",
1072 type
: "VariableDeclaration",
1080 code
: "for (var j;;) {var i;}",
1081 output
: "for (var j;;) {var i}",
1084 messageId
: "extraSemi",
1085 type
: "VariableDeclaration",
1093 code
: "var foo = {\n bar: baz\n};",
1094 output
: "var foo = {\n bar: baz\n}",
1097 messageId
: "extraSemi",
1098 type
: "VariableDeclaration",
1106 code
: "import theDefault, { named1, named2 } from 'src/mylib';",
1107 output
: "import theDefault, { named1, named2 } from 'src/mylib'",
1109 parserOptions
: { ecmaVersion
: 6, sourceType
: "module" },
1111 messageId
: "extraSemi",
1112 type
: "ImportDeclaration",
1120 code
: "do{}while(true);",
1121 output
: "do{}while(true)",
1124 messageId
: "extraSemi",
1125 type
: "DoWhileStatement",
1133 code
: "class C { static { foo() } }",
1134 output
: "class C { static { foo(); } }",
1135 parserOptions
: { ecmaVersion
: 2022 },
1137 messageId
: "missingSemi",
1138 type
: "ExpressionStatement",
1146 code
: "class C { static { foo() } }",
1147 output
: "class C { static { foo(); } }",
1148 options
: ["always"],
1149 parserOptions
: { ecmaVersion
: 2022 },
1151 messageId
: "missingSemi",
1152 type
: "ExpressionStatement",
1160 code
: "class C { static { foo(); bar() } }",
1161 output
: "class C { static { foo(); bar(); } }",
1162 parserOptions
: { ecmaVersion
: 2022 },
1164 messageId
: "missingSemi",
1165 type
: "ExpressionStatement",
1173 code
: "class C { static { foo()\nbar(); } }",
1174 output
: "class C { static { foo();\nbar(); } }",
1175 parserOptions
: { ecmaVersion
: 2022 },
1177 messageId
: "missingSemi",
1178 type
: "ExpressionStatement",
1186 code
: "class C { static { foo(); bar()\nbaz(); } }",
1187 output
: "class C { static { foo(); bar();\nbaz(); } }",
1188 parserOptions
: { ecmaVersion
: 2022 },
1190 messageId
: "missingSemi",
1191 type
: "ExpressionStatement",
1199 code
: "class C { static { foo(); } }",
1200 output
: "class C { static { foo() } }",
1202 parserOptions
: { ecmaVersion
: 2022 },
1204 messageId
: "extraSemi",
1205 type
: "ExpressionStatement",
1213 code
: "class C { static { foo();\nbar() } }",
1214 output
: "class C { static { foo()\nbar() } }",
1216 parserOptions
: { ecmaVersion
: 2022 },
1218 messageId
: "extraSemi",
1219 type
: "ExpressionStatement",
1227 code
: "class C { static { foo()\nbar(); } }",
1228 output
: "class C { static { foo()\nbar() } }",
1230 parserOptions
: { ecmaVersion
: 2022 },
1232 messageId
: "extraSemi",
1233 type
: "ExpressionStatement",
1241 code
: "class C { static { foo()\nbar();\nbaz() } }",
1242 output
: "class C { static { foo()\nbar()\nbaz() } }",
1244 parserOptions
: { ecmaVersion
: 2022 },
1246 messageId
: "extraSemi",
1247 type
: "ExpressionStatement",
1255 code
: "class C { static { do ; while (foo)\n (a)} }",
1256 output
: "class C { static { do ; while (foo);\n (a)} }",
1257 options
: ["never", { beforeStatementContinuationChars
: "always" }],
1258 parserOptions
: { ecmaVersion
: 2022 },
1260 messageId
: "missingSemi",
1261 type
: "DoWhileStatement",
1269 code
: "class C { static { do ; while (foo)\n ;(a)} }",
1270 output
: "class C { static { do ; while (foo)\n (a)} }",
1271 options
: ["never", { beforeStatementContinuationChars
: "never" }],
1272 parserOptions
: { ecmaVersion
: 2022 },
1274 messageId
: "extraSemi",
1275 type
: "DoWhileStatement",
1283 // omitLastInOneLineBlock: true
1285 code
: "if (foo) { bar()\n }",
1286 output
: "if (foo) { bar();\n }",
1287 options
: ["always", { omitLastInOneLineBlock
: true }],
1289 messageId
: "missingSemi",
1297 code
: "if (foo) {\n bar() }",
1298 output
: "if (foo) {\n bar(); }",
1299 options
: ["always", { omitLastInOneLineBlock
: true }],
1301 messageId
: "missingSemi",
1309 code
: "if (foo) {\n bar(); baz() }",
1310 output
: "if (foo) {\n bar(); baz(); }",
1311 options
: ["always", { omitLastInOneLineBlock
: true }],
1313 messageId
: "missingSemi",
1321 code
: "if (foo) { bar(); }",
1322 output
: "if (foo) { bar() }",
1323 options
: ["always", { omitLastInOneLineBlock
: true }],
1325 messageId
: "extraSemi",
1333 code
: "function foo() { bar(); baz(); }",
1334 output
: "function foo() { bar(); baz() }",
1335 options
: ["always", { omitLastInOneLineBlock
: true }],
1337 messageId
: "extraSemi",
1345 code
: "function foo()\n{ bar(); baz(); }",
1346 output
: "function foo()\n{ bar(); baz() }",
1347 options
: ["always", { omitLastInOneLineBlock
: true }],
1349 messageId
: "extraSemi",
1357 code
: "function foo() {\n bar(); baz() }",
1358 output
: "function foo() {\n bar(); baz(); }",
1359 options
: ["always", { omitLastInOneLineBlock
: true }],
1361 messageId
: "missingSemi",
1369 code
: "function foo() { bar(); baz() \n}",
1370 output
: "function foo() { bar(); baz(); \n}",
1371 options
: ["always", { omitLastInOneLineBlock
: true }],
1373 messageId
: "missingSemi",
1381 code
: "class C {\nfoo() { bar(); baz(); }\n}",
1382 output
: "class C {\nfoo() { bar(); baz() }\n}",
1383 options
: ["always", { omitLastInOneLineBlock
: true }],
1384 parserOptions
: { ecmaVersion
: 6 },
1386 messageId
: "extraSemi",
1394 code
: "class C {\nfoo() \n{ bar(); baz(); }\n}",
1395 output
: "class C {\nfoo() \n{ bar(); baz() }\n}",
1396 options
: ["always", { omitLastInOneLineBlock
: true }],
1397 parserOptions
: { ecmaVersion
: 6 },
1399 messageId
: "extraSemi",
1407 code
: "class C {\nfoo() {\n bar(); baz() }\n}",
1408 output
: "class C {\nfoo() {\n bar(); baz(); }\n}",
1409 options
: ["always", { omitLastInOneLineBlock
: true }],
1410 parserOptions
: { ecmaVersion
: 6 },
1412 messageId
: "missingSemi",
1420 code
: "class C {\nfoo() { bar(); baz() \n}\n}",
1421 output
: "class C {\nfoo() { bar(); baz(); \n}\n}",
1422 options
: ["always", { omitLastInOneLineBlock
: true }],
1423 parserOptions
: { ecmaVersion
: 6 },
1425 messageId
: "missingSemi",
1433 code
: "class C {\nstatic { bar(); baz(); }\n}",
1434 output
: "class C {\nstatic { bar(); baz() }\n}",
1435 options
: ["always", { omitLastInOneLineBlock
: true }],
1436 parserOptions
: { ecmaVersion
: 2022 },
1438 messageId
: "extraSemi",
1446 code
: "class C {\nstatic \n{ bar(); baz(); }\n}",
1447 output
: "class C {\nstatic \n{ bar(); baz() }\n}",
1448 options
: ["always", { omitLastInOneLineBlock
: true }],
1449 parserOptions
: { ecmaVersion
: 2022 },
1451 messageId
: "extraSemi",
1459 code
: "class C {\nstatic {\n bar(); baz() }\n}",
1460 output
: "class C {\nstatic {\n bar(); baz(); }\n}",
1461 options
: ["always", { omitLastInOneLineBlock
: true }],
1462 parserOptions
: { ecmaVersion
: 2022 },
1464 messageId
: "missingSemi",
1472 code
: "class C {\nfoo() { bar(); baz() \n}\n}",
1473 output
: "class C {\nfoo() { bar(); baz(); \n}\n}",
1474 options
: ["always", { omitLastInOneLineBlock
: true }],
1475 parserOptions
: { ecmaVersion
: 2022 },
1477 messageId
: "missingSemi",
1486 // exports, "always"
1488 code
: "export * from 'foo'",
1489 output
: "export * from 'foo';",
1490 parserOptions
: { ecmaVersion
: 6, sourceType
: "module" },
1492 messageId
: "missingSemi",
1493 type
: "ExportAllDeclaration",
1501 code
: "export { foo } from 'foo'",
1502 output
: "export { foo } from 'foo';",
1503 parserOptions
: { ecmaVersion
: 6, sourceType
: "module" },
1505 messageId
: "missingSemi",
1506 type
: "ExportNamedDeclaration",
1514 code
: "var foo = 0;export { foo }",
1515 output
: "var foo = 0;export { foo };",
1516 parserOptions
: { ecmaVersion
: 6, sourceType
: "module" },
1518 messageId
: "missingSemi",
1519 type
: "ExportNamedDeclaration",
1527 code
: "export var foo",
1528 output
: "export var foo;",
1529 parserOptions
: { ecmaVersion
: 6, sourceType
: "module" },
1531 messageId
: "missingSemi",
1532 type
: "VariableDeclaration",
1540 code
: "export let foo",
1541 output
: "export let foo;",
1542 parserOptions
: { ecmaVersion
: 6, sourceType
: "module" },
1544 messageId
: "missingSemi",
1545 type
: "VariableDeclaration",
1553 code
: "export const FOO = 42",
1554 output
: "export const FOO = 42;",
1555 parserOptions
: { ecmaVersion
: 6, sourceType
: "module" },
1557 messageId
: "missingSemi",
1558 type
: "VariableDeclaration",
1566 code
: "export default foo || bar",
1567 output
: "export default foo || bar;",
1568 parserOptions
: { ecmaVersion
: 6, sourceType
: "module" },
1570 messageId
: "missingSemi",
1571 type
: "ExportDefaultDeclaration",
1579 code
: "export default (foo) => foo.bar()",
1580 output
: "export default (foo) => foo.bar();",
1581 parserOptions
: { ecmaVersion
: 6, sourceType
: "module" },
1583 messageId
: "missingSemi",
1584 type
: "ExportDefaultDeclaration",
1592 code
: "export default foo = 42",
1593 output
: "export default foo = 42;",
1594 parserOptions
: { ecmaVersion
: 6, sourceType
: "module" },
1596 messageId
: "missingSemi",
1597 type
: "ExportDefaultDeclaration",
1605 code
: "export default foo += 42",
1606 output
: "export default foo += 42;",
1607 parserOptions
: { ecmaVersion
: 6, sourceType
: "module" },
1609 messageId
: "missingSemi",
1610 type
: "ExportDefaultDeclaration",
1620 code
: "export * from 'foo';",
1621 output
: "export * from 'foo'",
1623 parserOptions
: { ecmaVersion
: 6, sourceType
: "module" },
1625 messageId
: "extraSemi",
1626 type
: "ExportAllDeclaration",
1634 code
: "export { foo } from 'foo';",
1635 output
: "export { foo } from 'foo'",
1637 parserOptions
: { ecmaVersion
: 6, sourceType
: "module" },
1639 messageId
: "extraSemi",
1640 type
: "ExportNamedDeclaration",
1648 code
: "var foo = 0;export { foo };",
1649 output
: "var foo = 0;export { foo }",
1651 parserOptions
: { ecmaVersion
: 6, sourceType
: "module" },
1653 messageId
: "extraSemi",
1654 type
: "ExportNamedDeclaration",
1662 code
: "export var foo;",
1663 output
: "export var foo",
1665 parserOptions
: { ecmaVersion
: 6, sourceType
: "module" },
1667 messageId
: "extraSemi",
1668 type
: "VariableDeclaration",
1676 code
: "export let foo;",
1677 output
: "export let foo",
1679 parserOptions
: { ecmaVersion
: 6, sourceType
: "module" },
1681 messageId
: "extraSemi",
1682 type
: "VariableDeclaration",
1690 code
: "export const FOO = 42;",
1691 output
: "export const FOO = 42",
1693 parserOptions
: { ecmaVersion
: 6, sourceType
: "module" },
1695 messageId
: "extraSemi",
1696 type
: "VariableDeclaration",
1704 code
: "export default foo || bar;",
1705 output
: "export default foo || bar",
1707 parserOptions
: { ecmaVersion
: 6, sourceType
: "module" },
1709 messageId
: "extraSemi",
1710 type
: "ExportDefaultDeclaration",
1718 code
: "export default (foo) => foo.bar();",
1719 output
: "export default (foo) => foo.bar()",
1721 parserOptions
: { ecmaVersion
: 6, sourceType
: "module" },
1723 messageId
: "extraSemi",
1724 type
: "ExportDefaultDeclaration",
1732 code
: "export default foo = 42;",
1733 output
: "export default foo = 42",
1735 parserOptions
: { ecmaVersion
: 6, sourceType
: "module" },
1737 messageId
: "extraSemi",
1738 type
: "ExportDefaultDeclaration",
1746 code
: "export default foo += 42;",
1747 output
: "export default foo += 42",
1749 parserOptions
: { ecmaVersion
: 6, sourceType
: "module" },
1751 messageId
: "extraSemi",
1752 type
: "ExportDefaultDeclaration",
1764 messageId
: "extraSemi",
1772 // https://github.com/eslint/eslint/issues/7928
1775 "/*eslint no-extra-semi: error */",
1777 ";[0,1,2].forEach(bar)"
1780 "/*eslint no-extra-semi: error */",
1782 ";[0,1,2].forEach(bar)"
1787 messageId
: "extraSemi",
1794 message
: "Unnecessary semicolon.",
1803 // https://github.com/eslint/eslint/issues/9521
1807 [1,2,3].forEach(doSomething)
1811 [1,2,3].forEach(doSomething)
1813 options
: ["never", { beforeStatementContinuationChars
: "always" }],
1814 parserOptions
: { ecmaVersion
: 6, sourceType
: "module" },
1816 messageId
: "missingSemi",
1825 var a = 0; export {a}
1829 var a = 0; export {a};
1832 options
: ["never", { beforeStatementContinuationChars
: "always" }],
1833 parserOptions
: { ecmaVersion
: 6, sourceType
: "module" },
1835 messageId
: "missingSemi",
1855 options
: ["never", { beforeStatementContinuationChars
: "always" }],
1856 parserOptions
: { ecmaVersion
: 2015 },
1858 messageId
: "missingSemi",
1878 options
: ["never", { beforeStatementContinuationChars
: "always" }],
1880 messageId
: "missingSemi",
1891 [1,2,3].forEach(doSomething)
1897 [1,2,3].forEach(doSomething)
1900 options
: ["never", { beforeStatementContinuationChars
: "always" }],
1902 messageId
: "missingSemi",
1912 [1,2,3].forEach(doSomething)
1916 [1,2,3].forEach(doSomething)
1918 options
: ["never", { beforeStatementContinuationChars
: "always" }],
1920 messageId
: "missingSemi",
1930 [1,2,3].forEach(doSomething)
1934 [1,2,3].forEach(doSomething)
1936 options
: ["never", { beforeStatementContinuationChars
: "always" }],
1937 parserOptions
: { ecmaVersion
: 2015 },
1939 messageId
: "missingSemi",
1949 [1,2,3].forEach(doSomething)
1953 [1,2,3].forEach(doSomething)
1955 options
: ["never", { beforeStatementContinuationChars
: "never" }],
1956 parserOptions
: { ecmaVersion
: 6, sourceType
: "module" },
1958 messageId
: "extraSemi",
1967 var a = 0; export {a};
1971 var a = 0; export {a}
1974 options
: ["never", { beforeStatementContinuationChars
: "never" }],
1975 parserOptions
: { ecmaVersion
: 6, sourceType
: "module" },
1977 messageId
: "extraSemi",
1997 options
: ["never", { beforeStatementContinuationChars
: "never" }],
1998 parserOptions
: { ecmaVersion
: 2015 },
2000 messageId
: "extraSemi",
2020 options
: ["never", { beforeStatementContinuationChars
: "never" }],
2022 messageId
: "extraSemi",
2033 [1,2,3].forEach(doSomething)
2039 [1,2,3].forEach(doSomething)
2042 options
: ["never", { beforeStatementContinuationChars
: "never" }],
2044 messageId
: "extraSemi",
2054 [1,2,3].forEach(doSomething)
2058 [1,2,3].forEach(doSomething)
2060 options
: ["never", { beforeStatementContinuationChars
: "never" }],
2062 messageId
: "extraSemi",
2072 [1,2,3].forEach(doSomething)
2076 [1,2,3].forEach(doSomething)
2078 options
: ["never", { beforeStatementContinuationChars
: "never" }],
2079 parserOptions
: { ecmaVersion
: 2015 },
2081 messageId
: "extraSemi",
2091 ;[1,2,3].forEach(doSomething)
2095 [1,2,3].forEach(doSomething)
2097 options
: ["never", { beforeStatementContinuationChars
: "never" }],
2098 parserOptions
: { ecmaVersion
: 6, sourceType
: "module" },
2100 messageId
: "extraSemi",
2109 var a = 0; export {a}
2110 ;[1,2,3].forEach(doSomething)
2113 var a = 0; export {a}
2114 [1,2,3].forEach(doSomething)
2116 options
: ["never", { beforeStatementContinuationChars
: "never" }],
2117 parserOptions
: { ecmaVersion
: 6, sourceType
: "module" },
2119 messageId
: "extraSemi",
2130 ;[1,2,3].forEach(doSomething)
2136 [1,2,3].forEach(doSomething)
2139 options
: ["never", { beforeStatementContinuationChars
: "never" }],
2141 messageId
: "extraSemi",
2152 ;[1,2,3].forEach(doSomething)
2158 [1,2,3].forEach(doSomething)
2161 options
: ["never", { beforeStatementContinuationChars
: "never" }],
2163 messageId
: "extraSemi",
2174 ;[1,2,3].forEach(doSomething)
2180 [1,2,3].forEach(doSomething)
2183 options
: ["never", { beforeStatementContinuationChars
: "never" }],
2185 messageId
: "extraSemi",
2195 ;[1,2,3].forEach(doSomething)
2199 [1,2,3].forEach(doSomething)
2201 options
: ["never", { beforeStatementContinuationChars
: "never" }],
2203 messageId
: "extraSemi",
2213 ;[1,2,3].forEach(doSomething)
2217 [1,2,3].forEach(doSomething)
2219 options
: ["never", { beforeStatementContinuationChars
: "never" }],
2220 parserOptions
: { ecmaVersion
: 2015 },
2222 messageId
: "extraSemi",
2232 code
: "class C { foo }",
2233 output
: "class C { foo; }",
2234 parserOptions
: { ecmaVersion
: 2022 },
2236 messageId
: "missingSemi",
2244 code
: "class C { foo }",
2245 output
: "class C { foo; }",
2246 options
: ["always"],
2247 parserOptions
: { ecmaVersion
: 2022 },
2249 messageId
: "missingSemi",
2257 code
: "class C { foo; }",
2258 output
: "class C { foo }",
2260 parserOptions
: { ecmaVersion
: 2022 },
2262 messageId
: "extraSemi",
2270 code
: "class C { foo\n[bar]; }",
2271 output
: "class C { foo;\n[bar]; }",
2272 options
: ["always"],
2273 parserOptions
: { ecmaVersion
: 2022 },
2275 messageId
: "missingSemi",
2285 code
: "class C { [get];\nfoo\n}",
2286 output
: "class C { [get]\nfoo\n}",
2288 parserOptions
: { ecmaVersion
: 2022 },
2290 messageId
: "extraSemi",
2298 code
: "class C { [set];\nfoo\n}",
2299 output
: "class C { [set]\nfoo\n}",
2301 parserOptions
: { ecmaVersion
: 2022 },
2303 messageId
: "extraSemi",
2311 code
: "class C { #get;\nfoo\n}",
2312 output
: "class C { #get\nfoo\n}",
2314 parserOptions
: { ecmaVersion
: 2022 },
2316 messageId
: "extraSemi",
2324 code
: "class C { #set;\nfoo\n}",
2325 output
: "class C { #set\nfoo\n}",
2327 parserOptions
: { ecmaVersion
: 2022 },
2329 messageId
: "extraSemi",
2337 code
: "class C { #static;\nfoo\n}",
2338 output
: "class C { #static\nfoo\n}",
2340 parserOptions
: { ecmaVersion
: 2022 },
2342 messageId
: "extraSemi",
2350 code
: "class C { get=1;\nfoo\n}",
2351 output
: "class C { get=1\nfoo\n}",
2353 parserOptions
: { ecmaVersion
: 2022 },
2355 messageId
: "extraSemi",
2363 code
: "class C { static static;\nfoo\n}",
2364 output
: "class C { static static\nfoo\n}",
2366 parserOptions
: { ecmaVersion
: 2022 },
2368 messageId
: "extraSemi",
2376 code
: "class C { static;\n}",
2377 output
: "class C { static\n}",
2379 parserOptions
: { ecmaVersion
: 2022 },
2381 messageId
: "extraSemi",
2389 // omitLastInOneLineClassBody
2392 export class SomeClass{
2394 console.log(this.type);
2398 export class Variant1 extends SomeClass{type=1}
2401 export class SomeClass{
2403 console.log(this.type);
2407 export class Variant1 extends SomeClass{type=1;}
2409 options
: ["always", { omitLastInOneLineClassBody
: false }],
2410 parserOptions
: { ecmaVersion
: 2022, sourceType
: "module" },
2413 messageId
: "missingSemi",
2423 export class SomeClass{
2425 console.log(this.type);
2429 export class Variant1 extends SomeClass{type=1}
2432 export class SomeClass{
2434 console.log(this.type);
2438 export class Variant1 extends SomeClass{type=1;}
2440 options
: ["always", { omitLastInOneLineClassBody
: false, omitLastInOneLineBlock
: true }],
2441 parserOptions
: { ecmaVersion
: 2022, sourceType
: "module" },
2444 messageId
: "missingSemi",
2454 export class SomeClass{
2456 console.log(this.type);
2460 export class Variant1 extends SomeClass{type=1;}
2463 export class SomeClass{
2465 console.log(this.type);
2469 export class Variant1 extends SomeClass{type=1}
2471 options
: ["always", { omitLastInOneLineClassBody
: true, omitLastInOneLineBlock
: false }],
2472 parserOptions
: { ecmaVersion
: 2022, sourceType
: "module" },
2475 messageId
: "extraSemi",
2485 export class SomeClass{
2487 console.log(this.type);
2488 console.log(this.anotherType);
2492 export class Variant1 extends SomeClass{type=1; anotherType=2}
2495 export class SomeClass{
2497 console.log(this.type);
2498 console.log(this.anotherType);
2502 export class Variant1 extends SomeClass{type=1; anotherType=2;}
2504 options
: ["always", { omitLastInOneLineClassBody
: false, omitLastInOneLineBlock
: true }],
2505 parserOptions
: { ecmaVersion
: 2022, sourceType
: "module" },
2508 messageId
: "missingSemi",