Skip to content

Commit

Permalink
Breaking: drop supports for ESLint v1
Browse files Browse the repository at this point in the history
  • Loading branch information
mysticatea committed Jul 3, 2016
1 parent 0351193 commit 9fabf76
Show file tree
Hide file tree
Showing 12 changed files with 15 additions and 178 deletions.
3 changes: 1 addition & 2 deletions .travis.yml
Expand Up @@ -4,10 +4,9 @@ node_js:
- "0.10"
- "0.12"
- "4"
- "5"
- "6"
before_script:
- npm install async
script:
- "npm run test && npm run coveralls"
- "npm rm eslint-config-mysticatea && npm i eslint@1 && npm run test:mocha"
- "npm rm eslint-config-mysticatea && npm i eslint@2 && npm run test:mocha"
2 changes: 0 additions & 2 deletions docs/rules/process-exit-as-throw.md
Expand Up @@ -2,8 +2,6 @@

**Experimental:** This rule is an experimental thing. This may be changed without major bump in future.

**Note:** This rule is not working on ESLint v1 because v1 doesn't support code path analysis.

## Rule Details

```js
Expand Down
16 changes: 1 addition & 15 deletions lib/rules/no-deprecated-api.js
Expand Up @@ -140,21 +140,7 @@ function findVariable(node, initialScope) {
* @returns {void}
*/
function eachReadReferences(variable, f) {
if (variable.references.length > 0) {
variable.references.filter(isReadReference).forEach(f)
}

// Fallback for ESLint v1.
if (variable.scope != null && variable.scope.type === "global") {
variable.scope.through
.filter(function(reference) {
return (
isReadReference(reference) &&
reference.identifier.name === variable.name
)
})
.forEach(f)
}
variable.references.filter(isReadReference).forEach(f)
}

//------------------------------------------------------------------------------
Expand Down
27 changes: 3 additions & 24 deletions lib/rules/no-unsupported-features.js
Expand Up @@ -214,21 +214,10 @@ function parseOptions(options) {
*/
function checkSpecialLexicalEnvironment(context) {
var parserOptions = context.parserOptions
var ecmaFeatures = null

if (context.parserOptions) {
ecmaFeatures = parserOptions.ecmaFeatures
return Boolean(
parserOptions.sourceType === "module" ||
(ecmaFeatures && ecmaFeatures.globalReturn)
)
}

// Backward Compatibility
ecmaFeatures = context.ecmaFeatures
var ecmaFeatures = parserOptions.ecmaFeatures
return Boolean(
ecmaFeatures &&
(ecmaFeatures.modules || ecmaFeatures.globalReturn)
parserOptions.sourceType === "module" ||
(ecmaFeatures && ecmaFeatures.globalReturn)
)
}

Expand Down Expand Up @@ -269,16 +258,6 @@ module.exports = function(context) {

if (variable && variable.defs.length === 0) {
variable.references.forEach(f)

// Backward Compatibility
var references = globalScope.through
for (var j = 0; j < references.length; ++j) {
var reference = references[j]

if (reference.identifier.name === name) {
f(reference)
}
}
}
}
}
Expand Down
17 changes: 7 additions & 10 deletions lib/rules/shebang.js
Expand Up @@ -19,7 +19,7 @@ var getPackageJson = require("../util/get-package-json")
//------------------------------------------------------------------------------

var NODE_SHEBANG = "#!/usr/bin/env node\n"
var SHEBANG_PATTERN = /^(\uFEFF)?(#!.+?)?(\r)?\n/
var SHEBANG_PATTERN = /^(#!.+?)?(\r)?\n/

/**
* Checks whether or not a given path is a `bin` file.
Expand Down Expand Up @@ -52,14 +52,11 @@ function isBinFile(filePath, binField, basedir) {
function getShebangInfo(sourceCode) {
var m = SHEBANG_PATTERN.exec(sourceCode.text)

// ESLint v1 has BOM in text.
// ESLint v2 strips BOM from text, and has the "hasBOM" property.
return {
bomIndex: (typeof sourceCode.hasBOM === "boolean" ? -1 : 0),
bom: (typeof sourceCode.hasBOM === "boolean" ? sourceCode.hasBOM : Boolean(m && m[1])),
cr: Boolean(m && m[3]),
length: (m && m[0].length) || (sourceCode.text.charCodeAt(0) === 0xFEFF ? 1 : 0),
shebang: (m && m[2] && (m[2] + "\n")) || "",
bom: sourceCode.hasBOM,
cr: Boolean(m && m[2]),
length: (m && m[0].length) || 0,
shebang: (m && m[1] && (m[1] + "\n")) || "",
}
}

Expand Down Expand Up @@ -99,7 +96,7 @@ module.exports = function(context) {
node: node,
message: "This file must not have Unicode BOM.",
fix: function(fixer) {
return fixer.removeRange([info.bomIndex, info.bomIndex + 1])
return fixer.removeRange([-1, 0])
},
})
}
Expand All @@ -120,7 +117,7 @@ module.exports = function(context) {
node: node,
message: "This file needs shebang \"#!/usr/bin/env node\".",
fix: function(fixer) {
return fixer.replaceTextRange([info.bomIndex, info.length], NODE_SHEBANG)
return fixer.replaceTextRange([-1, info.length], NODE_SHEBANG)
},
})
}
Expand Down
17 changes: 1 addition & 16 deletions lib/util/get-require-targets.js
Expand Up @@ -31,16 +31,6 @@ function isCallee(node) {
return node.parent.type === "CallExpression" && node.parent.callee === node
}

/**
* Checks the name of a given reference is "require".
*
* @param {escope.Reference} reference - A reference to check.
* @returns {boolean} `true` if the reference is "require".
*/
function isRequire(reference) {
return reference.identifier.name === "require"
}

/**
* Gets references of "require".
*
Expand All @@ -53,12 +43,7 @@ function getReferencesOfRequire(scope) {
// Not found.
return []
}
// Since ESLint v2.
if (variable.references.length > 0) {
return variable.references
}
// Fallback for ESLint v1.
return scope.through.filter(isRequire)
return variable.references
}

//------------------------------------------------------------------------------
Expand Down
2 changes: 1 addition & 1 deletion package.json
Expand Up @@ -21,7 +21,7 @@
"node": ">=0.10"
},
"peerDependencies": {
"eslint": ">=1.10.3"
"eslint": ">=2.0.0"
},
"dependencies": {
"ignore": "^3.0.11",
Expand Down
11 changes: 0 additions & 11 deletions tests/lib/rules/no-deprecated-api.js
Expand Up @@ -57,13 +57,11 @@ ruleTester.run("no-deprecated-api", rule, {
code: "import {Buffer} from 'another-buffer'; new Buffer()",
env: {es6: true},
parserOptions: {sourceType: "module"},
ecmaFeatures: {modules: true},
},
{
code: "import {request} from 'http'; request()",
env: {es6: true},
parserOptions: {sourceType: "module"},
ecmaFeatures: {modules: true},
},
],
invalid: [
Expand Down Expand Up @@ -320,63 +318,54 @@ ruleTester.run("no-deprecated-api", rule, {
code: "import b from 'buffer'; new b.Buffer()",
env: {es6: true},
parserOptions: {sourceType: "module"},
ecmaFeatures: {modules: true},
errors: ["'buffer.Buffer' constructor was deprecated since v6. Use 'buffer.Buffer.alloc()' or 'buffer.Buffer.from()' instead."],
},
{
code: "import * as b from 'buffer'; new b.Buffer()",
env: {es6: true},
parserOptions: {sourceType: "module"},
ecmaFeatures: {modules: true},
errors: ["'buffer.Buffer' constructor was deprecated since v6. Use 'buffer.Buffer.alloc()' or 'buffer.Buffer.from()' instead."],
},
{
code: "import * as b from 'buffer'; new b.default.Buffer()",
env: {es6: true},
parserOptions: {sourceType: "module"},
ecmaFeatures: {modules: true},
errors: ["'buffer.default.Buffer' constructor was deprecated since v6. Use 'buffer.Buffer.alloc()' or 'buffer.Buffer.from()' instead."],
},
{
code: "import {Buffer as b} from 'buffer'; new b()",
env: {es6: true},
parserOptions: {sourceType: "module"},
ecmaFeatures: {modules: true},
errors: ["'buffer.Buffer' constructor was deprecated since v6. Use 'buffer.Buffer.alloc()' or 'buffer.Buffer.from()' instead."],
},
{
code: "import b from 'buffer'; b.SlowBuffer",
env: {es6: true},
parserOptions: {sourceType: "module"},
ecmaFeatures: {modules: true},
errors: ["'buffer.SlowBuffer' was deprecated since v6. Use 'buffer.Buffer.allocUnsafeSlow()' instead."],
},
{
code: "import * as b from 'buffer'; b.SlowBuffer",
env: {es6: true},
parserOptions: {sourceType: "module"},
ecmaFeatures: {modules: true},
errors: ["'buffer.SlowBuffer' was deprecated since v6. Use 'buffer.Buffer.allocUnsafeSlow()' instead."],
},
{
code: "import * as b from 'buffer'; b.default.SlowBuffer",
env: {es6: true},
parserOptions: {sourceType: "module"},
ecmaFeatures: {modules: true},
errors: ["'buffer.default.SlowBuffer' was deprecated since v6. Use 'buffer.Buffer.allocUnsafeSlow()' instead."],
},
{
code: "import {SlowBuffer as b} from 'buffer';",
env: {es6: true},
parserOptions: {sourceType: "module"},
ecmaFeatures: {modules: true},
errors: ["'buffer.SlowBuffer' was deprecated since v6. Use 'buffer.Buffer.allocUnsafeSlow()' instead."],
},
{
code: "import domain from 'domain';",
env: {es6: true},
parserOptions: {sourceType: "module"},
ecmaFeatures: {modules: true},
errors: ["'domain' module was deprecated since v4."],
},

Expand Down

0 comments on commit 9fabf76

Please sign in to comment.