diff --git a/packages/parser/README.md b/packages/parser/README.md index d352026ddd1..4b4d013376b 100644 --- a/packages/parser/README.md +++ b/packages/parser/README.md @@ -99,8 +99,8 @@ Default `2018`. Accepts any valid ECMAScript version number or `'latest'`: -- A version: es3, es5, es6, es7, es8, es9, es10, es11, ..., or -- A year: es2015, es2016, es2017, es2018, es2019, es2020, ... +- A version: es3, es5, es6, es7, es8, es9, es10, es11, es12, es13, ..., or +- A year: es2015, es2016, es2017, es2018, es2019, es2020, es2021, es2022, ... - `latest` When it's a version or a year, the value **must** be a number - so do not include the `es` prefix. diff --git a/packages/parser/src/parser.ts b/packages/parser/src/parser.ts index f304a837d8b..bbb0e3a04d7 100644 --- a/packages/parser/src/parser.ts +++ b/packages/parser/src/parser.ts @@ -102,7 +102,7 @@ function parseForESLint( jsx: validateBoolean(options.ecmaFeatures.jsx), }); const analyzeOptions: AnalyzeOptions = { - ecmaVersion: options.ecmaVersion, + ecmaVersion: options.ecmaVersion === 'latest' ? 1e8 : options.ecmaVersion, globalReturn: options.ecmaFeatures.globalReturn, jsxPragma: options.jsxPragma, jsxFragmentName: options.jsxFragmentName, diff --git a/packages/scope-manager/src/ScopeManager.ts b/packages/scope-manager/src/ScopeManager.ts index 29d31dff379..e4c9b4d3cdc 100644 --- a/packages/scope-manager/src/ScopeManager.ts +++ b/packages/scope-manager/src/ScopeManager.ts @@ -26,7 +26,7 @@ interface ScopeManagerOptions { globalReturn?: boolean; sourceType?: 'module' | 'script'; impliedStrict?: boolean; - ecmaVersion?: number | 'latest'; + ecmaVersion?: number; } class ScopeManager { @@ -76,17 +76,11 @@ class ScopeManager { return this.#options.impliedStrict === true; } public isStrictModeSupported(): boolean { - return ( - this.#options.ecmaVersion === 'latest' || - (this.#options.ecmaVersion != null && this.#options.ecmaVersion >= 5) - ); + return this.#options.ecmaVersion != null && this.#options.ecmaVersion >= 5; } public isES6(): boolean { - return ( - this.#options.ecmaVersion === 'latest' || - (this.#options.ecmaVersion != null && this.#options.ecmaVersion >= 6) - ); + return this.#options.ecmaVersion != null && this.#options.ecmaVersion >= 6; } /** diff --git a/packages/scope-manager/src/analyze.ts b/packages/scope-manager/src/analyze.ts index 38af08fe9ef..6026aaa3f62 100644 --- a/packages/scope-manager/src/analyze.ts +++ b/packages/scope-manager/src/analyze.ts @@ -18,7 +18,7 @@ interface AnalyzeOptions { * Which ECMAScript version is considered. * Defaults to `2018`. */ - ecmaVersion?: EcmaVersion; + ecmaVersion?: number; /** * Whether the whole script is executed under node.js environment. @@ -81,7 +81,7 @@ const DEFAULT_OPTIONS: Required = { emitDecoratorMetadata: false, }; -function mapEcmaVersion(version: EcmaVersion | undefined): Lib { +function mapEcmaVersion(version: EcmaVersion | number | undefined): Lib { if (version === 'latest') { return 'esnext'; } diff --git a/packages/types/src/parser-options.ts b/packages/types/src/parser-options.ts index 36c59742f25..16212faff28 100644 --- a/packages/types/src/parser-options.ts +++ b/packages/types/src/parser-options.ts @@ -12,12 +12,16 @@ type EcmaVersion = | 9 | 10 | 11 + | 12 + | 13 | 2015 | 2016 | 2017 | 2018 | 2019 | 2020 + | 2021 + | 2022 | 'latest'; type SourceType = 'script' | 'module';