diff --git a/lib/espree.js b/lib/espree.js index d6b44783..cd362e71 100644 --- a/lib/espree.js +++ b/lib/espree.js @@ -18,28 +18,30 @@ const tokTypes = Object.assign({}, acorn.tokTypes, jsx.tokTypes); * @returns {number} normalized ECMAScript version */ function normalizeEcmaVersion(ecmaVersion = DEFAULT_ECMA_VERSION) { - if (typeof ecmaVersion === "number") { - let version = ecmaVersion; + if (typeof ecmaVersion !== "number") { + throw new Error(`ecmaVersion must be a number. Received value of type ${typeof ecmaVersion} instead.`); + } - // Calculate ECMAScript edition number from official year version starting with - // ES2015, which corresponds with ES6 (or a difference of 2009). - if (version >= 2015) { - version -= 2009; - } + let version = ecmaVersion; - switch (version) { - case 3: - case 5: - case 6: - case 7: - case 8: - case 9: - case 10: - case 11: - return version; - - // no default - } + // Calculate ECMAScript edition number from official year version starting with + // ES2015, which corresponds with ES6 (or a difference of 2009). + if (version >= 2015) { + version -= 2009; + } + + switch (version) { + case 3: + case 5: + case 6: + case 7: + case 8: + case 9: + case 10: + case 11: + return version; + + // no default } throw new Error("Invalid ecmaVersion."); diff --git a/tests/lib/ecma-version.js b/tests/lib/ecma-version.js index 64409853..d72d2abe 100644 --- a/tests/lib/ecma-version.js +++ b/tests/lib/ecma-version.js @@ -152,7 +152,7 @@ describe("ecmaVersion", () => { loc: true } ); - }, /Invalid ecmaVersion/); + }, /ecmaVersion must be a number. Received value of type string instead/); }); it("Should throw error when using module in pre-ES6", () => {