noRedundantUseStrict
Diagnostic Category: lint/suspicious/noRedundantUseStrict
Since: v1.0.0
Prevents from having redundant "use strict"
.
The directive "use strict"
isn’t needed in .mjs
files, or in .js
files inside projects where the package.json
defines library as module:
Instead, .cjs
files are considered “scripts” and the directive "use strict"
is accepted and advised.
Note that the leading trivia, e.g., comments or newlines preceding
the redundant "use strict"
will also be removed. So that comment
directives won’t be transferred to a wrong place.
Examples
Section titled ExamplesInvalid
Section titled Invalidcode-block.cjs:3:3 lint/suspicious/noRedundantUseStrict FIXABLE ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
✖ Redundant use strict directive.
1 │ “use strict”;
2 │ function foo() {
> 3 │ “use strict”;
│ ^^^^^^^^^^^^^
4 │ }
5 │
ℹ This outer use strict directive already enables strict mode.
> 1 │ “use strict”;
│ ^^^^^^^^^^^^^
2 │ function foo() {
3 │ “use strict”;
ℹ Safe fix: Remove the redundant use strict directive.
1 1 │ “use strict”;
2 2 │ function foo() {
3 │ - ·→ “use·strict”;
4 3 │ }
5 4 │
code-block.cjs:2:1 lint/suspicious/noRedundantUseStrict FIXABLE ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
✖ Redundant use strict directive.
1 │ “use strict”;
> 2 │ “use strict”;
│ ^^^^^^^^^^^^^
3 │
4 │ function foo() {
ℹ This outer use strict directive already enables strict mode.
> 1 │ “use strict”;
│ ^^^^^^^^^^^^^
2 │ “use strict”;
3 │
ℹ Safe fix: Remove the redundant use strict directive.
1 1 │ “use strict”;
2 │ - “use·strict”;
3 2 │
4 3 │ function foo() {
code-block.cjs:3:1 lint/suspicious/noRedundantUseStrict FIXABLE ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
✖ Redundant use strict directive.
1 │ function foo() {
2 │ “use strict”;
> 3 │ “use strict”;
│ ^^^^^^^^^^^^^
4 │ }
5 │
ℹ This outer use strict directive already enables strict mode.
1 │ function foo() {
> 2 │ “use strict”;
│ ^^^^^^^^^^^^^
3 │ “use strict”;
4 │ }
ℹ Safe fix: Remove the redundant use strict directive.
1 1 │ function foo() {
2 2 │ “use strict”;
3 │ - “use·strict”;
4 3 │ }
5 4 │
code-block.cjs:3:3 lint/suspicious/noRedundantUseStrict FIXABLE ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
✖ Redundant use strict directive.
1 │ class C1 {
2 │ test() {
> 3 │ “use strict”;
│ ^^^^^^^^^^^^^
4 │ }
5 │ }
ℹ All parts of a class’s body are already in strict mode.
> 1 │ class C1 {
│ ^^^^^^^^^^
> 2 │ test() {
> 3 │ “use strict”;
> 4 │ }
> 5 │ }
│ ^
6 │
ℹ Safe fix: Remove the redundant use strict directive.
1 1 │ class C1 {
2 2 │ test() {
3 │ - → → “use·strict”;
4 3 │ }
5 4 │ }
code-block.cjs:3:3 lint/suspicious/noRedundantUseStrict FIXABLE ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
✖ Redundant use strict directive.
1 │ const C2 = class {
2 │ test() {
> 3 │ “use strict”;
│ ^^^^^^^^^^^^^
4 │ }
5 │ };
ℹ All parts of a class’s body are already in strict mode.
> 1 │ const C2 = class {
│ ^^^^^^^
> 2 │ test() {
> 3 │ “use strict”;
> 4 │ }
> 5 │ };
│ ^
6 │
ℹ Safe fix: Remove the redundant use strict directive.
1 1 │ const C2 = class {
2 2 │ test() {
3 │ - → → “use·strict”;
4 3 │ }
5 4 │ };