diff --git a/lib/rules/no-reassign.js b/lib/rules/no-reassign.js index 9627f2290..2e3b1339d 100644 --- a/lib/rules/no-reassign.js +++ b/lib/rules/no-reassign.js @@ -50,7 +50,7 @@ module.exports = function (context) { }, 'FunctionDeclaration': function (fn) { - checkIdentifier(fn.id) + if (fn.id != null) checkIdentifier(fn.id) fn.params.forEach(function (p) { if (p.type !== 'Identifier') return diff --git a/tests/lib/rules/no-reassign.js b/tests/lib/rules/no-reassign.js index ccbc3e2c4..0c3d86df8 100644 --- a/tests/lib/rules/no-reassign.js +++ b/tests/lib/rules/no-reassign.js @@ -11,9 +11,15 @@ eslintTester.addRuleTest('lib/rules/no-reassign', { valid: [ test({code: 'import { foo } from \'./bar\'; bar = 42;'}) // may assign to imported names\' members - , test({code: 'import { foo } from \'./bar\'; foo.x = 42; '}), + , test({code: 'import { foo } from \'./bar\'; foo.x = 42; '}) // may assign to imported namespaces\' names\' members - test({code: 'import * as foo from \'./bar\'; foo.x.y = 42; '}) + , test({code: 'import * as foo from \'./bar\'; foo.x.y = 42; '}) + + // ensure unnamed imports work + , test({code: 'import \'./bar\'; '}) + + // support anonymous default function + , test({code: 'export default function () { }'}) // ensure object literals are not compromised , test({code: 'import * as foo from \'./bar\'; var x = {foo: 42}; '})