Skip to content

Commit 1729f9e

Browse files
authored
feat: account for sourceType: "commonjs" in the strict rule (#16308)
Fixes #16304
1 parent b0d72c9 commit 1729f9e

2 files changed

Lines changed: 46 additions & 2 deletions

File tree

lib/rules/strict.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -105,7 +105,7 @@ module.exports = {
105105
if (ecmaFeatures.impliedStrict) {
106106
mode = "implied";
107107
} else if (mode === "safe") {
108-
mode = ecmaFeatures.globalReturn ? "global" : "function";
108+
mode = ecmaFeatures.globalReturn || context.languageOptions.sourceType === "commonjs" ? "global" : "function";
109109
}
110110

111111
/**

tests/lib/rules/strict.js

Lines changed: 45 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,8 @@
1010
//------------------------------------------------------------------------------
1111

1212
const rule = require("../../../lib/rules/strict"),
13-
{ RuleTester } = require("../../../lib/rule-tester");
13+
{ RuleTester } = require("../../../lib/rule-tester"),
14+
FlatRuleTester = require("../../../lib/rule-tester/flat-rule-tester");
1415

1516
//------------------------------------------------------------------------------
1617
// Tests
@@ -659,3 +660,46 @@ ruleTester.run("strict", rule, {
659660
}
660661
]
661662
});
663+
664+
const flatRuleTester = new FlatRuleTester();
665+
666+
// TODO: merge these tests into `ruleTester.run` once we switch to FlatRuleTester (when FlatRuleTester becomes RuleTester).
667+
flatRuleTester.run("strict", rule, {
668+
valid: [
669+
{
670+
code: "'use strict'; module.exports = function identity (value) { return value; }",
671+
languageOptions: {
672+
sourceType: "commonjs"
673+
}
674+
},
675+
{
676+
code: "'use strict'; module.exports = function identity (value) { return value; }",
677+
options: ["safe"],
678+
languageOptions: {
679+
sourceType: "commonjs"
680+
}
681+
}
682+
],
683+
684+
invalid: [
685+
{
686+
code: "module.exports = function identity (value) { return value; }",
687+
options: ["safe"],
688+
languageOptions: {
689+
sourceType: "commonjs"
690+
},
691+
errors: [
692+
{ messageId: "global", line: 1 }
693+
]
694+
},
695+
{
696+
code: "module.exports = function identity (value) { return value; }",
697+
languageOptions: {
698+
sourceType: "commonjs"
699+
},
700+
errors: [
701+
{ messageId: "global", line: 1 }
702+
]
703+
}
704+
]
705+
});

0 commit comments

Comments
 (0)