From 7da36d5ab335fb557e82a4a2a2dc9a4a1a7aa626 Mon Sep 17 00:00:00 2001 From: Julian Rosse Date: Tue, 4 Sep 2018 21:32:05 -0400 Subject: [PATCH] Fix: respect generator function expressions in no-constant-condition (#10827) --- lib/rules/no-constant-condition.js | 2 ++ tests/lib/rules/no-constant-condition.js | 4 ++++ 2 files changed, 6 insertions(+) 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" }]