diff --git a/eslint/babel-eslint-parser/src/convert/convertAST.cjs b/eslint/babel-eslint-parser/src/convert/convertAST.cjs index fb2631b7d8ba..85c95052216d 100644 --- a/eslint/babel-eslint-parser/src/convert/convertAST.cjs +++ b/eslint/babel-eslint-parser/src/convert/convertAST.cjs @@ -77,17 +77,12 @@ const convertNodesVisitor = { if (node.type === "TemplateLiteral") { for (let i = 0; i < node.quasis.length; i++) { const q = node.quasis[i]; - - if (!q.range) { - q.range = []; - } q.range[0] -= 1; if (q.tail) { q.range[1] += 1; } else { q.range[1] += 2; } - q.loc.start.column -= 1; if (q.tail) { q.loc.end.column += 1; @@ -110,10 +105,6 @@ function convertProgramNode(ast) { delete ast.program; delete ast.errors; - if (!ast.range) { - ast.range = []; - } - if (ast.comments.length) { const lastComment = ast.comments[ast.comments.length - 1]; diff --git a/eslint/babel-eslint-parser/src/convert/convertTokens.cjs b/eslint/babel-eslint-parser/src/convert/convertTokens.cjs index 311929016687..8cdaa566e134 100644 --- a/eslint/babel-eslint-parser/src/convert/convertTokens.cjs +++ b/eslint/babel-eslint-parser/src/convert/convertTokens.cjs @@ -31,7 +31,7 @@ function convertTemplateType(tokens, tl) { templateTokens = []; } - (tokens || []).forEach(token => { + tokens.forEach(token => { switch (token.type.label) { case tl.backQuote: if (curlyBrace) { diff --git a/eslint/babel-eslint-parser/src/worker/configuration.cjs b/eslint/babel-eslint-parser/src/worker/configuration.cjs index 24877f5c59ef..5864863b37ac 100644 --- a/eslint/babel-eslint-parser/src/worker/configuration.cjs +++ b/eslint/babel-eslint-parser/src/worker/configuration.cjs @@ -58,15 +58,37 @@ function validateResolvedConfig(config, options) { } } +function getDefaultParserOptions(options) { + return { + plugins: [], + ...options, + babelrc: false, + configFile: false, + browserslistConfigFile: false, + ignore: null, + only: null, + }; +} + module.exports = function normalizeBabelParseConfig(options) { const parseOptions = normalizeParserOptions(options); if (process.env.BABEL_8_BREAKING) { return babel .loadPartialConfigAsync(parseOptions) - .then(config => validateResolvedConfig(config, options) || parseOptions); + .then(config => validateConfigWithFallback(config)); } else { const config = babel.loadPartialConfigSync(parseOptions); - return validateResolvedConfig(config, options) || parseOptions; + return validateConfigWithFallback(config); + } + + function validateConfigWithFallback(inputConfig) { + const result = validateResolvedConfig(inputConfig, options); + if (result) { + return result; + } else { + // Fallback when `loadPartialConfig` returns `null` (e.g.: when the file is ignored) + return getDefaultParserOptions(parseOptions); + } } }; diff --git a/eslint/babel-eslint-parser/src/worker/maybeParse.cjs b/eslint/babel-eslint-parser/src/worker/maybeParse.cjs index 6c981968708a..22c6fcaa7147 100644 --- a/eslint/babel-eslint-parser/src/worker/maybeParse.cjs +++ b/eslint/babel-eslint-parser/src/worker/maybeParse.cjs @@ -15,11 +15,6 @@ module.exports = function maybeParse(code, options) { { dirname: __dirname, type: "plugin" }, ); } - - if (!options.plugins) { - // May happen when `loadPartialConfigSync` returns `null` (e.g.: when the file is ignored) - options.plugins = []; - } options.plugins.push(extractParserOptionsConfigItem); try {