Stabilize fixes for RET50{5-8} (#12840)

Fixes #10099
This commit is contained in:
Micha Reiser 2024-08-12 16:14:07 +02:00
parent 7defc0d136
commit eb9c7ae869
13 changed files with 642 additions and 1106 deletions

View file

@ -244,3 +244,11 @@ def f():
return True return True
else: else:
return False return False
def has_untracted_files():
if b'Untracked files' in result.stdout:
return True
else:
\
return False

View file

@ -317,7 +317,13 @@ pub(crate) fn adjust_indentation(
line_indentation.contains('\t') && line_indentation.contains(' ') line_indentation.contains('\t') && line_indentation.contains(' ')
}); });
if contains_multiline_string || mixed_indentation { // For simple cases, try to do a manual dedent.
if !contains_multiline_string && !mixed_indentation {
if let Some(dedent) = dedent_to(contents, indentation) {
return Ok(dedent);
}
}
let module_text = format!("def f():{}{contents}", stylist.line_ending().as_str()); let module_text = format!("def f():{}{contents}", stylist.line_ending().as_str());
let mut tree = match_statement(&module_text)?; let mut tree = match_statement(&module_text)?;
@ -333,10 +339,6 @@ pub(crate) fn adjust_indentation(
.unwrap() .unwrap()
.to_string(); .to_string();
Ok(module_text) Ok(module_text)
} else {
// Otherwise, we can do a simple adjustment ourselves.
Ok(dedent_to(contents, indentation))
}
} }
/// Determine if a vector contains only one, specific element. /// Determine if a vector contains only one, specific element.

View file

@ -36,10 +36,6 @@ mod tests {
} }
#[test_case(Rule::ImplicitReturn, Path::new("RET503.py"))] #[test_case(Rule::ImplicitReturn, Path::new("RET503.py"))]
#[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<()> { fn preview_rules(rule_code: Rule, path: &Path) -> Result<()> {
let snapshot = format!( let snapshot = format!(
"preview__{}_{}", "preview__{}_{}",

View file

@ -672,7 +672,6 @@ fn superfluous_else_node(
.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(|| { diagnostic.try_set_fix(|| {
remove_else( remove_else(
elif_else, elif_else,
@ -681,7 +680,6 @@ fn superfluous_else_node(
checker.stylist(), checker.stylist(),
) )
}); });
}
checker.diagnostics.push(diagnostic); checker.diagnostics.push(diagnostic);
} }
return true; return true;
@ -692,7 +690,6 @@ fn superfluous_else_node(
.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(|| { diagnostic.try_set_fix(|| {
remove_else( remove_else(
elif_else, elif_else,
@ -701,7 +698,7 @@ fn superfluous_else_node(
checker.stylist(), checker.stylist(),
) )
}); });
}
checker.diagnostics.push(diagnostic); checker.diagnostics.push(diagnostic);
} }
return true; return true;
@ -712,7 +709,6 @@ fn superfluous_else_node(
.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(|| { diagnostic.try_set_fix(|| {
remove_else( remove_else(
elif_else, elif_else,
@ -721,7 +717,7 @@ fn superfluous_else_node(
checker.stylist(), checker.stylist(),
) )
}); });
}
checker.diagnostics.push(diagnostic); checker.diagnostics.push(diagnostic);
} }
return true; return true;
@ -732,7 +728,6 @@ fn superfluous_else_node(
.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(|| { diagnostic.try_set_fix(|| {
remove_else( remove_else(
elif_else, elif_else,
@ -741,7 +736,7 @@ fn superfluous_else_node(
checker.stylist(), checker.stylist(),
) )
}); });
}
checker.diagnostics.push(diagnostic); checker.diagnostics.push(diagnostic);
} }
return true; return true;

View file

@ -1,7 +1,7 @@
--- ---
source: crates/ruff_linter/src/rules/flake8_return/mod.rs source: crates/ruff_linter/src/rules/flake8_return/mod.rs
--- ---
RET505.py:8:5: RET505 Unnecessary `elif` after `return` statement RET505.py:8:5: RET505 [*] Unnecessary `elif` after `return` statement
| |
6 | a = 1 6 | a = 1
7 | return y 7 | return y
@ -12,7 +12,17 @@ RET505.py:8:5: RET505 Unnecessary `elif` after `return` statement
| |
= help: Remove unnecessary `elif` = help: Remove unnecessary `elif`
RET505.py:23:5: RET505 Unnecessary `elif` after `return` statement 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 21 | b = 2
22 | return 22 | return
@ -23,7 +33,17 @@ RET505.py:23:5: RET505 Unnecessary `elif` after `return` statement
| |
= help: Remove unnecessary `elif` = help: Remove unnecessary `elif`
RET505.py:41:5: RET505 Unnecessary `elif` after `return` statement 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 39 | a = 1
40 | return y 40 | return y
@ -34,7 +54,17 @@ RET505.py:41:5: RET505 Unnecessary `elif` after `return` statement
| |
= help: Remove unnecessary `elif` = help: Remove unnecessary `elif`
RET505.py:53:5: RET505 Unnecessary `else` after `return` statement 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 51 | a = 1
52 | return y 52 | return y
@ -45,7 +75,20 @@ RET505.py:53:5: RET505 Unnecessary `else` after `return` statement
| |
= help: Remove unnecessary `else` = help: Remove unnecessary `else`
RET505.py:64:9: RET505 Unnecessary `else` after `return` statement 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 62 | b = 2
63 | return y 63 | return y
@ -56,7 +99,20 @@ RET505.py:64:9: RET505 Unnecessary `else` after `return` statement
| |
= help: Remove unnecessary `else` = help: Remove unnecessary `else`
RET505.py:79:5: RET505 Unnecessary `else` after `return` statement 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 77 | b = 2
78 | return 78 | return
@ -67,7 +123,18 @@ RET505.py:79:5: RET505 Unnecessary `else` after `return` statement
| |
= help: Remove unnecessary `else` = help: Remove unnecessary `else`
RET505.py:89:9: RET505 Unnecessary `else` after `return` statement 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 87 | a = 4
88 | return 88 | return
@ -78,7 +145,18 @@ RET505.py:89:9: RET505 Unnecessary `else` after `return` statement
| |
= help: Remove unnecessary `else` = help: Remove unnecessary `else`
RET505.py:99:5: RET505 Unnecessary `else` after `return` statement 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] 97 | if x: # [no-else-return]
98 | return True 98 | return True
@ -89,7 +167,24 @@ RET505.py:99:5: RET505 Unnecessary `else` after `return` statement
| |
= help: Remove unnecessary `else` = help: Remove unnecessary `else`
RET505.py:109:5: RET505 Unnecessary `else` after `return` statement 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 | def fibo(n):
RET505.py:109:5: RET505 [*] Unnecessary `else` after `return` statement
| |
107 | if n<2: 107 | if n<2:
108 | return n; 108 | return n;
@ -100,7 +195,20 @@ RET505.py:109:5: RET505 Unnecessary `else` after `return` statement
| |
= help: Remove unnecessary `else` = help: Remove unnecessary `else`
RET505.py:145:5: RET505 Unnecessary `else` after `return` statement Safe fix
106 106 | def fibo(n):
107 107 | if n<2:
108 108 | return n;
109 |- else:
110 |- last = 1;
111 |- last2 = 0;
109 |+ last = 1;
110 |+ last2 = 0;
112 111 |
113 112 |
114 113 | ###
RET505.py:145:5: RET505 [*] Unnecessary `else` after `return` statement
| |
143 | if True: 143 | if True:
144 | return 144 | return
@ -111,7 +219,20 @@ RET505.py:145:5: RET505 Unnecessary `else` after `return` statement
| |
= help: Remove unnecessary `else` = help: Remove unnecessary `else`
RET505.py:153:5: RET505 Unnecessary `else` after `return` statement Safe fix
142 142 | def bar4(x):
143 143 | if True:
144 144 | return
145 |- else:
146 |- # comment
147 |- pass
145 |+ # comment
146 |+ pass
148 147 |
149 148 |
150 149 | def bar5():
RET505.py:153:5: RET505 [*] Unnecessary `else` after `return` statement
| |
151 | if True: 151 | if True:
152 | return 152 | return
@ -121,7 +242,19 @@ RET505.py:153:5: RET505 Unnecessary `else` after `return` statement
| |
= help: Remove unnecessary `else` = help: Remove unnecessary `else`
RET505.py:160:5: RET505 Unnecessary `else` after `return` statement Safe fix
150 150 | def bar5():
151 151 | if True:
152 152 | return
153 |- else: # comment
154 |- pass
153 |+ # comment
154 |+ pass
155 155 |
156 156 |
157 157 | def bar6():
RET505.py:160:5: RET505 [*] Unnecessary `else` after `return` statement
| |
158 | if True: 158 | if True:
159 | return 159 | return
@ -132,7 +265,21 @@ RET505.py:160:5: RET505 Unnecessary `else` after `return` statement
| |
= help: Remove unnecessary `else` = help: Remove unnecessary `else`
RET505.py:169:5: RET505 Unnecessary `else` after `return` statement Safe fix
157 157 | def bar6():
158 158 | if True:
159 159 | return
160 |- else\
161 |- :\
162 |- # comment
163 |- pass
160 |+ # comment
161 |+ pass
164 162 |
165 163 |
166 164 | def bar7():
RET505.py:169:5: RET505 [*] Unnecessary `else` after `return` statement
| |
167 | if True: 167 | if True:
168 | return 168 | return
@ -143,7 +290,20 @@ RET505.py:169:5: RET505 Unnecessary `else` after `return` statement
| |
= help: Remove unnecessary `else` = help: Remove unnecessary `else`
RET505.py:177:5: RET505 Unnecessary `else` after `return` statement Safe fix
166 166 | def bar7():
167 167 | if True:
168 168 | return
169 |- else\
170 |- : # comment
171 |- pass
169 |+ # comment
170 |+ pass
172 171 |
173 172 |
174 173 | def bar8():
RET505.py:177:5: RET505 [*] Unnecessary `else` after `return` statement
| |
175 | if True: 175 | if True:
176 | return 176 | return
@ -152,7 +312,17 @@ RET505.py:177:5: RET505 Unnecessary `else` after `return` statement
| |
= help: Remove unnecessary `else` = help: Remove unnecessary `else`
RET505.py:183:5: RET505 Unnecessary `else` after `return` statement Safe fix
174 174 | def bar8():
175 175 | if True:
176 176 | return
177 |- else: pass
177 |+ pass
178 178 |
179 179 |
180 180 | def bar9():
RET505.py:183:5: RET505 [*] Unnecessary `else` after `return` statement
| |
181 | if True: 181 | if True:
182 | return 182 | return
@ -162,7 +332,18 @@ RET505.py:183:5: RET505 Unnecessary `else` after `return` statement
| |
= help: Remove unnecessary `else` = help: Remove unnecessary `else`
RET505.py:200:5: RET505 Unnecessary `else` after `return` statement Safe fix
180 180 | def bar9():
181 181 | if True:
182 182 | return
183 |- else:\
184 |- pass
183 |+ pass
185 184 |
186 185 |
187 186 | x = 0
RET505.py:200:5: RET505 [*] Unnecessary `else` after `return` statement
| |
198 | def sb(self): 198 | def sb(self):
199 | if self._sb is not None: return self._sb 199 | if self._sb is not None: return self._sb
@ -171,7 +352,17 @@ RET505.py:200:5: RET505 Unnecessary `else` after `return` statement
| |
= help: Remove unnecessary `else` = help: Remove unnecessary `else`
RET505.py:207:5: RET505 Unnecessary `else` after `return` statement Safe fix
197 197 | # Regression test for: https://github.com/astral-sh/ruff/issues/9732
198 198 | def sb(self):
199 199 | if self._sb is not None: return self._sb
200 |- else: self._sb = '\033[01;%dm'; self._sa = '\033[0;0m';
200 |+ self._sb = '\033[01;%dm'; self._sa = '\033[0;0m';
201 201 |
202 202 |
203 203 | def indent(x, y, w, z):
RET505.py:207:5: RET505 [*] Unnecessary `else` after `return` statement
| |
205 | a = 1 205 | a = 1
206 | return y 206 | return y
@ -182,7 +373,21 @@ RET505.py:207:5: RET505 Unnecessary `else` after `return` statement
| |
= help: Remove unnecessary `else` = help: Remove unnecessary `else`
RET505.py:217:5: RET505 Unnecessary `else` after `return` statement Safe fix
204 204 | if x: # [no-else-return]
205 205 | a = 1
206 206 | return y
207 |- else:
208 207 |
209 |- c = 3
210 |- return z
208 |+ c = 3
209 |+ return z
211 210 |
212 211 |
213 212 | def indent(x, y, w, z):
RET505.py:217:5: RET505 [*] Unnecessary `else` after `return` statement
| |
215 | a = 1 215 | a = 1
216 | return y 216 | return y
@ -193,7 +398,22 @@ RET505.py:217:5: RET505 Unnecessary `else` after `return` statement
| |
= help: Remove unnecessary `else` = help: Remove unnecessary `else`
RET505.py:227:5: RET505 Unnecessary `else` after `return` statement Safe fix
214 214 | if x: # [no-else-return]
215 215 | a = 1
216 216 | return y
217 |- else:
218 |- # comment
219 |- c = 3
220 |- return z
217 |+ # comment
218 |+ c = 3
219 |+ return z
221 220 |
222 221 |
223 222 | def indent(x, y, w, z):
RET505.py:227:5: RET505 [*] Unnecessary `else` after `return` statement
| |
225 | a = 1 225 | a = 1
226 | return y 226 | return y
@ -204,7 +424,22 @@ RET505.py:227:5: RET505 Unnecessary `else` after `return` statement
| |
= help: Remove unnecessary `else` = help: Remove unnecessary `else`
RET505.py:237:5: RET505 Unnecessary `else` after `return` statement Safe fix
224 224 | if x: # [no-else-return]
225 225 | a = 1
226 226 | return y
227 |- else:
228 |- # comment
229 |- c = 3
230 |- return z
227 |+ # comment
228 |+ c = 3
229 |+ return z
231 230 |
232 231 |
233 232 | def indent(x, y, w, z):
RET505.py:237:5: RET505 [*] Unnecessary `else` after `return` statement
| |
235 | a = 1 235 | a = 1
236 | return y 236 | return y
@ -215,7 +450,21 @@ RET505.py:237:5: RET505 Unnecessary `else` after `return` statement
| |
= help: Remove unnecessary `else` = help: Remove unnecessary `else`
RET505.py:245:2: RET505 Unnecessary `else` after `return` statement Safe fix
234 234 | if x: # [no-else-return]
235 235 | a = 1
236 236 | return y
237 |- else:
238 237 | # comment
239 |- c = 3
240 |- return z
238 |+ c = 3
239 |+ return z
241 240 |
242 241 | def f():
243 242 | if True:
RET505.py:245:2: RET505 [*] Unnecessary `else` after `return` statement
| |
243 | if True: 243 | if True:
244 | return True 244 | return True
@ -224,3 +473,25 @@ RET505.py:245:2: RET505 Unnecessary `else` after `return` statement
246 | return False 246 | return False
| |
= help: Remove unnecessary `else` = help: Remove unnecessary `else`
Safe fix
242 242 | def f():
243 243 | if True:
244 244 | return True
245 |- else:
246 |- return False
245 |+ return False
247 246 |
248 247 |
249 248 | def has_untracted_files():
RET505.py:252:5: RET505 Unnecessary `else` after `return` statement
|
250 | if b'Untracked files' in result.stdout:
251 | return True
252 | else:
| ^^^^ RET505
253 | \
254 | return False
|
= help: Remove unnecessary `else`

View file

@ -1,7 +1,7 @@
--- ---
source: crates/ruff_linter/src/rules/flake8_return/mod.rs source: crates/ruff_linter/src/rules/flake8_return/mod.rs
--- ---
RET506.py:8:5: RET506 Unnecessary `elif` after `raise` statement RET506.py:8:5: RET506 [*] Unnecessary `elif` after `raise` statement
| |
6 | a = 1 6 | a = 1
7 | raise Exception(y) 7 | raise Exception(y)
@ -12,7 +12,17 @@ RET506.py:8:5: RET506 Unnecessary `elif` after `raise` statement
| |
= help: Remove unnecessary `elif` = help: Remove unnecessary `elif`
RET506.py:23:5: RET506 Unnecessary `elif` after `raise` statement 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 21 | b = 2
22 | raise Exception(x) 22 | raise Exception(x)
@ -23,7 +33,17 @@ RET506.py:23:5: RET506 Unnecessary `elif` after `raise` statement
| |
= help: Remove unnecessary `elif` = help: Remove unnecessary `elif`
RET506.py:34:5: RET506 Unnecessary `else` after `raise` statement 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 32 | a = 1
33 | raise Exception(y) 33 | raise Exception(y)
@ -34,7 +54,20 @@ RET506.py:34:5: RET506 Unnecessary `else` after `raise` statement
| |
= help: Remove unnecessary `else` = help: Remove unnecessary `else`
RET506.py:45:9: RET506 Unnecessary `else` after `raise` statement 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 43 | b = 2
44 | raise Exception(y) 44 | raise Exception(y)
@ -45,7 +78,20 @@ RET506.py:45:9: RET506 Unnecessary `else` after `raise` statement
| |
= help: Remove unnecessary `else` = help: Remove unnecessary `else`
RET506.py:60:5: RET506 Unnecessary `else` after `raise` statement 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 58 | b = 2
59 | raise Exception(x) 59 | raise Exception(x)
@ -56,7 +102,18 @@ RET506.py:60:5: RET506 Unnecessary `else` after `raise` statement
| |
= help: Remove unnecessary `else` = help: Remove unnecessary `else`
RET506.py:70:9: RET506 Unnecessary `else` after `raise` statement 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 68 | a = 4
69 | raise Exception(x) 69 | raise Exception(x)
@ -67,7 +124,18 @@ RET506.py:70:9: RET506 Unnecessary `else` after `raise` statement
| |
= help: Remove unnecessary `else` = help: Remove unnecessary `else`
RET506.py:80:5: RET506 Unnecessary `else` after `raise` statement 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] 78 | if x: # [no-else-raise]
79 | raise Exception(True) 79 | raise Exception(True)
@ -78,4 +146,19 @@ RET506.py:80:5: RET506 Unnecessary `else` after `raise` statement
| |
= help: Remove unnecessary `else` = 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 | ###

View file

@ -1,7 +1,7 @@
--- ---
source: crates/ruff_linter/src/rules/flake8_return/mod.rs source: crates/ruff_linter/src/rules/flake8_return/mod.rs
--- ---
RET507.py:8:9: RET507 Unnecessary `elif` after `continue` statement RET507.py:8:9: RET507 [*] Unnecessary `elif` after `continue` statement
| |
6 | if i < y: # [no-else-continue] 6 | if i < y: # [no-else-continue]
7 | continue 7 | continue
@ -12,7 +12,17 @@ RET507.py:8:9: RET507 Unnecessary `elif` after `continue` statement
| |
= help: Remove unnecessary `elif` = help: Remove unnecessary `elif`
RET507.py:22:9: RET507 Unnecessary `elif` after `continue` statement 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 20 | b = 2
21 | continue 21 | continue
@ -23,7 +33,17 @@ RET507.py:22:9: RET507 Unnecessary `elif` after `continue` statement
| |
= help: Remove unnecessary `elif` = help: Remove unnecessary `elif`
RET507.py:36:9: RET507 Unnecessary `else` after `continue` statement 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] 34 | if i < y: # [no-else-continue]
35 | continue 35 | continue
@ -33,7 +53,18 @@ RET507.py:36:9: RET507 Unnecessary `else` after `continue` statement
| |
= help: Remove unnecessary `else` = help: Remove unnecessary `else`
RET507.py:47:13: RET507 Unnecessary `else` after `continue` statement 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 45 | b = 2
46 | continue 46 | continue
@ -44,7 +75,20 @@ RET507.py:47:13: RET507 Unnecessary `else` after `continue` statement
| |
= help: Remove unnecessary `else` = help: Remove unnecessary `else`
RET507.py:63:9: RET507 Unnecessary `else` after `continue` statement 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 61 | b = 2
62 | continue 62 | continue
@ -55,7 +99,18 @@ RET507.py:63:9: RET507 Unnecessary `else` after `continue` statement
| |
= help: Remove unnecessary `else` = help: Remove unnecessary `else`
RET507.py:74:13: RET507 Unnecessary `else` after `continue` statement 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 72 | a = 4
73 | continue 73 | continue
@ -66,7 +121,18 @@ RET507.py:74:13: RET507 Unnecessary `else` after `continue` statement
| |
= help: Remove unnecessary `else` = help: Remove unnecessary `else`
RET507.py:85:9: RET507 Unnecessary `else` after `continue` statement 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] 83 | if x: # [no-else-continue]
84 | continue 84 | continue
@ -77,4 +143,19 @@ RET507.py:85:9: RET507 Unnecessary `else` after `continue` statement
| |
= help: Remove unnecessary `else` = 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):

View file

@ -1,7 +1,7 @@
--- ---
source: crates/ruff_linter/src/rules/flake8_return/mod.rs source: crates/ruff_linter/src/rules/flake8_return/mod.rs
--- ---
RET508.py:8:9: RET508 Unnecessary `elif` after `break` statement RET508.py:8:9: RET508 [*] Unnecessary `elif` after `break` statement
| |
6 | if i > y: # [no-else-break] 6 | if i > y: # [no-else-break]
7 | break 7 | break
@ -12,7 +12,17 @@ RET508.py:8:9: RET508 Unnecessary `elif` after `break` statement
| |
= help: Remove unnecessary `elif` = help: Remove unnecessary `elif`
RET508.py:22:9: RET508 Unnecessary `elif` after `break` statement 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 20 | b = 2
21 | break 21 | break
@ -23,7 +33,17 @@ RET508.py:22:9: RET508 Unnecessary `elif` after `break` statement
| |
= help: Remove unnecessary `elif` = help: Remove unnecessary `elif`
RET508.py:33:9: RET508 Unnecessary `else` after `break` statement 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] 31 | if i > y: # [no-else-break]
32 | break 32 | break
@ -33,7 +53,18 @@ RET508.py:33:9: RET508 Unnecessary `else` after `break` statement
| |
= help: Remove unnecessary `else` = help: Remove unnecessary `else`
RET508.py:44:13: RET508 Unnecessary `else` after `break` statement 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 42 | b = 2
43 | break 43 | break
@ -44,7 +75,20 @@ RET508.py:44:13: RET508 Unnecessary `else` after `break` statement
| |
= help: Remove unnecessary `else` = help: Remove unnecessary `else`
RET508.py:60:9: RET508 Unnecessary `else` after `break` statement 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 58 | b = 2
59 | break 59 | break
@ -55,7 +99,18 @@ RET508.py:60:9: RET508 Unnecessary `else` after `break` statement
| |
= help: Remove unnecessary `else` = help: Remove unnecessary `else`
RET508.py:71:13: RET508 Unnecessary `else` after `break` statement 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 69 | a = 4
70 | break 70 | break
@ -66,7 +121,18 @@ RET508.py:71:13: RET508 Unnecessary `else` after `break` statement
| |
= help: Remove unnecessary `else` = help: Remove unnecessary `else`
RET508.py:82:9: RET508 Unnecessary `else` after `break` statement 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] 80 | if x: # [no-else-break]
81 | break 81 | break
@ -77,7 +143,24 @@ RET508.py:82:9: RET508 Unnecessary `else` after `break` statement
| |
= help: Remove unnecessary `else` = help: Remove unnecessary `else`
RET508.py:158:13: RET508 Unnecessary `else` after `break` statement 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: 156 | if i > w:
157 | break 157 | break
@ -87,4 +170,10 @@ RET508.py:158:13: RET508 Unnecessary `else` after `break` statement
| |
= help: Remove unnecessary `else` = 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

View file

@ -1,483 +0,0 @@
---
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 | def fibo(n):
RET505.py:109:5: RET505 [*] Unnecessary `else` after `return` statement
|
107 | if n<2:
108 | return n;
109 | else:
| ^^^^ RET505
110 | last = 1;
111 | last2 = 0;
|
= help: Remove unnecessary `else`
Safe fix
106 106 | def fibo(n):
107 107 | if n<2:
108 108 | return n;
109 |- else:
110 |- last = 1;
111 |- last2 = 0;
109 |+ last = 1;
110 |+ last2 = 0;
112 111 |
113 112 |
114 113 | ###
RET505.py:145:5: RET505 [*] Unnecessary `else` after `return` statement
|
143 | if True:
144 | return
145 | else:
| ^^^^ RET505
146 | # comment
147 | pass
|
= help: Remove unnecessary `else`
Safe fix
142 142 | def bar4(x):
143 143 | if True:
144 144 | return
145 |- else:
146 |- # comment
147 |- pass
145 |+ # comment
146 |+ pass
148 147 |
149 148 |
150 149 | def bar5():
RET505.py:153:5: RET505 [*] Unnecessary `else` after `return` statement
|
151 | if True:
152 | return
153 | else: # comment
| ^^^^ RET505
154 | pass
|
= help: Remove unnecessary `else`
Safe fix
150 150 | def bar5():
151 151 | if True:
152 152 | return
153 |- else: # comment
154 |- pass
153 |+ # comment
154 |+ pass
155 155 |
156 156 |
157 157 | def bar6():
RET505.py:160:5: RET505 [*] Unnecessary `else` after `return` statement
|
158 | if True:
159 | return
160 | else\
| ^^^^ RET505
161 | :\
162 | # comment
|
= help: Remove unnecessary `else`
Safe fix
157 157 | def bar6():
158 158 | if True:
159 159 | return
160 |- else\
161 |- :\
162 |- # comment
163 |- pass
160 |+ # comment
161 |+ pass
164 162 |
165 163 |
166 164 | def bar7():
RET505.py:169:5: RET505 [*] Unnecessary `else` after `return` statement
|
167 | if True:
168 | return
169 | else\
| ^^^^ RET505
170 | : # comment
171 | pass
|
= help: Remove unnecessary `else`
Safe fix
166 166 | def bar7():
167 167 | if True:
168 168 | return
169 |- else\
170 |- : # comment
171 |- pass
169 |+ # comment
170 |+ pass
172 171 |
173 172 |
174 173 | def bar8():
RET505.py:177:5: RET505 [*] Unnecessary `else` after `return` statement
|
175 | if True:
176 | return
177 | else: pass
| ^^^^ RET505
|
= help: Remove unnecessary `else`
Safe fix
174 174 | def bar8():
175 175 | if True:
176 176 | return
177 |- else: pass
177 |+ pass
178 178 |
179 179 |
180 180 | def bar9():
RET505.py:183:5: RET505 [*] Unnecessary `else` after `return` statement
|
181 | if True:
182 | return
183 | else:\
| ^^^^ RET505
184 | pass
|
= help: Remove unnecessary `else`
Safe fix
180 180 | def bar9():
181 181 | if True:
182 182 | return
183 |- else:\
184 |- pass
183 |+ pass
185 184 |
186 185 |
187 186 | x = 0
RET505.py:200:5: RET505 [*] Unnecessary `else` after `return` statement
|
198 | def sb(self):
199 | if self._sb is not None: return self._sb
200 | else: self._sb = '\033[01;%dm'; self._sa = '\033[0;0m';
| ^^^^ RET505
|
= help: Remove unnecessary `else`
Safe fix
197 197 | # Regression test for: https://github.com/astral-sh/ruff/issues/9732
198 198 | def sb(self):
199 199 | if self._sb is not None: return self._sb
200 |- else: self._sb = '\033[01;%dm'; self._sa = '\033[0;0m';
200 |+ self._sb = '\033[01;%dm'; self._sa = '\033[0;0m';
201 201 |
202 202 |
203 203 | def indent(x, y, w, z):
RET505.py:207:5: RET505 [*] Unnecessary `else` after `return` statement
|
205 | a = 1
206 | return y
207 | else:
| ^^^^ RET505
208 |
209 | c = 3
|
= help: Remove unnecessary `else`
Safe fix
204 204 | if x: # [no-else-return]
205 205 | a = 1
206 206 | return y
207 |- else:
208 207 |
209 |- c = 3
210 |- return z
208 |+ c = 3
209 |+ return z
211 210 |
212 211 |
213 212 | def indent(x, y, w, z):
RET505.py:217:5: RET505 [*] Unnecessary `else` after `return` statement
|
215 | a = 1
216 | return y
217 | else:
| ^^^^ RET505
218 | # comment
219 | c = 3
|
= help: Remove unnecessary `else`
Safe fix
214 214 | if x: # [no-else-return]
215 215 | a = 1
216 216 | return y
217 |- else:
218 |- # comment
219 |- c = 3
220 |- return z
217 |+ # comment
218 |+ c = 3
219 |+ return z
221 220 |
222 221 |
223 222 | def indent(x, y, w, z):
RET505.py:227:5: RET505 [*] Unnecessary `else` after `return` statement
|
225 | a = 1
226 | return y
227 | else:
| ^^^^ RET505
228 | # comment
229 | c = 3
|
= help: Remove unnecessary `else`
Safe fix
224 224 | if x: # [no-else-return]
225 225 | a = 1
226 226 | return y
227 |- else:
228 |- # comment
229 |- c = 3
230 |- return z
227 |+ # comment
228 |+ c = 3
229 |+ return z
231 230 |
232 231 |
233 232 | def indent(x, y, w, z):
RET505.py:237:5: RET505 [*] Unnecessary `else` after `return` statement
|
235 | a = 1
236 | return y
237 | else:
| ^^^^ RET505
238 | # comment
239 | c = 3
|
= help: Remove unnecessary `else`
Safe fix
234 234 | if x: # [no-else-return]
235 235 | a = 1
236 236 | return y
237 |- else:
238 237 | # comment
239 |- c = 3
240 |- return z
238 |+ c = 3
239 |+ return z
241 240 |
242 241 | def f():
243 242 | if True:
RET505.py:245:2: RET505 [*] Unnecessary `else` after `return` statement
|
243 | if True:
244 | return True
245 | else:
| ^^^^ RET505
246 | return False
|
= help: Remove unnecessary `else`
Safe fix
242 242 | def f():
243 243 | if True:
244 244 | return True
245 |- else:
246 |- return False
245 |+ return False

View file

@ -1,166 +0,0 @@
---
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 | ###

View file

@ -1,163 +0,0 @@
---
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):

View file

@ -1,181 +0,0 @@
---
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

View file

@ -137,7 +137,7 @@ pub fn dedent(text: &str) -> Cow<'_, str> {
/// ///
/// # Panics /// # Panics
/// If the first line is indented by less than the provided indent. /// If the first line is indented by less than the provided indent.
pub fn dedent_to(text: &str, indent: &str) -> String { pub fn dedent_to(text: &str, indent: &str) -> Option<String> {
// Look at the indentation of the first non-empty line, to determine the "baseline" indentation. // Look at the indentation of the first non-empty line, to determine the "baseline" indentation.
let existing_indent_len = text let existing_indent_len = text
.universal_newlines() .universal_newlines()
@ -151,6 +151,10 @@ pub fn dedent_to(text: &str, indent: &str) -> String {
}) })
.unwrap_or_default(); .unwrap_or_default();
if existing_indent_len < indent.len() {
return None;
}
// Determine the amount of indentation to remove. // Determine the amount of indentation to remove.
let dedent_len = existing_indent_len - indent.len(); let dedent_len = existing_indent_len - indent.len();
@ -173,7 +177,7 @@ pub fn dedent_to(text: &str, indent: &str) -> String {
} }
} }
} }
result Some(result)
} }
#[cfg(test)] #[cfg(test)]
@ -414,7 +418,7 @@ mod tests {
"", "",
" baz" " baz"
].join("\n"); ].join("\n");
assert_eq!(dedent_to(&x, " "), y); assert_eq!(dedent_to(&x, " "), Some(y));
let x = [ let x = [
" foo", " foo",
@ -426,6 +430,6 @@ mod tests {
" bar", " bar",
"baz" "baz"
].join("\n"); ].join("\n");
assert_eq!(dedent_to(&x, ""), y); assert_eq!(dedent_to(&x, ""), Some(y));
} }
} }