diff --git a/lib/rules/no-constant-condition.js b/lib/rules/no-constant-condition.js index 724da974127..48b1fbf689f 100644 --- a/lib/rules/no-constant-condition.js +++ b/lib/rules/no-constant-condition.js @@ -207,6 +207,8 @@ module.exports = { "ForStatement:exit": checkConstantConditionLoopInSet, FunctionDeclaration: enterFunction, "FunctionDeclaration:exit": exitFunction, + FunctionExpression: enterFunction, + "FunctionExpression:exit": exitFunction, YieldExpression: () => loopsInCurrentScope.clear() }; diff --git a/tests/lib/rules/no-constant-condition.js b/tests/lib/rules/no-constant-condition.js index 1ec03f0e7ab..69a90dd381a 100644 --- a/tests/lib/rules/no-constant-condition.js +++ b/tests/lib/rules/no-constant-condition.js @@ -152,6 +152,10 @@ ruleTester.run("no-constant-condition", rule, { code: "function foo() {while (true) {function* bar() {while (true) {yield;}}}}", errors: [{ messageId: "unexpected", type: "Literal" }] }, + { + code: "function foo() {while (true) {const bar = function*() {while (true) {yield;}}}}", + errors: [{ messageId: "unexpected", type: "Literal" }] + }, { code: "function* foo() { for (let foo = 1 + 2 + 3 + (yield); true; baz) {}}", errors: [{ messageId: "unexpected", type: "Literal" }]