Skip to content

Commit 6fce0fd

Browse files
committed
Remove remaining unwrap() and expect() calls in generate_fix()
1 parent 0b28a2e commit 6fce0fd

File tree

1 file changed

+12
-7
lines changed

1 file changed

+12
-7
lines changed

crates/ruff_linter/src/rules/flake8_pyi/rules/generic_not_last_base_class.rs

+12-7
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
use anyhow::Context;
2+
13
use ruff_diagnostics::{Diagnostic, Edit, Fix, FixAvailability, Violation};
24
use ruff_macros::{derive_message_formats, violation};
35
use ruff_python_ast::helpers::map_subscript;
@@ -97,27 +99,27 @@ pub(crate) fn generic_not_last_base_class(checker: &mut Checker, class_def: &Stm
9799

98100
// No fix if multiple generics are seen in the class bases.
99101
if generic_base_iter.next().is_none() {
100-
diagnostic.set_fix(generate_fix(generic_base, last_base, checker.locator()));
102+
diagnostic.try_set_fix(|| generate_fix(generic_base, last_base, checker.locator()));
101103
}
102104

103105
checker.diagnostics.push(diagnostic);
104106
}
105107

106-
fn generate_fix(generic_base: &Expr, last_base: &Expr, locator: &Locator) -> Fix {
108+
fn generate_fix(generic_base: &Expr, last_base: &Expr, locator: &Locator) -> anyhow::Result<Fix> {
107109
let comma_after_generic_base = generic_base.end().to_usize()
108110
+ locator
109111
.after(generic_base.end())
110112
.find(',')
111-
.expect("Comma must always exist after generic base");
113+
.context("Comma must always exist after generic base")?;
112114

113115
let last_whitespace = (comma_after_generic_base + 1)
114116
+ locator.contents()[comma_after_generic_base + 1..]
115117
.bytes()
116118
.position(|b| !b.is_ascii_whitespace())
117-
.expect("Non whitespace character must always exist after Generic[]");
119+
.context("Non whitespace character must always exist after Generic[]")?;
118120

119-
let comma_after_generic_base: u32 = comma_after_generic_base.try_into().unwrap();
120-
let last_whitespace: u32 = last_whitespace.try_into().unwrap();
121+
let comma_after_generic_base: u32 = comma_after_generic_base.try_into()?;
122+
let last_whitespace: u32 = last_whitespace.try_into()?;
121123

122124
let base_deletion = Edit::deletion(generic_base.start(), generic_base.end());
123125
let base_comma_deletion =
@@ -126,5 +128,8 @@ fn generate_fix(generic_base: &Expr, last_base: &Expr, locator: &Locator) -> Fix
126128
format!(", {}", locator.slice(generic_base.range())),
127129
last_base.end(),
128130
);
129-
Fix::safe_edits(insertion, [base_deletion, base_comma_deletion])
131+
Ok(Fix::safe_edits(
132+
insertion,
133+
[base_deletion, base_comma_deletion],
134+
))
130135
}

0 commit comments

Comments
 (0)