From 1fe0d4a94b0c06cdb3e9f38a0fa07650a1f877eb Mon Sep 17 00:00:00 2001 From: Henry Zhu Date: Thu, 31 Mar 2016 16:49:31 -0400 Subject: [PATCH] Merge pull request babel/babel-eslint#282 from josh/no-implicit-globals-regression Fix processing sourceType: script --- eslint/babel-eslint-parser/index.js | 1 - .../test/non-regression.js | 69 ++++++++++++++----- 2 files changed, 50 insertions(+), 20 deletions(-) diff --git a/eslint/babel-eslint-parser/index.js b/eslint/babel-eslint-parser/index.js index c9e7bc4df9..b42c3408ee 100644 --- a/eslint/babel-eslint-parser/index.js +++ b/eslint/babel-eslint-parser/index.js @@ -76,7 +76,6 @@ function monkeypatch() { var analyze = escope.analyze; escope.analyze = function (ast, opts) { opts.ecmaVersion = 6; - opts.sourceType = "module"; var results = analyze.call(this, ast, opts); return results; diff --git a/eslint/babel-eslint-parser/test/non-regression.js b/eslint/babel-eslint-parser/test/non-regression.js index e34e9f506b..b87ae83caa 100644 --- a/eslint/babel-eslint-parser/test/non-regression.js +++ b/eslint/babel-eslint-parser/test/non-regression.js @@ -2,27 +2,32 @@ "use strict"; var eslint = require("eslint"); -function verifyAndAssertMessages(code, rules, expectedMessages, sourceType) { - var messages = eslint.linter.verify( - code, - { - parser: require.resolve(".."), - rules: rules, - env: { - node: true, - es6: true +function verifyAndAssertMessages(code, rules, expectedMessages, sourceType, overrideConfig) { + var config = { + parser: require.resolve(".."), + rules: rules, + env: { + node: true, + es6: true + }, + parserOptions: { + ecmaVersion: 6, + ecmaFeatures: { + jsx: true, + experimentalObjectRestSpread: true, + globalReturn: true }, - parserOptions: { - ecmaVersion: 6, - ecmaFeatures: { - jsx: true, - experimentalObjectRestSpread: true, - globalReturn: true - }, - sourceType: sourceType || "module" - } + sourceType: sourceType || "module" } - ); + } + + if (overrideConfig) { + for (var key in overrideConfig) { + config[key] = overrideConfig[key] + } + } + + var messages = eslint.linter.verify(code, config); if (messages.length !== expectedMessages.length) { throw new Error("Expected " + expectedMessages.length + " message(s), got " + messages.length + " " + JSON.stringify(messages)); @@ -1137,6 +1142,32 @@ describe("verify", function () { ); }); + it("no-implicit-globals in script", function () { + verifyAndAssertMessages( + "var leakedGlobal = 1;", + { "no-implicit-globals": 1 }, + [ "1:5 Implicit global variable, assign as global property instead. no-implicit-globals" ], + "script", + { + env: {}, + parserOptions: { ecmaVersion: 6, sourceType: "script" } + } + ); + }); + + it("no-implicit-globals in module", function () { + verifyAndAssertMessages( + "var leakedGlobal = 1;", + { "no-implicit-globals": 1 }, + [], + "module", + { + env: {}, + parserOptions: { ecmaVersion: 6, sourceType: "module" } + } + ); + }); + // This two tests are disabled, as the feature to visit properties when // there is a spread/rest operator has been removed as it caused problems // with other rules #249