mirror of
https://github.com/astral-sh/ruff.git
synced 2025-09-27 12:29:28 +00:00
[flake8-return
] - Add fixes for (RET505
, RET506
, RET507
, RET508
) (#9595)
This commit is contained in:
parent
dba2cb79cb
commit
ffd13e65ae
11 changed files with 1027 additions and 7 deletions
|
@ -131,6 +131,37 @@ def bar3(x, y, z):
|
||||||
return None
|
return None
|
||||||
|
|
||||||
|
|
||||||
|
def bar4(x):
|
||||||
|
if True:
|
||||||
|
return
|
||||||
|
else:
|
||||||
|
# comment
|
||||||
|
pass
|
||||||
|
|
||||||
|
|
||||||
|
def bar5():
|
||||||
|
if True:
|
||||||
|
return
|
||||||
|
else: # comment
|
||||||
|
pass
|
||||||
|
|
||||||
|
|
||||||
|
def bar6():
|
||||||
|
if True:
|
||||||
|
return
|
||||||
|
else\
|
||||||
|
:\
|
||||||
|
# comment
|
||||||
|
pass
|
||||||
|
|
||||||
|
|
||||||
|
def bar7():
|
||||||
|
if True:
|
||||||
|
return
|
||||||
|
else\
|
||||||
|
: # comment
|
||||||
|
pass
|
||||||
|
|
||||||
x = 0
|
x = 0
|
||||||
|
|
||||||
if x == 1:
|
if x == 1:
|
||||||
|
|
|
@ -11,10 +11,11 @@ mod tests {
|
||||||
use anyhow::Result;
|
use anyhow::Result;
|
||||||
use test_case::test_case;
|
use test_case::test_case;
|
||||||
|
|
||||||
use crate::assert_messages;
|
|
||||||
use crate::registry::Rule;
|
use crate::registry::Rule;
|
||||||
|
use crate::settings::types::PreviewMode;
|
||||||
use crate::settings::LinterSettings;
|
use crate::settings::LinterSettings;
|
||||||
use crate::test::test_path;
|
use crate::test::test_path;
|
||||||
|
use crate::{assert_messages, settings};
|
||||||
|
|
||||||
#[test_case(Rule::UnnecessaryReturnNone, Path::new("RET501.py"))]
|
#[test_case(Rule::UnnecessaryReturnNone, Path::new("RET501.py"))]
|
||||||
#[test_case(Rule::ImplicitReturnValue, Path::new("RET502.py"))]
|
#[test_case(Rule::ImplicitReturnValue, Path::new("RET502.py"))]
|
||||||
|
@ -33,4 +34,25 @@ mod tests {
|
||||||
assert_messages!(snapshot, diagnostics);
|
assert_messages!(snapshot, diagnostics);
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[test_case(Rule::SuperfluousElseReturn, Path::new("RET505.py"))]
|
||||||
|
#[test_case(Rule::SuperfluousElseRaise, Path::new("RET506.py"))]
|
||||||
|
#[test_case(Rule::SuperfluousElseContinue, Path::new("RET507.py"))]
|
||||||
|
#[test_case(Rule::SuperfluousElseBreak, Path::new("RET508.py"))]
|
||||||
|
fn preview_rules(rule_code: Rule, path: &Path) -> Result<()> {
|
||||||
|
let snapshot = format!(
|
||||||
|
"preview__{}_{}",
|
||||||
|
rule_code.noqa_code(),
|
||||||
|
path.to_string_lossy()
|
||||||
|
);
|
||||||
|
let diagnostics = test_path(
|
||||||
|
Path::new("flake8_return").join(path).as_path(),
|
||||||
|
&settings::LinterSettings {
|
||||||
|
preview: PreviewMode::Enabled,
|
||||||
|
..settings::LinterSettings::for_rule(rule_code)
|
||||||
|
},
|
||||||
|
)?;
|
||||||
|
assert_messages!(snapshot, diagnostics);
|
||||||
|
Ok(())
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,9 +1,10 @@
|
||||||
|
use anyhow::Result;
|
||||||
use std::ops::Add;
|
use std::ops::Add;
|
||||||
|
|
||||||
use ruff_python_ast::{self as ast, ElifElseClause, Expr, Stmt};
|
use ruff_python_ast::{self as ast, ElifElseClause, Expr, Stmt};
|
||||||
use ruff_text_size::{Ranged, TextRange, TextSize};
|
use ruff_text_size::{Ranged, TextRange, TextSize};
|
||||||
|
|
||||||
use ruff_diagnostics::{AlwaysFixableViolation, Violation};
|
use ruff_diagnostics::{AlwaysFixableViolation, FixAvailability, Violation};
|
||||||
use ruff_diagnostics::{Diagnostic, Edit, Fix};
|
use ruff_diagnostics::{Diagnostic, Edit, Fix};
|
||||||
use ruff_macros::{derive_message_formats, violation};
|
use ruff_macros::{derive_message_formats, violation};
|
||||||
|
|
||||||
|
@ -12,12 +13,13 @@ use ruff_python_ast::stmt_if::elif_else_range;
|
||||||
use ruff_python_ast::visitor::Visitor;
|
use ruff_python_ast::visitor::Visitor;
|
||||||
use ruff_python_ast::whitespace::indentation;
|
use ruff_python_ast::whitespace::indentation;
|
||||||
use ruff_python_semantic::SemanticModel;
|
use ruff_python_semantic::SemanticModel;
|
||||||
use ruff_python_trivia::is_python_whitespace;
|
use ruff_python_trivia::{is_python_whitespace, SimpleTokenKind, SimpleTokenizer};
|
||||||
|
|
||||||
use crate::checkers::ast::Checker;
|
use crate::checkers::ast::Checker;
|
||||||
use crate::fix::edits;
|
use crate::fix::edits;
|
||||||
use crate::registry::{AsRule, Rule};
|
use crate::registry::{AsRule, Rule};
|
||||||
use crate::rules::flake8_return::helpers::end_of_last_statement;
|
use crate::rules::flake8_return::helpers::end_of_last_statement;
|
||||||
|
use crate::rules::pyupgrade::fixes::adjust_indentation;
|
||||||
|
|
||||||
use super::super::branch::Branch;
|
use super::super::branch::Branch;
|
||||||
use super::super::helpers::result_exists;
|
use super::super::helpers::result_exists;
|
||||||
|
@ -210,11 +212,17 @@ pub struct SuperfluousElseReturn {
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Violation for SuperfluousElseReturn {
|
impl Violation for SuperfluousElseReturn {
|
||||||
|
const FIX_AVAILABILITY: FixAvailability = FixAvailability::Sometimes;
|
||||||
#[derive_message_formats]
|
#[derive_message_formats]
|
||||||
fn message(&self) -> String {
|
fn message(&self) -> String {
|
||||||
let SuperfluousElseReturn { branch } = self;
|
let SuperfluousElseReturn { branch } = self;
|
||||||
format!("Unnecessary `{branch}` after `return` statement")
|
format!("Unnecessary `{branch}` after `return` statement")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn fix_title(&self) -> Option<String> {
|
||||||
|
let SuperfluousElseReturn { branch } = self;
|
||||||
|
Some(format!("Remove unnecessary `{branch}`"))
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// ## What it does
|
/// ## What it does
|
||||||
|
@ -248,11 +256,17 @@ pub struct SuperfluousElseRaise {
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Violation for SuperfluousElseRaise {
|
impl Violation for SuperfluousElseRaise {
|
||||||
|
const FIX_AVAILABILITY: FixAvailability = FixAvailability::Sometimes;
|
||||||
#[derive_message_formats]
|
#[derive_message_formats]
|
||||||
fn message(&self) -> String {
|
fn message(&self) -> String {
|
||||||
let SuperfluousElseRaise { branch } = self;
|
let SuperfluousElseRaise { branch } = self;
|
||||||
format!("Unnecessary `{branch}` after `raise` statement")
|
format!("Unnecessary `{branch}` after `raise` statement")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn fix_title(&self) -> Option<String> {
|
||||||
|
let SuperfluousElseRaise { branch } = self;
|
||||||
|
Some(format!("Remove unnecessary `{branch}`"))
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// ## What it does
|
/// ## What it does
|
||||||
|
@ -288,11 +302,17 @@ pub struct SuperfluousElseContinue {
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Violation for SuperfluousElseContinue {
|
impl Violation for SuperfluousElseContinue {
|
||||||
|
const FIX_AVAILABILITY: FixAvailability = FixAvailability::Sometimes;
|
||||||
#[derive_message_formats]
|
#[derive_message_formats]
|
||||||
fn message(&self) -> String {
|
fn message(&self) -> String {
|
||||||
let SuperfluousElseContinue { branch } = self;
|
let SuperfluousElseContinue { branch } = self;
|
||||||
format!("Unnecessary `{branch}` after `continue` statement")
|
format!("Unnecessary `{branch}` after `continue` statement")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn fix_title(&self) -> Option<String> {
|
||||||
|
let SuperfluousElseContinue { branch } = self;
|
||||||
|
Some(format!("Remove unnecessary `{branch}`"))
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// ## What it does
|
/// ## What it does
|
||||||
|
@ -328,11 +348,17 @@ pub struct SuperfluousElseBreak {
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Violation for SuperfluousElseBreak {
|
impl Violation for SuperfluousElseBreak {
|
||||||
|
const FIX_AVAILABILITY: FixAvailability = FixAvailability::Sometimes;
|
||||||
#[derive_message_formats]
|
#[derive_message_formats]
|
||||||
fn message(&self) -> String {
|
fn message(&self) -> String {
|
||||||
let SuperfluousElseBreak { branch } = self;
|
let SuperfluousElseBreak { branch } = self;
|
||||||
format!("Unnecessary `{branch}` after `break` statement")
|
format!("Unnecessary `{branch}` after `break` statement")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn fix_title(&self) -> Option<String> {
|
||||||
|
let SuperfluousElseBreak { branch } = self;
|
||||||
|
Some(format!("Remove unnecessary `{branch}`"))
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// RET501
|
/// RET501
|
||||||
|
@ -602,42 +628,54 @@ fn superfluous_else_node(
|
||||||
};
|
};
|
||||||
for child in if_elif_body {
|
for child in if_elif_body {
|
||||||
if child.is_return_stmt() {
|
if child.is_return_stmt() {
|
||||||
let diagnostic = Diagnostic::new(
|
let mut diagnostic = Diagnostic::new(
|
||||||
SuperfluousElseReturn { branch },
|
SuperfluousElseReturn { branch },
|
||||||
elif_else_range(elif_else, checker.locator().contents())
|
elif_else_range(elif_else, checker.locator().contents())
|
||||||
.unwrap_or_else(|| elif_else.range()),
|
.unwrap_or_else(|| elif_else.range()),
|
||||||
);
|
);
|
||||||
if checker.enabled(diagnostic.kind.rule()) {
|
if checker.enabled(diagnostic.kind.rule()) {
|
||||||
|
if checker.settings.preview.is_enabled() {
|
||||||
|
diagnostic.try_set_fix(|| remove_else(checker, elif_else));
|
||||||
|
}
|
||||||
checker.diagnostics.push(diagnostic);
|
checker.diagnostics.push(diagnostic);
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
} else if child.is_break_stmt() {
|
} else if child.is_break_stmt() {
|
||||||
let diagnostic = Diagnostic::new(
|
let mut diagnostic = Diagnostic::new(
|
||||||
SuperfluousElseBreak { branch },
|
SuperfluousElseBreak { branch },
|
||||||
elif_else_range(elif_else, checker.locator().contents())
|
elif_else_range(elif_else, checker.locator().contents())
|
||||||
.unwrap_or_else(|| elif_else.range()),
|
.unwrap_or_else(|| elif_else.range()),
|
||||||
);
|
);
|
||||||
if checker.enabled(diagnostic.kind.rule()) {
|
if checker.enabled(diagnostic.kind.rule()) {
|
||||||
|
if checker.settings.preview.is_enabled() {
|
||||||
|
diagnostic.try_set_fix(|| remove_else(checker, elif_else));
|
||||||
|
}
|
||||||
checker.diagnostics.push(diagnostic);
|
checker.diagnostics.push(diagnostic);
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
} else if child.is_raise_stmt() {
|
} else if child.is_raise_stmt() {
|
||||||
let diagnostic = Diagnostic::new(
|
let mut diagnostic = Diagnostic::new(
|
||||||
SuperfluousElseRaise { branch },
|
SuperfluousElseRaise { branch },
|
||||||
elif_else_range(elif_else, checker.locator().contents())
|
elif_else_range(elif_else, checker.locator().contents())
|
||||||
.unwrap_or_else(|| elif_else.range()),
|
.unwrap_or_else(|| elif_else.range()),
|
||||||
);
|
);
|
||||||
if checker.enabled(diagnostic.kind.rule()) {
|
if checker.enabled(diagnostic.kind.rule()) {
|
||||||
|
if checker.settings.preview.is_enabled() {
|
||||||
|
diagnostic.try_set_fix(|| remove_else(checker, elif_else));
|
||||||
|
}
|
||||||
checker.diagnostics.push(diagnostic);
|
checker.diagnostics.push(diagnostic);
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
} else if child.is_continue_stmt() {
|
} else if child.is_continue_stmt() {
|
||||||
let diagnostic = Diagnostic::new(
|
let mut diagnostic = Diagnostic::new(
|
||||||
SuperfluousElseContinue { branch },
|
SuperfluousElseContinue { branch },
|
||||||
elif_else_range(elif_else, checker.locator().contents())
|
elif_else_range(elif_else, checker.locator().contents())
|
||||||
.unwrap_or_else(|| elif_else.range()),
|
.unwrap_or_else(|| elif_else.range()),
|
||||||
);
|
);
|
||||||
if checker.enabled(diagnostic.kind.rule()) {
|
if checker.enabled(diagnostic.kind.rule()) {
|
||||||
|
if checker.settings.preview.is_enabled() {
|
||||||
|
diagnostic.try_set_fix(|| remove_else(checker, elif_else));
|
||||||
|
}
|
||||||
checker.diagnostics.push(diagnostic);
|
checker.diagnostics.push(diagnostic);
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
|
@ -715,3 +753,67 @@ pub(crate) fn function(checker: &mut Checker, body: &[Stmt], returns: Option<&Ex
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn remove_else(checker: &mut Checker, elif_else: &ElifElseClause) -> Result<Fix> {
|
||||||
|
if elif_else.test.is_some() {
|
||||||
|
// it's an elif, so we can just make it an if
|
||||||
|
|
||||||
|
// delete "el" from "elif"
|
||||||
|
Ok(Fix::safe_edit(Edit::deletion(
|
||||||
|
elif_else.start(),
|
||||||
|
elif_else.start() + TextSize::from(2),
|
||||||
|
)))
|
||||||
|
} else {
|
||||||
|
// the start of the line where the `else`` is
|
||||||
|
let else_line_start = checker.locator().line_start(elif_else.start());
|
||||||
|
|
||||||
|
// making a tokenizer to find the Colon for the `else`, not always on the same line!
|
||||||
|
let mut else_line_tokenizer =
|
||||||
|
SimpleTokenizer::starts_at(elif_else.start(), checker.locator().contents());
|
||||||
|
|
||||||
|
// find the Colon for the `else`
|
||||||
|
let Some(else_colon) =
|
||||||
|
else_line_tokenizer.find(|token| token.kind == SimpleTokenKind::Colon)
|
||||||
|
else {
|
||||||
|
return Err(anyhow::anyhow!("Cannot find `:` in `else` statement"));
|
||||||
|
};
|
||||||
|
|
||||||
|
// get the indentation of the `else`, since that is the indent level we want to end with
|
||||||
|
let Some(desired_indentation) = indentation(checker.locator(), elif_else) else {
|
||||||
|
return Err(anyhow::anyhow!("Compound statement cannot be inlined"));
|
||||||
|
};
|
||||||
|
|
||||||
|
// we're deleting the `else`, and it's Colon, and the rest of the line(s) they're on,
|
||||||
|
// so here we get the last position of the line the Colon is on
|
||||||
|
let else_colon_end = checker.locator().full_line_end(else_colon.end());
|
||||||
|
|
||||||
|
// if there is a comment on the same line as the Colon, let's keep it
|
||||||
|
// and give it the proper indentation once we unindent it
|
||||||
|
let else_comment_after_colon = else_line_tokenizer
|
||||||
|
.find(|token| token.kind.is_comment())
|
||||||
|
.and_then(|token| {
|
||||||
|
if token.kind == SimpleTokenKind::Comment && token.start() < else_colon_end {
|
||||||
|
return Some(format!(
|
||||||
|
"{desired_indentation}{}{}",
|
||||||
|
checker.locator().slice(token),
|
||||||
|
checker.stylist().line_ending().as_str(),
|
||||||
|
));
|
||||||
|
}
|
||||||
|
None
|
||||||
|
})
|
||||||
|
.unwrap_or(String::new());
|
||||||
|
|
||||||
|
let indented = adjust_indentation(
|
||||||
|
TextRange::new(else_colon_end, elif_else.end()),
|
||||||
|
desired_indentation,
|
||||||
|
checker.locator(),
|
||||||
|
checker.stylist(),
|
||||||
|
)?;
|
||||||
|
|
||||||
|
Ok(Fix::safe_edit(Edit::replacement(
|
||||||
|
format!("{else_comment_after_colon}{indented}"),
|
||||||
|
else_line_start,
|
||||||
|
elif_else.end(),
|
||||||
|
)))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
@ -10,6 +10,7 @@ RET505.py:8:5: RET505 Unnecessary `elif` after `return` statement
|
||||||
9 | b = 2
|
9 | b = 2
|
||||||
10 | return w
|
10 | return w
|
||||||
|
|
|
|
||||||
|
= help: Remove unnecessary `elif`
|
||||||
|
|
||||||
RET505.py:23:5: RET505 Unnecessary `elif` after `return` statement
|
RET505.py:23:5: RET505 Unnecessary `elif` after `return` statement
|
||||||
|
|
|
|
||||||
|
@ -20,6 +21,7 @@ RET505.py:23:5: RET505 Unnecessary `elif` after `return` statement
|
||||||
24 | c = 2
|
24 | c = 2
|
||||||
25 | else:
|
25 | else:
|
||||||
|
|
|
|
||||||
|
= help: Remove unnecessary `elif`
|
||||||
|
|
||||||
RET505.py:41:5: RET505 Unnecessary `elif` after `return` statement
|
RET505.py:41:5: RET505 Unnecessary `elif` after `return` statement
|
||||||
|
|
|
|
||||||
|
@ -30,6 +32,7 @@ RET505.py:41:5: RET505 Unnecessary `elif` after `return` statement
|
||||||
42 | b = 2
|
42 | b = 2
|
||||||
43 | return w
|
43 | return w
|
||||||
|
|
|
|
||||||
|
= help: Remove unnecessary `elif`
|
||||||
|
|
||||||
RET505.py:53:5: RET505 Unnecessary `else` after `return` statement
|
RET505.py:53:5: RET505 Unnecessary `else` after `return` statement
|
||||||
|
|
|
|
||||||
|
@ -40,6 +43,7 @@ RET505.py:53:5: RET505 Unnecessary `else` after `return` statement
|
||||||
54 | b = 2
|
54 | b = 2
|
||||||
55 | return z
|
55 | return z
|
||||||
|
|
|
|
||||||
|
= help: Remove unnecessary `else`
|
||||||
|
|
||||||
RET505.py:64:9: RET505 Unnecessary `else` after `return` statement
|
RET505.py:64:9: RET505 Unnecessary `else` after `return` statement
|
||||||
|
|
|
|
||||||
|
@ -50,6 +54,7 @@ RET505.py:64:9: RET505 Unnecessary `else` after `return` statement
|
||||||
65 | c = 3
|
65 | c = 3
|
||||||
66 | return x
|
66 | return x
|
||||||
|
|
|
|
||||||
|
= help: Remove unnecessary `else`
|
||||||
|
|
||||||
RET505.py:79:5: RET505 Unnecessary `else` after `return` statement
|
RET505.py:79:5: RET505 Unnecessary `else` after `return` statement
|
||||||
|
|
|
|
||||||
|
@ -60,6 +65,7 @@ RET505.py:79:5: RET505 Unnecessary `else` after `return` statement
|
||||||
80 | c = 3
|
80 | c = 3
|
||||||
81 | return
|
81 | return
|
||||||
|
|
|
|
||||||
|
= help: Remove unnecessary `else`
|
||||||
|
|
||||||
RET505.py:89:9: RET505 Unnecessary `else` after `return` statement
|
RET505.py:89:9: RET505 Unnecessary `else` after `return` statement
|
||||||
|
|
|
|
||||||
|
@ -70,6 +76,7 @@ RET505.py:89:9: RET505 Unnecessary `else` after `return` statement
|
||||||
90 | b = 2
|
90 | b = 2
|
||||||
91 | else:
|
91 | else:
|
||||||
|
|
|
|
||||||
|
= help: Remove unnecessary `else`
|
||||||
|
|
||||||
RET505.py:99:5: RET505 Unnecessary `else` after `return` statement
|
RET505.py:99:5: RET505 Unnecessary `else` after `return` statement
|
||||||
|
|
|
|
||||||
|
@ -80,5 +87,49 @@ RET505.py:99:5: RET505 Unnecessary `else` after `return` statement
|
||||||
100 | try:
|
100 | try:
|
||||||
101 | return False
|
101 | return False
|
||||||
|
|
|
|
||||||
|
= help: Remove unnecessary `else`
|
||||||
|
|
||||||
|
RET505.py:137:5: RET505 Unnecessary `else` after `return` statement
|
||||||
|
|
|
||||||
|
135 | if True:
|
||||||
|
136 | return
|
||||||
|
137 | else:
|
||||||
|
| ^^^^ RET505
|
||||||
|
138 | # comment
|
||||||
|
139 | pass
|
||||||
|
|
|
||||||
|
= help: Remove unnecessary `else`
|
||||||
|
|
||||||
|
RET505.py:145:5: RET505 Unnecessary `else` after `return` statement
|
||||||
|
|
|
||||||
|
143 | if True:
|
||||||
|
144 | return
|
||||||
|
145 | else: # comment
|
||||||
|
| ^^^^ RET505
|
||||||
|
146 | pass
|
||||||
|
|
|
||||||
|
= help: Remove unnecessary `else`
|
||||||
|
|
||||||
|
RET505.py:152:5: RET505 Unnecessary `else` after `return` statement
|
||||||
|
|
|
||||||
|
150 | if True:
|
||||||
|
151 | return
|
||||||
|
152 | else\
|
||||||
|
| ^^^^ RET505
|
||||||
|
153 | :\
|
||||||
|
154 | # comment
|
||||||
|
|
|
||||||
|
= help: Remove unnecessary `else`
|
||||||
|
|
||||||
|
RET505.py:161:5: RET505 Unnecessary `else` after `return` statement
|
||||||
|
|
|
||||||
|
159 | if True:
|
||||||
|
160 | return
|
||||||
|
161 | else\
|
||||||
|
| ^^^^ RET505
|
||||||
|
162 | : # comment
|
||||||
|
163 | pass
|
||||||
|
|
|
||||||
|
= help: Remove unnecessary `else`
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -10,6 +10,7 @@ RET506.py:8:5: RET506 Unnecessary `elif` after `raise` statement
|
||||||
9 | b = 2
|
9 | b = 2
|
||||||
10 | raise Exception(w)
|
10 | raise Exception(w)
|
||||||
|
|
|
|
||||||
|
= help: Remove unnecessary `elif`
|
||||||
|
|
||||||
RET506.py:23:5: RET506 Unnecessary `elif` after `raise` statement
|
RET506.py:23:5: RET506 Unnecessary `elif` after `raise` statement
|
||||||
|
|
|
|
||||||
|
@ -20,6 +21,7 @@ RET506.py:23:5: RET506 Unnecessary `elif` after `raise` statement
|
||||||
24 | raise Exception(y)
|
24 | raise Exception(y)
|
||||||
25 | else:
|
25 | else:
|
||||||
|
|
|
|
||||||
|
= help: Remove unnecessary `elif`
|
||||||
|
|
||||||
RET506.py:34:5: RET506 Unnecessary `else` after `raise` statement
|
RET506.py:34:5: RET506 Unnecessary `else` after `raise` statement
|
||||||
|
|
|
|
||||||
|
@ -30,6 +32,7 @@ RET506.py:34:5: RET506 Unnecessary `else` after `raise` statement
|
||||||
35 | b = 2
|
35 | b = 2
|
||||||
36 | raise Exception(z)
|
36 | raise Exception(z)
|
||||||
|
|
|
|
||||||
|
= help: Remove unnecessary `else`
|
||||||
|
|
||||||
RET506.py:45:9: RET506 Unnecessary `else` after `raise` statement
|
RET506.py:45:9: RET506 Unnecessary `else` after `raise` statement
|
||||||
|
|
|
|
||||||
|
@ -40,6 +43,7 @@ RET506.py:45:9: RET506 Unnecessary `else` after `raise` statement
|
||||||
46 | c = 3
|
46 | c = 3
|
||||||
47 | raise Exception(x)
|
47 | raise Exception(x)
|
||||||
|
|
|
|
||||||
|
= help: Remove unnecessary `else`
|
||||||
|
|
||||||
RET506.py:60:5: RET506 Unnecessary `else` after `raise` statement
|
RET506.py:60:5: RET506 Unnecessary `else` after `raise` statement
|
||||||
|
|
|
|
||||||
|
@ -50,6 +54,7 @@ RET506.py:60:5: RET506 Unnecessary `else` after `raise` statement
|
||||||
61 | c = 3
|
61 | c = 3
|
||||||
62 | raise Exception(y)
|
62 | raise Exception(y)
|
||||||
|
|
|
|
||||||
|
= help: Remove unnecessary `else`
|
||||||
|
|
||||||
RET506.py:70:9: RET506 Unnecessary `else` after `raise` statement
|
RET506.py:70:9: RET506 Unnecessary `else` after `raise` statement
|
||||||
|
|
|
|
||||||
|
@ -60,6 +65,7 @@ RET506.py:70:9: RET506 Unnecessary `else` after `raise` statement
|
||||||
71 | b = 2
|
71 | b = 2
|
||||||
72 | else:
|
72 | else:
|
||||||
|
|
|
|
||||||
|
= help: Remove unnecessary `else`
|
||||||
|
|
||||||
RET506.py:80:5: RET506 Unnecessary `else` after `raise` statement
|
RET506.py:80:5: RET506 Unnecessary `else` after `raise` statement
|
||||||
|
|
|
|
||||||
|
@ -70,5 +76,6 @@ RET506.py:80:5: RET506 Unnecessary `else` after `raise` statement
|
||||||
81 | try:
|
81 | try:
|
||||||
82 | raise Exception(False)
|
82 | raise Exception(False)
|
||||||
|
|
|
|
||||||
|
= help: Remove unnecessary `else`
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -10,6 +10,7 @@ RET507.py:8:9: RET507 Unnecessary `elif` after `continue` statement
|
||||||
9 | continue
|
9 | continue
|
||||||
10 | else:
|
10 | else:
|
||||||
|
|
|
|
||||||
|
= help: Remove unnecessary `elif`
|
||||||
|
|
||||||
RET507.py:22:9: RET507 Unnecessary `elif` after `continue` statement
|
RET507.py:22:9: RET507 Unnecessary `elif` after `continue` statement
|
||||||
|
|
|
|
||||||
|
@ -20,6 +21,7 @@ RET507.py:22:9: RET507 Unnecessary `elif` after `continue` statement
|
||||||
23 | c = 2
|
23 | c = 2
|
||||||
24 | else:
|
24 | else:
|
||||||
|
|
|
|
||||||
|
= help: Remove unnecessary `elif`
|
||||||
|
|
||||||
RET507.py:36:9: RET507 Unnecessary `else` after `continue` statement
|
RET507.py:36:9: RET507 Unnecessary `else` after `continue` statement
|
||||||
|
|
|
|
||||||
|
@ -29,6 +31,7 @@ RET507.py:36:9: RET507 Unnecessary `else` after `continue` statement
|
||||||
| ^^^^ RET507
|
| ^^^^ RET507
|
||||||
37 | a = z
|
37 | a = z
|
||||||
|
|
|
|
||||||
|
= help: Remove unnecessary `else`
|
||||||
|
|
||||||
RET507.py:47:13: RET507 Unnecessary `else` after `continue` statement
|
RET507.py:47:13: RET507 Unnecessary `else` after `continue` statement
|
||||||
|
|
|
|
||||||
|
@ -39,6 +42,7 @@ RET507.py:47:13: RET507 Unnecessary `else` after `continue` statement
|
||||||
48 | c = 3
|
48 | c = 3
|
||||||
49 | continue
|
49 | continue
|
||||||
|
|
|
|
||||||
|
= help: Remove unnecessary `else`
|
||||||
|
|
||||||
RET507.py:63:9: RET507 Unnecessary `else` after `continue` statement
|
RET507.py:63:9: RET507 Unnecessary `else` after `continue` statement
|
||||||
|
|
|
|
||||||
|
@ -49,6 +53,7 @@ RET507.py:63:9: RET507 Unnecessary `else` after `continue` statement
|
||||||
64 | c = 3
|
64 | c = 3
|
||||||
65 | continue
|
65 | continue
|
||||||
|
|
|
|
||||||
|
= help: Remove unnecessary `else`
|
||||||
|
|
||||||
RET507.py:74:13: RET507 Unnecessary `else` after `continue` statement
|
RET507.py:74:13: RET507 Unnecessary `else` after `continue` statement
|
||||||
|
|
|
|
||||||
|
@ -59,6 +64,7 @@ RET507.py:74:13: RET507 Unnecessary `else` after `continue` statement
|
||||||
75 | b = 2
|
75 | b = 2
|
||||||
76 | else:
|
76 | else:
|
||||||
|
|
|
|
||||||
|
= help: Remove unnecessary `else`
|
||||||
|
|
||||||
RET507.py:85:9: RET507 Unnecessary `else` after `continue` statement
|
RET507.py:85:9: RET507 Unnecessary `else` after `continue` statement
|
||||||
|
|
|
|
||||||
|
@ -69,5 +75,6 @@ RET507.py:85:9: RET507 Unnecessary `else` after `continue` statement
|
||||||
86 | try:
|
86 | try:
|
||||||
87 | return
|
87 | return
|
||||||
|
|
|
|
||||||
|
= help: Remove unnecessary `else`
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -10,6 +10,7 @@ RET508.py:8:9: RET508 Unnecessary `elif` after `break` statement
|
||||||
9 | break
|
9 | break
|
||||||
10 | else:
|
10 | else:
|
||||||
|
|
|
|
||||||
|
= help: Remove unnecessary `elif`
|
||||||
|
|
||||||
RET508.py:22:9: RET508 Unnecessary `elif` after `break` statement
|
RET508.py:22:9: RET508 Unnecessary `elif` after `break` statement
|
||||||
|
|
|
|
||||||
|
@ -20,6 +21,7 @@ RET508.py:22:9: RET508 Unnecessary `elif` after `break` statement
|
||||||
23 | c = 2
|
23 | c = 2
|
||||||
24 | else:
|
24 | else:
|
||||||
|
|
|
|
||||||
|
= help: Remove unnecessary `elif`
|
||||||
|
|
||||||
RET508.py:33:9: RET508 Unnecessary `else` after `break` statement
|
RET508.py:33:9: RET508 Unnecessary `else` after `break` statement
|
||||||
|
|
|
|
||||||
|
@ -29,6 +31,7 @@ RET508.py:33:9: RET508 Unnecessary `else` after `break` statement
|
||||||
| ^^^^ RET508
|
| ^^^^ RET508
|
||||||
34 | a = z
|
34 | a = z
|
||||||
|
|
|
|
||||||
|
= help: Remove unnecessary `else`
|
||||||
|
|
||||||
RET508.py:44:13: RET508 Unnecessary `else` after `break` statement
|
RET508.py:44:13: RET508 Unnecessary `else` after `break` statement
|
||||||
|
|
|
|
||||||
|
@ -39,6 +42,7 @@ RET508.py:44:13: RET508 Unnecessary `else` after `break` statement
|
||||||
45 | c = 3
|
45 | c = 3
|
||||||
46 | break
|
46 | break
|
||||||
|
|
|
|
||||||
|
= help: Remove unnecessary `else`
|
||||||
|
|
||||||
RET508.py:60:9: RET508 Unnecessary `else` after `break` statement
|
RET508.py:60:9: RET508 Unnecessary `else` after `break` statement
|
||||||
|
|
|
|
||||||
|
@ -49,6 +53,7 @@ RET508.py:60:9: RET508 Unnecessary `else` after `break` statement
|
||||||
61 | c = 3
|
61 | c = 3
|
||||||
62 | break
|
62 | break
|
||||||
|
|
|
|
||||||
|
= help: Remove unnecessary `else`
|
||||||
|
|
||||||
RET508.py:71:13: RET508 Unnecessary `else` after `break` statement
|
RET508.py:71:13: RET508 Unnecessary `else` after `break` statement
|
||||||
|
|
|
|
||||||
|
@ -59,6 +64,7 @@ RET508.py:71:13: RET508 Unnecessary `else` after `break` statement
|
||||||
72 | b = 2
|
72 | b = 2
|
||||||
73 | else:
|
73 | else:
|
||||||
|
|
|
|
||||||
|
= help: Remove unnecessary `else`
|
||||||
|
|
||||||
RET508.py:82:9: RET508 Unnecessary `else` after `break` statement
|
RET508.py:82:9: RET508 Unnecessary `else` after `break` statement
|
||||||
|
|
|
|
||||||
|
@ -69,6 +75,7 @@ RET508.py:82:9: RET508 Unnecessary `else` after `break` statement
|
||||||
83 | try:
|
83 | try:
|
||||||
84 | return
|
84 | return
|
||||||
|
|
|
|
||||||
|
= help: Remove unnecessary `else`
|
||||||
|
|
||||||
RET508.py:158:13: RET508 Unnecessary `else` after `break` statement
|
RET508.py:158:13: RET508 Unnecessary `else` after `break` statement
|
||||||
|
|
|
|
||||||
|
@ -78,5 +85,6 @@ RET508.py:158:13: RET508 Unnecessary `else` after `break` statement
|
||||||
| ^^^^ RET508
|
| ^^^^ RET508
|
||||||
159 | a = z
|
159 | a = z
|
||||||
|
|
|
|
||||||
|
= help: Remove unnecessary `else`
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,282 @@
|
||||||
|
---
|
||||||
|
source: crates/ruff_linter/src/rules/flake8_return/mod.rs
|
||||||
|
---
|
||||||
|
RET505.py:8:5: RET505 [*] Unnecessary `elif` after `return` statement
|
||||||
|
|
|
||||||
|
6 | a = 1
|
||||||
|
7 | return y
|
||||||
|
8 | elif z:
|
||||||
|
| ^^^^ RET505
|
||||||
|
9 | b = 2
|
||||||
|
10 | return w
|
||||||
|
|
|
||||||
|
= help: Remove unnecessary `elif`
|
||||||
|
|
||||||
|
ℹ Safe fix
|
||||||
|
5 5 | if x: # [no-else-return]
|
||||||
|
6 6 | a = 1
|
||||||
|
7 7 | return y
|
||||||
|
8 |- elif z:
|
||||||
|
8 |+ if z:
|
||||||
|
9 9 | b = 2
|
||||||
|
10 10 | return w
|
||||||
|
11 11 | else:
|
||||||
|
|
||||||
|
RET505.py:23:5: RET505 [*] Unnecessary `elif` after `return` statement
|
||||||
|
|
|
||||||
|
21 | b = 2
|
||||||
|
22 | return
|
||||||
|
23 | elif z:
|
||||||
|
| ^^^^ RET505
|
||||||
|
24 | c = 2
|
||||||
|
25 | else:
|
||||||
|
|
|
||||||
|
= help: Remove unnecessary `elif`
|
||||||
|
|
||||||
|
ℹ Safe fix
|
||||||
|
20 20 | else:
|
||||||
|
21 21 | b = 2
|
||||||
|
22 22 | return
|
||||||
|
23 |- elif z:
|
||||||
|
23 |+ if z:
|
||||||
|
24 24 | c = 2
|
||||||
|
25 25 | else:
|
||||||
|
26 26 | c = 3
|
||||||
|
|
||||||
|
RET505.py:41:5: RET505 [*] Unnecessary `elif` after `return` statement
|
||||||
|
|
|
||||||
|
39 | a = 1
|
||||||
|
40 | return y
|
||||||
|
41 | elif z:
|
||||||
|
| ^^^^ RET505
|
||||||
|
42 | b = 2
|
||||||
|
43 | return w
|
||||||
|
|
|
||||||
|
= help: Remove unnecessary `elif`
|
||||||
|
|
||||||
|
ℹ Safe fix
|
||||||
|
38 38 | if x: # [no-else-return]
|
||||||
|
39 39 | a = 1
|
||||||
|
40 40 | return y
|
||||||
|
41 |- elif z:
|
||||||
|
41 |+ if z:
|
||||||
|
42 42 | b = 2
|
||||||
|
43 43 | return w
|
||||||
|
44 44 | else:
|
||||||
|
|
||||||
|
RET505.py:53:5: RET505 [*] Unnecessary `else` after `return` statement
|
||||||
|
|
|
||||||
|
51 | a = 1
|
||||||
|
52 | return y
|
||||||
|
53 | else:
|
||||||
|
| ^^^^ RET505
|
||||||
|
54 | b = 2
|
||||||
|
55 | return z
|
||||||
|
|
|
||||||
|
= help: Remove unnecessary `else`
|
||||||
|
|
||||||
|
ℹ Safe fix
|
||||||
|
50 50 | if x: # [no-else-return]
|
||||||
|
51 51 | a = 1
|
||||||
|
52 52 | return y
|
||||||
|
53 |- else:
|
||||||
|
54 |- b = 2
|
||||||
|
55 |- return z
|
||||||
|
53 |+ b = 2
|
||||||
|
54 |+ return z
|
||||||
|
56 55 |
|
||||||
|
57 56 |
|
||||||
|
58 57 | def foo3(x, y, z):
|
||||||
|
|
||||||
|
RET505.py:64:9: RET505 [*] Unnecessary `else` after `return` statement
|
||||||
|
|
|
||||||
|
62 | b = 2
|
||||||
|
63 | return y
|
||||||
|
64 | else:
|
||||||
|
| ^^^^ RET505
|
||||||
|
65 | c = 3
|
||||||
|
66 | return x
|
||||||
|
|
|
||||||
|
= help: Remove unnecessary `else`
|
||||||
|
|
||||||
|
ℹ Safe fix
|
||||||
|
61 61 | if y: # [no-else-return]
|
||||||
|
62 62 | b = 2
|
||||||
|
63 63 | return y
|
||||||
|
64 |- else:
|
||||||
|
65 |- c = 3
|
||||||
|
66 |- return x
|
||||||
|
64 |+ c = 3
|
||||||
|
65 |+ return x
|
||||||
|
67 66 | else:
|
||||||
|
68 67 | d = 4
|
||||||
|
69 68 | return z
|
||||||
|
|
||||||
|
RET505.py:79:5: RET505 [*] Unnecessary `else` after `return` statement
|
||||||
|
|
|
||||||
|
77 | b = 2
|
||||||
|
78 | return
|
||||||
|
79 | else:
|
||||||
|
| ^^^^ RET505
|
||||||
|
80 | c = 3
|
||||||
|
81 | return
|
||||||
|
|
|
||||||
|
= help: Remove unnecessary `else`
|
||||||
|
|
||||||
|
ℹ Safe fix
|
||||||
|
76 76 | else:
|
||||||
|
77 77 | b = 2
|
||||||
|
78 78 | return
|
||||||
|
79 |- else:
|
||||||
|
80 |- c = 3
|
||||||
|
79 |+ c = 3
|
||||||
|
81 80 | return
|
||||||
|
82 81 |
|
||||||
|
83 82 |
|
||||||
|
|
||||||
|
RET505.py:89:9: RET505 [*] Unnecessary `else` after `return` statement
|
||||||
|
|
|
||||||
|
87 | a = 4
|
||||||
|
88 | return
|
||||||
|
89 | else:
|
||||||
|
| ^^^^ RET505
|
||||||
|
90 | b = 2
|
||||||
|
91 | else:
|
||||||
|
|
|
||||||
|
= help: Remove unnecessary `else`
|
||||||
|
|
||||||
|
ℹ Safe fix
|
||||||
|
86 86 | if y: # [no-else-return]
|
||||||
|
87 87 | a = 4
|
||||||
|
88 88 | return
|
||||||
|
89 |- else:
|
||||||
|
90 |- b = 2
|
||||||
|
89 |+ b = 2
|
||||||
|
91 90 | else:
|
||||||
|
92 91 | c = 3
|
||||||
|
93 92 | return
|
||||||
|
|
||||||
|
RET505.py:99:5: RET505 [*] Unnecessary `else` after `return` statement
|
||||||
|
|
|
||||||
|
97 | if x: # [no-else-return]
|
||||||
|
98 | return True
|
||||||
|
99 | else:
|
||||||
|
| ^^^^ RET505
|
||||||
|
100 | try:
|
||||||
|
101 | return False
|
||||||
|
|
|
||||||
|
= help: Remove unnecessary `else`
|
||||||
|
|
||||||
|
ℹ Safe fix
|
||||||
|
96 96 | def bar4(x):
|
||||||
|
97 97 | if x: # [no-else-return]
|
||||||
|
98 98 | return True
|
||||||
|
99 |- else:
|
||||||
|
100 |- try:
|
||||||
|
101 |- return False
|
||||||
|
102 |- except ValueError:
|
||||||
|
103 |- return None
|
||||||
|
99 |+ try:
|
||||||
|
100 |+ return False
|
||||||
|
101 |+ except ValueError:
|
||||||
|
102 |+ return None
|
||||||
|
104 103 |
|
||||||
|
105 104 |
|
||||||
|
106 105 | ###
|
||||||
|
|
||||||
|
RET505.py:137:5: RET505 [*] Unnecessary `else` after `return` statement
|
||||||
|
|
|
||||||
|
135 | if True:
|
||||||
|
136 | return
|
||||||
|
137 | else:
|
||||||
|
| ^^^^ RET505
|
||||||
|
138 | # comment
|
||||||
|
139 | pass
|
||||||
|
|
|
||||||
|
= help: Remove unnecessary `else`
|
||||||
|
|
||||||
|
ℹ Safe fix
|
||||||
|
134 134 | def bar4(x):
|
||||||
|
135 135 | if True:
|
||||||
|
136 136 | return
|
||||||
|
137 |- else:
|
||||||
|
138 |- # comment
|
||||||
|
139 |- pass
|
||||||
|
137 |+ # comment
|
||||||
|
138 |+ pass
|
||||||
|
140 139 |
|
||||||
|
141 140 |
|
||||||
|
142 141 | def bar5():
|
||||||
|
|
||||||
|
RET505.py:145:5: RET505 [*] Unnecessary `else` after `return` statement
|
||||||
|
|
|
||||||
|
143 | if True:
|
||||||
|
144 | return
|
||||||
|
145 | else: # comment
|
||||||
|
| ^^^^ RET505
|
||||||
|
146 | pass
|
||||||
|
|
|
||||||
|
= help: Remove unnecessary `else`
|
||||||
|
|
||||||
|
ℹ Safe fix
|
||||||
|
142 142 | def bar5():
|
||||||
|
143 143 | if True:
|
||||||
|
144 144 | return
|
||||||
|
145 |- else: # comment
|
||||||
|
146 |- pass
|
||||||
|
145 |+ # comment
|
||||||
|
146 |+ pass
|
||||||
|
147 147 |
|
||||||
|
148 148 |
|
||||||
|
149 149 | def bar6():
|
||||||
|
|
||||||
|
RET505.py:152:5: RET505 [*] Unnecessary `else` after `return` statement
|
||||||
|
|
|
||||||
|
150 | if True:
|
||||||
|
151 | return
|
||||||
|
152 | else\
|
||||||
|
| ^^^^ RET505
|
||||||
|
153 | :\
|
||||||
|
154 | # comment
|
||||||
|
|
|
||||||
|
= help: Remove unnecessary `else`
|
||||||
|
|
||||||
|
ℹ Safe fix
|
||||||
|
149 149 | def bar6():
|
||||||
|
150 150 | if True:
|
||||||
|
151 151 | return
|
||||||
|
152 |- else\
|
||||||
|
153 |- :\
|
||||||
|
154 |- # comment
|
||||||
|
155 |- pass
|
||||||
|
152 |+ # comment
|
||||||
|
153 |+ pass
|
||||||
|
156 154 |
|
||||||
|
157 155 |
|
||||||
|
158 156 | def bar7():
|
||||||
|
|
||||||
|
RET505.py:161:5: RET505 [*] Unnecessary `else` after `return` statement
|
||||||
|
|
|
||||||
|
159 | if True:
|
||||||
|
160 | return
|
||||||
|
161 | else\
|
||||||
|
| ^^^^ RET505
|
||||||
|
162 | : # comment
|
||||||
|
163 | pass
|
||||||
|
|
|
||||||
|
= help: Remove unnecessary `else`
|
||||||
|
|
||||||
|
ℹ Safe fix
|
||||||
|
158 158 | def bar7():
|
||||||
|
159 159 | if True:
|
||||||
|
160 160 | return
|
||||||
|
161 |- else\
|
||||||
|
162 |- : # comment
|
||||||
|
163 |- pass
|
||||||
|
161 |+ # comment
|
||||||
|
162 |+ pass
|
||||||
|
164 163 |
|
||||||
|
165 164 | x = 0
|
||||||
|
166 165 |
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,166 @@
|
||||||
|
---
|
||||||
|
source: crates/ruff_linter/src/rules/flake8_return/mod.rs
|
||||||
|
---
|
||||||
|
RET506.py:8:5: RET506 [*] Unnecessary `elif` after `raise` statement
|
||||||
|
|
|
||||||
|
6 | a = 1
|
||||||
|
7 | raise Exception(y)
|
||||||
|
8 | elif z:
|
||||||
|
| ^^^^ RET506
|
||||||
|
9 | b = 2
|
||||||
|
10 | raise Exception(w)
|
||||||
|
|
|
||||||
|
= help: Remove unnecessary `elif`
|
||||||
|
|
||||||
|
ℹ Safe fix
|
||||||
|
5 5 | if x: # [no-else-raise]
|
||||||
|
6 6 | a = 1
|
||||||
|
7 7 | raise Exception(y)
|
||||||
|
8 |- elif z:
|
||||||
|
8 |+ if z:
|
||||||
|
9 9 | b = 2
|
||||||
|
10 10 | raise Exception(w)
|
||||||
|
11 11 | else:
|
||||||
|
|
||||||
|
RET506.py:23:5: RET506 [*] Unnecessary `elif` after `raise` statement
|
||||||
|
|
|
||||||
|
21 | b = 2
|
||||||
|
22 | raise Exception(x)
|
||||||
|
23 | elif z:
|
||||||
|
| ^^^^ RET506
|
||||||
|
24 | raise Exception(y)
|
||||||
|
25 | else:
|
||||||
|
|
|
||||||
|
= help: Remove unnecessary `elif`
|
||||||
|
|
||||||
|
ℹ Safe fix
|
||||||
|
20 20 | else:
|
||||||
|
21 21 | b = 2
|
||||||
|
22 22 | raise Exception(x)
|
||||||
|
23 |- elif z:
|
||||||
|
23 |+ if z:
|
||||||
|
24 24 | raise Exception(y)
|
||||||
|
25 25 | else:
|
||||||
|
26 26 | c = 3
|
||||||
|
|
||||||
|
RET506.py:34:5: RET506 [*] Unnecessary `else` after `raise` statement
|
||||||
|
|
|
||||||
|
32 | a = 1
|
||||||
|
33 | raise Exception(y)
|
||||||
|
34 | else:
|
||||||
|
| ^^^^ RET506
|
||||||
|
35 | b = 2
|
||||||
|
36 | raise Exception(z)
|
||||||
|
|
|
||||||
|
= help: Remove unnecessary `else`
|
||||||
|
|
||||||
|
ℹ Safe fix
|
||||||
|
31 31 | if x: # [no-else-raise]
|
||||||
|
32 32 | a = 1
|
||||||
|
33 33 | raise Exception(y)
|
||||||
|
34 |- else:
|
||||||
|
35 |- b = 2
|
||||||
|
36 |- raise Exception(z)
|
||||||
|
34 |+ b = 2
|
||||||
|
35 |+ raise Exception(z)
|
||||||
|
37 36 |
|
||||||
|
38 37 |
|
||||||
|
39 38 | def foo3(x, y, z):
|
||||||
|
|
||||||
|
RET506.py:45:9: RET506 [*] Unnecessary `else` after `raise` statement
|
||||||
|
|
|
||||||
|
43 | b = 2
|
||||||
|
44 | raise Exception(y)
|
||||||
|
45 | else:
|
||||||
|
| ^^^^ RET506
|
||||||
|
46 | c = 3
|
||||||
|
47 | raise Exception(x)
|
||||||
|
|
|
||||||
|
= help: Remove unnecessary `else`
|
||||||
|
|
||||||
|
ℹ Safe fix
|
||||||
|
42 42 | if y: # [no-else-raise]
|
||||||
|
43 43 | b = 2
|
||||||
|
44 44 | raise Exception(y)
|
||||||
|
45 |- else:
|
||||||
|
46 |- c = 3
|
||||||
|
47 |- raise Exception(x)
|
||||||
|
45 |+ c = 3
|
||||||
|
46 |+ raise Exception(x)
|
||||||
|
48 47 | else:
|
||||||
|
49 48 | d = 4
|
||||||
|
50 49 | raise Exception(z)
|
||||||
|
|
||||||
|
RET506.py:60:5: RET506 [*] Unnecessary `else` after `raise` statement
|
||||||
|
|
|
||||||
|
58 | b = 2
|
||||||
|
59 | raise Exception(x)
|
||||||
|
60 | else:
|
||||||
|
| ^^^^ RET506
|
||||||
|
61 | c = 3
|
||||||
|
62 | raise Exception(y)
|
||||||
|
|
|
||||||
|
= help: Remove unnecessary `else`
|
||||||
|
|
||||||
|
ℹ Safe fix
|
||||||
|
57 57 | else:
|
||||||
|
58 58 | b = 2
|
||||||
|
59 59 | raise Exception(x)
|
||||||
|
60 |- else:
|
||||||
|
61 |- c = 3
|
||||||
|
60 |+ c = 3
|
||||||
|
62 61 | raise Exception(y)
|
||||||
|
63 62 |
|
||||||
|
64 63 |
|
||||||
|
|
||||||
|
RET506.py:70:9: RET506 [*] Unnecessary `else` after `raise` statement
|
||||||
|
|
|
||||||
|
68 | a = 4
|
||||||
|
69 | raise Exception(x)
|
||||||
|
70 | else:
|
||||||
|
| ^^^^ RET506
|
||||||
|
71 | b = 2
|
||||||
|
72 | else:
|
||||||
|
|
|
||||||
|
= help: Remove unnecessary `else`
|
||||||
|
|
||||||
|
ℹ Safe fix
|
||||||
|
67 67 | if y: # [no-else-raise]
|
||||||
|
68 68 | a = 4
|
||||||
|
69 69 | raise Exception(x)
|
||||||
|
70 |- else:
|
||||||
|
71 |- b = 2
|
||||||
|
70 |+ b = 2
|
||||||
|
72 71 | else:
|
||||||
|
73 72 | c = 3
|
||||||
|
74 73 | raise Exception(y)
|
||||||
|
|
||||||
|
RET506.py:80:5: RET506 [*] Unnecessary `else` after `raise` statement
|
||||||
|
|
|
||||||
|
78 | if x: # [no-else-raise]
|
||||||
|
79 | raise Exception(True)
|
||||||
|
80 | else:
|
||||||
|
| ^^^^ RET506
|
||||||
|
81 | try:
|
||||||
|
82 | raise Exception(False)
|
||||||
|
|
|
||||||
|
= help: Remove unnecessary `else`
|
||||||
|
|
||||||
|
ℹ Safe fix
|
||||||
|
77 77 | def bar4(x):
|
||||||
|
78 78 | if x: # [no-else-raise]
|
||||||
|
79 79 | raise Exception(True)
|
||||||
|
80 |- else:
|
||||||
|
81 |- try:
|
||||||
|
82 |- raise Exception(False)
|
||||||
|
83 |- except ValueError:
|
||||||
|
84 |- raise Exception(None)
|
||||||
|
80 |+ try:
|
||||||
|
81 |+ raise Exception(False)
|
||||||
|
82 |+ except ValueError:
|
||||||
|
83 |+ raise Exception(None)
|
||||||
|
85 84 |
|
||||||
|
86 85 |
|
||||||
|
87 86 | ###
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,163 @@
|
||||||
|
---
|
||||||
|
source: crates/ruff_linter/src/rules/flake8_return/mod.rs
|
||||||
|
---
|
||||||
|
RET507.py:8:9: RET507 [*] Unnecessary `elif` after `continue` statement
|
||||||
|
|
|
||||||
|
6 | if i < y: # [no-else-continue]
|
||||||
|
7 | continue
|
||||||
|
8 | elif i < w:
|
||||||
|
| ^^^^ RET507
|
||||||
|
9 | continue
|
||||||
|
10 | else:
|
||||||
|
|
|
||||||
|
= help: Remove unnecessary `elif`
|
||||||
|
|
||||||
|
ℹ Safe fix
|
||||||
|
5 5 | for i in x:
|
||||||
|
6 6 | if i < y: # [no-else-continue]
|
||||||
|
7 7 | continue
|
||||||
|
8 |- elif i < w:
|
||||||
|
8 |+ if i < w:
|
||||||
|
9 9 | continue
|
||||||
|
10 10 | else:
|
||||||
|
11 11 | a = z
|
||||||
|
|
||||||
|
RET507.py:22:9: RET507 [*] Unnecessary `elif` after `continue` statement
|
||||||
|
|
|
||||||
|
20 | b = 2
|
||||||
|
21 | continue
|
||||||
|
22 | elif z:
|
||||||
|
| ^^^^ RET507
|
||||||
|
23 | c = 2
|
||||||
|
24 | else:
|
||||||
|
|
|
||||||
|
= help: Remove unnecessary `elif`
|
||||||
|
|
||||||
|
ℹ Safe fix
|
||||||
|
19 19 | else:
|
||||||
|
20 20 | b = 2
|
||||||
|
21 21 | continue
|
||||||
|
22 |- elif z:
|
||||||
|
22 |+ if z:
|
||||||
|
23 23 | c = 2
|
||||||
|
24 24 | else:
|
||||||
|
25 25 | c = 3
|
||||||
|
|
||||||
|
RET507.py:36:9: RET507 [*] Unnecessary `else` after `continue` statement
|
||||||
|
|
|
||||||
|
34 | if i < y: # [no-else-continue]
|
||||||
|
35 | continue
|
||||||
|
36 | else:
|
||||||
|
| ^^^^ RET507
|
||||||
|
37 | a = z
|
||||||
|
|
|
||||||
|
= help: Remove unnecessary `else`
|
||||||
|
|
||||||
|
ℹ Safe fix
|
||||||
|
33 33 | for i in x:
|
||||||
|
34 34 | if i < y: # [no-else-continue]
|
||||||
|
35 35 | continue
|
||||||
|
36 |- else:
|
||||||
|
37 |- a = z
|
||||||
|
36 |+ a = z
|
||||||
|
38 37 |
|
||||||
|
39 38 |
|
||||||
|
40 39 | def foo3(x, y, z):
|
||||||
|
|
||||||
|
RET507.py:47:13: RET507 [*] Unnecessary `else` after `continue` statement
|
||||||
|
|
|
||||||
|
45 | b = 2
|
||||||
|
46 | continue
|
||||||
|
47 | else:
|
||||||
|
| ^^^^ RET507
|
||||||
|
48 | c = 3
|
||||||
|
49 | continue
|
||||||
|
|
|
||||||
|
= help: Remove unnecessary `else`
|
||||||
|
|
||||||
|
ℹ Safe fix
|
||||||
|
44 44 | if z: # [no-else-continue]
|
||||||
|
45 45 | b = 2
|
||||||
|
46 46 | continue
|
||||||
|
47 |- else:
|
||||||
|
48 |- c = 3
|
||||||
|
49 |- continue
|
||||||
|
47 |+ c = 3
|
||||||
|
48 |+ continue
|
||||||
|
50 49 | else:
|
||||||
|
51 50 | d = 4
|
||||||
|
52 51 | continue
|
||||||
|
|
||||||
|
RET507.py:63:9: RET507 [*] Unnecessary `else` after `continue` statement
|
||||||
|
|
|
||||||
|
61 | b = 2
|
||||||
|
62 | continue
|
||||||
|
63 | else:
|
||||||
|
| ^^^^ RET507
|
||||||
|
64 | c = 3
|
||||||
|
65 | continue
|
||||||
|
|
|
||||||
|
= help: Remove unnecessary `else`
|
||||||
|
|
||||||
|
ℹ Safe fix
|
||||||
|
60 60 | else:
|
||||||
|
61 61 | b = 2
|
||||||
|
62 62 | continue
|
||||||
|
63 |- else:
|
||||||
|
64 |- c = 3
|
||||||
|
63 |+ c = 3
|
||||||
|
65 64 | continue
|
||||||
|
66 65 |
|
||||||
|
67 66 |
|
||||||
|
|
||||||
|
RET507.py:74:13: RET507 [*] Unnecessary `else` after `continue` statement
|
||||||
|
|
|
||||||
|
72 | a = 4
|
||||||
|
73 | continue
|
||||||
|
74 | else:
|
||||||
|
| ^^^^ RET507
|
||||||
|
75 | b = 2
|
||||||
|
76 | else:
|
||||||
|
|
|
||||||
|
= help: Remove unnecessary `else`
|
||||||
|
|
||||||
|
ℹ Safe fix
|
||||||
|
71 71 | if y: # [no-else-continue]
|
||||||
|
72 72 | a = 4
|
||||||
|
73 73 | continue
|
||||||
|
74 |- else:
|
||||||
|
75 |- b = 2
|
||||||
|
74 |+ b = 2
|
||||||
|
76 75 | else:
|
||||||
|
77 76 | c = 3
|
||||||
|
78 77 | continue
|
||||||
|
|
||||||
|
RET507.py:85:9: RET507 [*] Unnecessary `else` after `continue` statement
|
||||||
|
|
|
||||||
|
83 | if x: # [no-else-continue]
|
||||||
|
84 | continue
|
||||||
|
85 | else:
|
||||||
|
| ^^^^ RET507
|
||||||
|
86 | try:
|
||||||
|
87 | return
|
||||||
|
|
|
||||||
|
= help: Remove unnecessary `else`
|
||||||
|
|
||||||
|
ℹ Safe fix
|
||||||
|
82 82 | for i in range(10):
|
||||||
|
83 83 | if x: # [no-else-continue]
|
||||||
|
84 84 | continue
|
||||||
|
85 |- else:
|
||||||
|
86 |- try:
|
||||||
|
87 |- return
|
||||||
|
88 |- except ValueError:
|
||||||
|
89 |- continue
|
||||||
|
85 |+ try:
|
||||||
|
86 |+ return
|
||||||
|
87 |+ except ValueError:
|
||||||
|
88 |+ continue
|
||||||
|
90 89 |
|
||||||
|
91 90 |
|
||||||
|
92 91 | def bar1(x, y, z):
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,181 @@
|
||||||
|
---
|
||||||
|
source: crates/ruff_linter/src/rules/flake8_return/mod.rs
|
||||||
|
---
|
||||||
|
RET508.py:8:9: RET508 [*] Unnecessary `elif` after `break` statement
|
||||||
|
|
|
||||||
|
6 | if i > y: # [no-else-break]
|
||||||
|
7 | break
|
||||||
|
8 | elif i > w:
|
||||||
|
| ^^^^ RET508
|
||||||
|
9 | break
|
||||||
|
10 | else:
|
||||||
|
|
|
||||||
|
= help: Remove unnecessary `elif`
|
||||||
|
|
||||||
|
ℹ Safe fix
|
||||||
|
5 5 | for i in x:
|
||||||
|
6 6 | if i > y: # [no-else-break]
|
||||||
|
7 7 | break
|
||||||
|
8 |- elif i > w:
|
||||||
|
8 |+ if i > w:
|
||||||
|
9 9 | break
|
||||||
|
10 10 | else:
|
||||||
|
11 11 | a = z
|
||||||
|
|
||||||
|
RET508.py:22:9: RET508 [*] Unnecessary `elif` after `break` statement
|
||||||
|
|
|
||||||
|
20 | b = 2
|
||||||
|
21 | break
|
||||||
|
22 | elif z:
|
||||||
|
| ^^^^ RET508
|
||||||
|
23 | c = 2
|
||||||
|
24 | else:
|
||||||
|
|
|
||||||
|
= help: Remove unnecessary `elif`
|
||||||
|
|
||||||
|
ℹ Safe fix
|
||||||
|
19 19 | else:
|
||||||
|
20 20 | b = 2
|
||||||
|
21 21 | break
|
||||||
|
22 |- elif z:
|
||||||
|
22 |+ if z:
|
||||||
|
23 23 | c = 2
|
||||||
|
24 24 | else:
|
||||||
|
25 25 | c = 3
|
||||||
|
|
||||||
|
RET508.py:33:9: RET508 [*] Unnecessary `else` after `break` statement
|
||||||
|
|
|
||||||
|
31 | if i > y: # [no-else-break]
|
||||||
|
32 | break
|
||||||
|
33 | else:
|
||||||
|
| ^^^^ RET508
|
||||||
|
34 | a = z
|
||||||
|
|
|
||||||
|
= help: Remove unnecessary `else`
|
||||||
|
|
||||||
|
ℹ Safe fix
|
||||||
|
30 30 | for i in x:
|
||||||
|
31 31 | if i > y: # [no-else-break]
|
||||||
|
32 32 | break
|
||||||
|
33 |- else:
|
||||||
|
34 |- a = z
|
||||||
|
33 |+ a = z
|
||||||
|
35 34 |
|
||||||
|
36 35 |
|
||||||
|
37 36 | def foo3(x, y, z):
|
||||||
|
|
||||||
|
RET508.py:44:13: RET508 [*] Unnecessary `else` after `break` statement
|
||||||
|
|
|
||||||
|
42 | b = 2
|
||||||
|
43 | break
|
||||||
|
44 | else:
|
||||||
|
| ^^^^ RET508
|
||||||
|
45 | c = 3
|
||||||
|
46 | break
|
||||||
|
|
|
||||||
|
= help: Remove unnecessary `else`
|
||||||
|
|
||||||
|
ℹ Safe fix
|
||||||
|
41 41 | if z: # [no-else-break]
|
||||||
|
42 42 | b = 2
|
||||||
|
43 43 | break
|
||||||
|
44 |- else:
|
||||||
|
45 |- c = 3
|
||||||
|
46 |- break
|
||||||
|
44 |+ c = 3
|
||||||
|
45 |+ break
|
||||||
|
47 46 | else:
|
||||||
|
48 47 | d = 4
|
||||||
|
49 48 | break
|
||||||
|
|
||||||
|
RET508.py:60:9: RET508 [*] Unnecessary `else` after `break` statement
|
||||||
|
|
|
||||||
|
58 | b = 2
|
||||||
|
59 | break
|
||||||
|
60 | else:
|
||||||
|
| ^^^^ RET508
|
||||||
|
61 | c = 3
|
||||||
|
62 | break
|
||||||
|
|
|
||||||
|
= help: Remove unnecessary `else`
|
||||||
|
|
||||||
|
ℹ Safe fix
|
||||||
|
57 57 | else:
|
||||||
|
58 58 | b = 2
|
||||||
|
59 59 | break
|
||||||
|
60 |- else:
|
||||||
|
61 |- c = 3
|
||||||
|
60 |+ c = 3
|
||||||
|
62 61 | break
|
||||||
|
63 62 |
|
||||||
|
64 63 |
|
||||||
|
|
||||||
|
RET508.py:71:13: RET508 [*] Unnecessary `else` after `break` statement
|
||||||
|
|
|
||||||
|
69 | a = 4
|
||||||
|
70 | break
|
||||||
|
71 | else:
|
||||||
|
| ^^^^ RET508
|
||||||
|
72 | b = 2
|
||||||
|
73 | else:
|
||||||
|
|
|
||||||
|
= help: Remove unnecessary `else`
|
||||||
|
|
||||||
|
ℹ Safe fix
|
||||||
|
68 68 | if y: # [no-else-break]
|
||||||
|
69 69 | a = 4
|
||||||
|
70 70 | break
|
||||||
|
71 |- else:
|
||||||
|
72 |- b = 2
|
||||||
|
71 |+ b = 2
|
||||||
|
73 72 | else:
|
||||||
|
74 73 | c = 3
|
||||||
|
75 74 | break
|
||||||
|
|
||||||
|
RET508.py:82:9: RET508 [*] Unnecessary `else` after `break` statement
|
||||||
|
|
|
||||||
|
80 | if x: # [no-else-break]
|
||||||
|
81 | break
|
||||||
|
82 | else:
|
||||||
|
| ^^^^ RET508
|
||||||
|
83 | try:
|
||||||
|
84 | return
|
||||||
|
|
|
||||||
|
= help: Remove unnecessary `else`
|
||||||
|
|
||||||
|
ℹ Safe fix
|
||||||
|
79 79 | for i in range(10):
|
||||||
|
80 80 | if x: # [no-else-break]
|
||||||
|
81 81 | break
|
||||||
|
82 |- else:
|
||||||
|
83 |- try:
|
||||||
|
84 |- return
|
||||||
|
85 |- except ValueError:
|
||||||
|
86 |- break
|
||||||
|
82 |+ try:
|
||||||
|
83 |+ return
|
||||||
|
84 |+ except ValueError:
|
||||||
|
85 |+ break
|
||||||
|
87 86 |
|
||||||
|
88 87 |
|
||||||
|
89 88 | ###
|
||||||
|
|
||||||
|
RET508.py:158:13: RET508 [*] Unnecessary `else` after `break` statement
|
||||||
|
|
|
||||||
|
156 | if i > w:
|
||||||
|
157 | break
|
||||||
|
158 | else:
|
||||||
|
| ^^^^ RET508
|
||||||
|
159 | a = z
|
||||||
|
|
|
||||||
|
= help: Remove unnecessary `else`
|
||||||
|
|
||||||
|
ℹ Safe fix
|
||||||
|
155 155 | else:
|
||||||
|
156 156 | if i > w:
|
||||||
|
157 157 | break
|
||||||
|
158 |- else:
|
||||||
|
159 |- a = z
|
||||||
|
158 |+ a = z
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue