Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Update: add es2021 environment (refs #13602) #13603

Merged
merged 2 commits into from Aug 29, 2020
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
1 change: 1 addition & 0 deletions docs/user-guide/configuring.md
Expand Up @@ -138,6 +138,7 @@ An environment defines global variables that are predefined. The available envir
* `es6` - enable all ECMAScript 6 features except for modules (this automatically sets the `ecmaVersion` parser option to 6).
* `es2017` - adds all ECMAScript 2017 globals and automatically sets the `ecmaVersion` parser option to 8.
* `es2020` - adds all ECMAScript 2020 globals and automatically sets the `ecmaVersion` parser option to 11.
* `es2021` - adds all ECMAScript 2021 globals and automatically sets the `ecmaVersion` parser option to 12.
* `worker` - web workers global variables.
* `amd` - defines `require()` and `define()` as global variables as per the [amd](https://github.com/amdjs/amdjs-api/wiki/AMD) spec.
* `mocha` - adds all of the Mocha testing global variables.
Expand Down
2 changes: 1 addition & 1 deletion lib/init/config-initializer.js
Expand Up @@ -265,7 +265,7 @@ function processAnswers(answers) {
};

config.parserOptions.ecmaVersion = espree.latestEcmaVersion;
config.env.es2020 = true;
config.env.es2021 = true;

// set the module type
if (answers.moduleType === "esm") {
Expand Down
4 changes: 2 additions & 2 deletions tests/bin/eslint.js
Expand Up @@ -179,8 +179,8 @@ describe("bin/eslint.js", () => {

describe("running on files", () => {
it("has exit code 0 if no linting errors occur", () => assertExitCode(runESLint(["bin/eslint.js"]), 0));
it("has exit code 0 if a linting warning is reported", () => assertExitCode(runESLint(["bin/eslint.js", "--env", "es2020", "--no-eslintrc", "--rule", "semi: [1, never]"]), 0));
it("has exit code 1 if a linting error is reported", () => assertExitCode(runESLint(["bin/eslint.js", "--env", "es2020", "--no-eslintrc", "--rule", "semi: [2, never]"]), 1));
it("has exit code 0 if a linting warning is reported", () => assertExitCode(runESLint(["bin/eslint.js", "--env", "es2021", "--no-eslintrc", "--rule", "semi: [1, never]"]), 0));
it("has exit code 1 if a linting error is reported", () => assertExitCode(runESLint(["bin/eslint.js", "--env", "es2021", "--no-eslintrc", "--rule", "semi: [2, never]"]), 1));
it("has exit code 1 if a syntax error is thrown", () => assertExitCode(runESLint(["README.md"]), 1));
});

Expand Down
2 changes: 1 addition & 1 deletion tests/lib/cli-engine/cli-engine.js
Expand Up @@ -821,7 +821,7 @@ describe("CLIEngine", () => {
engine = new CLIEngine({
parser: "espree",
parserOptions: {
ecmaVersion: 2020
ecmaVersion: 2021
},
useEslintrc: false
});
Expand Down
2 changes: 1 addition & 1 deletion tests/lib/eslint/eslint.js
Expand Up @@ -899,7 +899,7 @@ describe("ESLint", () => {
overrideConfig: {
parser: "espree",
parserOptions: {
ecmaVersion: 2020
ecmaVersion: 2021
}
},
useEslintrc: false
Expand Down
2 changes: 1 addition & 1 deletion tests/lib/init/config-initializer.js
Expand Up @@ -136,7 +136,7 @@ describe("configInitializer", () => {
assert.deepStrictEqual(config.rules.quotes, ["error", "single"]);
assert.deepStrictEqual(config.rules["linebreak-style"], ["error", "unix"]);
assert.deepStrictEqual(config.rules.semi, ["error", "always"]);
assert.strictEqual(config.env.es2020, true);
assert.strictEqual(config.env.es2021, true);
assert.strictEqual(config.parserOptions.ecmaVersion, espree.latestEcmaVersion);
assert.strictEqual(config.parserOptions.sourceType, "module");
assert.strictEqual(config.env.browser, true);
Expand Down
6 changes: 6 additions & 0 deletions tests/lib/rules/no-extend-native.js
Expand Up @@ -48,6 +48,12 @@ ruleTester.run("no-extend-native", rule, {
{
code: "{ let Object = function() {}; Object.prototype.p = 0 }",
parserOptions: { ecmaVersion: 6 }
},

// TODO(mdjermanovic): This test should become `invalid` in the next major version, when we upgrade the `globals` package.
{
code: "WeakRef.prototype.p = 0",
env: { es2021: true }
}
],
invalid: [{
Expand Down
1 change: 1 addition & 0 deletions tests/lib/rules/no-undef.js
Expand Up @@ -59,6 +59,7 @@ ruleTester.run("no-undef", rule, {
{ code: "requestIdleCallback;", env: { browser: true } },
{ code: "customElements;", env: { browser: true } },
{ code: "PromiseRejectionEvent;", env: { browser: true } },
{ code: "(foo, bar) => { foo ||= WeakRef; bar ??= FinalizationRegistry; }", env: { es2021: true } },

// Notifications of readonly are removed: https://github.com/eslint/eslint/issues/4504
"/*global b:false*/ function f() { b = 1; }",
Expand Down