From cfdd5249dd0b1f18239bf6ee6af17e8dd578366a Mon Sep 17 00:00:00 2001 From: alberto Date: Mon, 13 Jun 2016 15:44:43 +0200 Subject: [PATCH] Fix: allow semi as braceless body of statements (fixes #6386) (#6391) --- lib/rules/no-extra-semi.js | 11 ++++++++++- tests/lib/rules/no-extra-semi.js | 34 ++++++++++++++++++++++++++++++++ 2 files changed, 44 insertions(+), 1 deletion(-) diff --git a/lib/rules/no-extra-semi.js b/lib/rules/no-extra-semi.js index bb65c0486ba..679a16641b7 100644 --- a/lib/rules/no-extra-semi.js +++ b/lib/rules/no-extra-semi.js @@ -66,7 +66,16 @@ module.exports = { */ EmptyStatement: function(node) { var parent = node.parent, - allowedParentTypes = ["ForStatement", "ForInStatement", "ForOfStatement", "WhileStatement", "DoWhileStatement"]; + allowedParentTypes = [ + "ForStatement", + "ForInStatement", + "ForOfStatement", + "WhileStatement", + "DoWhileStatement", + "IfStatement", + "LabeledStatement", + "WithStatement" + ]; if (allowedParentTypes.indexOf(parent.type) === -1) { report(node); diff --git a/tests/lib/rules/no-extra-semi.js b/tests/lib/rules/no-extra-semi.js index 552553e4fd9..b8269bb0256 100644 --- a/tests/lib/rules/no-extra-semi.js +++ b/tests/lib/rules/no-extra-semi.js @@ -27,6 +27,10 @@ ruleTester.run("no-extra-semi", rule, { "do;while(0);", "for(a in b);", { code: "for(a of b);", parserOptions: { ecmaVersion: 6 } }, + "if(true);", + "if(true); else;", + "foo: ;", + "with(foo);", // Class body. {code: "class A { }", parserOptions: { ecmaVersion: 6 }}, @@ -76,6 +80,36 @@ ruleTester.run("no-extra-semi", rule, { errors: [{ message: "Unnecessary semicolon.", type: "EmptyStatement" }], output: "for(a of b);" }, + { + code: "if(true);;", + errors: [{ message: "Unnecessary semicolon.", type: "EmptyStatement" }], + output: "if(true);" + }, + { + code: "if(true){} else;;", + errors: [{ message: "Unnecessary semicolon.", type: "EmptyStatement" }], + output: "if(true){} else;" + }, + { + code: "if(true){;} else {;}", + errors: [{ message: "Unnecessary semicolon.", type: "EmptyStatement" }, { message: "Unnecessary semicolon.", type: "EmptyStatement" }], + output: "if(true){} else {}" + }, + { + code: "foo:;;", + errors: [{ message: "Unnecessary semicolon.", type: "EmptyStatement" }], + output: "foo:;" + }, + { + code: "with(foo);;", + errors: [{ message: "Unnecessary semicolon.", type: "EmptyStatement" }], + output: "with(foo);" + }, + { + code: "with(foo){;}", + errors: [{ message: "Unnecessary semicolon.", type: "EmptyStatement" }], + output: "with(foo){}" + }, // Class body. {