summaryrefslogtreecommitdiff
path: root/pylint/checkers/refactoring.py
diff options
context:
space:
mode:
authorRobert Schweizer <robert_schweizer@gmx.de>2019-08-15 12:53:20 +0200
committerClaudiu Popa <pcmanticore@gmail.com>2019-09-10 10:50:08 +0200
commitfb81d1ade4f0c87039c828f9aed94469691d825d (patch)
treea1446556a10fbdcdb3df1af50139faab64b6707c /pylint/checkers/refactoring.py
parentca54a1a87f6382c68287ebc1996312ceb921f16c (diff)
downloadpylint-git-fb81d1ade4f0c87039c828f9aed94469691d825d.tar.gz
Report unnecessary else after continue and break
Close #2327
Diffstat (limited to 'pylint/checkers/refactoring.py')
-rw-r--r--pylint/checkers/refactoring.py32
1 files changed, 32 insertions, 0 deletions
diff --git a/pylint/checkers/refactoring.py b/pylint/checkers/refactoring.py
index 98dd80827..05fef1f11 100644
--- a/pylint/checkers/refactoring.py
+++ b/pylint/checkers/refactoring.py
@@ -278,6 +278,24 @@ class RefactoringChecker(checkers.BaseTokenChecker):
"consider-using-sys-exit",
"Instead of using exit() or quit(), consider using the sys.exit().",
),
+ "R1723": (
+ 'Unnecessary "%s" after "break"',
+ "no-else-break",
+ "Used in order to highlight an unnecessary block of "
+ "code following an if containing a break statement. "
+ "As such, it will warn when it encounters an else "
+ "following a chain of ifs, all of them containing a "
+ "break statement.",
+ ),
+ "R1724": (
+ 'Unnecessary "%s" after "continue"',
+ "no-else-continue",
+ "Used in order to highlight an unnecessary block of "
+ "code following an if containing a continue statement. "
+ "As such, it will warn when it encounters an else "
+ "following a chain of ifs, all of them containing a "
+ "continue statement.",
+ ),
}
options = (
(
@@ -510,6 +528,16 @@ class RefactoringChecker(checkers.BaseTokenChecker):
node, msg_id="no-else-raise", returning_node_class=astroid.Raise
)
+ def _check_superfluous_else_break(self, node):
+ return self._check_superfluous_else(
+ node, msg_id="no-else-break", returning_node_class=astroid.Break
+ )
+
+ def _check_superfluous_else_continue(self, node):
+ return self._check_superfluous_else(
+ node, msg_id="no-else-continue", returning_node_class=astroid.Continue
+ )
+
def _check_consider_get(self, node):
def type_and_name_are_equal(node_a, node_b):
for _type in [astroid.Name, astroid.AssignName]:
@@ -550,6 +578,8 @@ class RefactoringChecker(checkers.BaseTokenChecker):
"simplifiable-if-statement",
"no-else-return",
"no-else-raise",
+ "no-else-break",
+ "no-else-continue",
"consider-using-get",
)
def visit_if(self, node):
@@ -557,6 +587,8 @@ class RefactoringChecker(checkers.BaseTokenChecker):
self._check_nested_blocks(node)
self._check_superfluous_else_return(node)
self._check_superfluous_else_raise(node)
+ self._check_superfluous_else_break(node)
+ self._check_superfluous_else_continue(node)
self._check_consider_get(node)
@utils.check_messages("simplifiable-if-expression")