mirror of
https://github.com/rust-lang/cargo
synced 2024-10-01 05:23:56 +00:00
Add CodeFix::apply_solution
and impl Clone
This commit is contained in:
parent
06daef65fa
commit
5a15397611
2
Cargo.lock
generated
2
Cargo.lock
generated
|
@ -2943,7 +2943,7 @@ checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2"
|
|||
|
||||
[[package]]
|
||||
name = "rustfix"
|
||||
version = "0.8.4"
|
||||
version = "0.8.5"
|
||||
dependencies = [
|
||||
"anyhow",
|
||||
"proptest",
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
[package]
|
||||
name = "rustfix"
|
||||
version = "0.8.4"
|
||||
version = "0.8.5"
|
||||
authors = [
|
||||
"Pascal Hertleif <killercup@gmail.com>",
|
||||
"Oliver Schneider <oli-obk@users.noreply.github.com>",
|
||||
|
|
|
@ -213,6 +213,7 @@ pub fn collect_suggestions<S: ::std::hash::BuildHasher>(
|
|||
/// 1. Feeds the source of a file to [`CodeFix::new`].
|
||||
/// 2. Calls [`CodeFix::apply`] to apply suggestions to the source code.
|
||||
/// 3. Calls [`CodeFix::finish`] to get the "fixed" code.
|
||||
#[derive(Clone)]
|
||||
pub struct CodeFix {
|
||||
data: replace::Data,
|
||||
/// Whether or not the data has been modified.
|
||||
|
@ -230,12 +231,18 @@ impl CodeFix {
|
|||
|
||||
/// Applies a suggestion to the code.
|
||||
pub fn apply(&mut self, suggestion: &Suggestion) -> Result<(), Error> {
|
||||
for sol in &suggestion.solutions {
|
||||
for r in &sol.replacements {
|
||||
self.data
|
||||
.replace_range(r.snippet.range.clone(), r.replacement.as_bytes())?;
|
||||
self.modified = true;
|
||||
}
|
||||
for solution in &suggestion.solutions {
|
||||
self.apply_solution(solution)?;
|
||||
}
|
||||
Ok(())
|
||||
}
|
||||
|
||||
/// Applies an individual solution from a [`Suggestion`].
|
||||
pub fn apply_solution(&mut self, solution: &Solution) -> Result<(), Error> {
|
||||
for r in &solution.replacements {
|
||||
self.data
|
||||
.replace_range(r.snippet.range.clone(), r.replacement.as_bytes())?;
|
||||
self.modified = true;
|
||||
}
|
||||
Ok(())
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue