Skip to content

Commit 27c1eb2

Browse files
authored
refactor!: pluralize NoVersion incompatibilities (#62)
* refactor!: pluralize NoVersion incompatibility * refactor!: pluralize report.collapse_noversion() * docs: document incompatibility::Kind
1 parent 3aa9750 commit 27c1eb2

File tree

8 files changed

+36
-32
lines changed

8 files changed

+36
-32
lines changed

examples/branching_error_reporting.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ fn main() {
5656
match resolve(&dependency_provider, "root", (1, 0, 0)) {
5757
Ok(sol) => println!("{:?}", sol),
5858
Err(PubGrubError::NoSolution(mut derivation_tree)) => {
59-
derivation_tree.collapse_noversion();
59+
derivation_tree.collapse_no_versions();
6060
eprintln!("{}", DefaultStringReporter::report(&derivation_tree));
6161
std::process::exit(1);
6262
}

examples/doc_interface_error.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,7 @@ fn main() {
7373
match resolve(&dependency_provider, "root", (1, 0, 0)) {
7474
Ok(sol) => println!("{:?}", sol),
7575
Err(PubGrubError::NoSolution(mut derivation_tree)) => {
76-
derivation_tree.collapse_noversion();
76+
derivation_tree.collapse_no_versions();
7777
eprintln!("{}", DefaultStringReporter::report(&derivation_tree));
7878
}
7979
Err(err) => panic!("{:?}", err),

examples/doc_interface_semantic.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@ fn main() {
6464
match resolve(&dependency_provider, "root", (1, 0, 0)) {
6565
Ok(sol) => println!("{:?}", sol),
6666
Err(PubGrubError::NoSolution(mut derivation_tree)) => {
67-
derivation_tree.collapse_noversion();
67+
derivation_tree.collapse_no_versions();
6868
eprintln!("{}", DefaultStringReporter::report(&derivation_tree));
6969
}
7070
Err(err) => panic!("{:?}", err),

examples/linear_error_reporting.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ fn main() {
3838
match resolve(&dependency_provider, "root", (1, 0, 0)) {
3939
Ok(sol) => println!("{:?}", sol),
4040
Err(PubGrubError::NoSolution(mut derivation_tree)) => {
41-
derivation_tree.collapse_noversion();
41+
derivation_tree.collapse_no_versions();
4242
eprintln!("{}", DefaultStringReporter::report(&derivation_tree));
4343
std::process::exit(1);
4444
}

src/internal/incompatibility.rs

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -39,10 +39,15 @@ pub struct Incompatibility<P: Package, V: Version> {
3939

4040
#[derive(Debug, Clone)]
4141
enum Kind<P: Package, V: Version> {
42+
/// Initial incompatibility aiming at picking the root package for the first decision.
4243
NotRoot(P, V),
43-
NoVersion(P, Range<V>),
44+
/// No versions from range satisfy given constraints.
45+
NoVersions(P, Range<V>),
46+
/// Dependencies of the package are unavailable for versions in that range.
4447
UnavailableDependencies(P, Range<V>),
48+
/// Incompatibility coming from the dependencies of a given package.
4549
FromDependencyOf(P, Range<V>, P, Range<V>),
50+
/// Derived from two causes. Stores cause ids.
4651
DerivedFrom(usize, usize),
4752
}
4853

@@ -83,7 +88,7 @@ impl<P: Package, V: Version> Incompatibility<P, V> {
8388

8489
/// Create an incompatibility to remember
8590
/// that a given range does not contain any version.
86-
pub fn no_version(id: usize, package: P, term: Term<V>) -> Self {
91+
pub fn no_versions(id: usize, package: P, term: Term<V>) -> Self {
8792
let range = match &term {
8893
Term::Positive(r) => r.clone(),
8994
Term::Negative(_) => panic!("No version should have a positive term"),
@@ -93,7 +98,7 @@ impl<P: Package, V: Version> Incompatibility<P, V> {
9398
Self {
9499
id,
95100
package_terms,
96-
kind: Kind::NoVersion(package, range),
101+
kind: Kind::NoVersions(package, range),
97102
}
98103
}
99104

@@ -301,8 +306,8 @@ impl<P: Package, V: Version> Incompatibility<P, V> {
301306
Kind::NotRoot(package, version) => {
302307
DerivationTree::External(External::NotRoot(package.clone(), version.clone()))
303308
}
304-
Kind::NoVersion(package, range) => {
305-
DerivationTree::External(External::NoVersion(package.clone(), range.clone()))
309+
Kind::NoVersions(package, range) => {
310+
DerivationTree::External(External::NoVersions(package.clone(), range.clone()))
306311
}
307312
Kind::UnavailableDependencies(package, range) => DerivationTree::External(
308313
External::UnavailableDependencies(package.clone(), range.clone()),

src/lib.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -172,16 +172,16 @@
172172
//! match resolve(&dependency_provider, root_package, root_version) {
173173
//! Ok(solution) => println!("{:?}", solution),
174174
//! Err(PubGrubError::NoSolution(mut derivation_tree)) => {
175-
//! derivation_tree.collapse_noversion();
175+
//! derivation_tree.collapse_no_versions();
176176
//! eprintln!("{}", DefaultStringReporter::report(&derivation_tree));
177177
//! }
178178
//! Err(err) => panic!("{:?}", err),
179179
//! };
180180
//! ```
181181
//! Notice that we also used
182-
//! [collapse_noversion()](crate::report::DerivationTree::collapse_noversion) above.
182+
//! [collapse_no_versions()](crate::report::DerivationTree::collapse_no_versions) above.
183183
//! This method simplifies the derivation tree to get rid of the
184-
//! [NoVersion](crate::report::External::NoVersion)
184+
//! [NoVersions](crate::report::External::NoVersions)
185185
//! external incompatibilities in the derivation tree.
186186
//! So instead of seeing things like this in the report:
187187
//! ```txt

src/report.rs

Lines changed: 18 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -35,11 +35,10 @@ pub enum DerivationTree<P: Package, V: Version> {
3535
/// they have their own reason.
3636
#[derive(Debug, Clone)]
3737
pub enum External<P: Package, V: Version> {
38-
/// Initial incompatibility aiming at picking the root package
39-
/// for the first decision.
38+
/// Initial incompatibility aiming at picking the root package for the first decision.
4039
NotRoot(P, V),
41-
/// No version exist in that range.
42-
NoVersion(P, Range<V>),
40+
/// No versions from range satisfy given constraints.
41+
NoVersions(P, Range<V>),
4342
/// Dependencies of the package are unavailable for versions in that range.
4443
UnavailableDependencies(P, Range<V>),
4544
/// Incompatibility coming from the dependencies of a given package.
@@ -64,52 +63,52 @@ pub struct Derived<P: Package, V: Version> {
6463
}
6564

6665
impl<P: Package, V: Version> DerivationTree<P, V> {
67-
/// Merge the [NoVersion](External::NoVersion) external incompatibilities
66+
/// Merge the [NoVersions](External::NoVersions) external incompatibilities
6867
/// with the other one they are matched with
6968
/// in a derived incompatibility.
7069
/// This cleans up quite nicely the generated report.
7170
/// You might want to do this if you know that the
7271
/// [DependencyProvider](crate::solver::DependencyProvider)
7372
/// was not run in some kind of offline mode that may not
7473
/// have access to all versions existing.
75-
pub fn collapse_noversion(&mut self) {
74+
pub fn collapse_no_versions(&mut self) {
7675
match self {
7776
DerivationTree::External(_) => {}
7877
DerivationTree::Derived(derived) => {
7978
match (&mut *derived.cause1, &mut *derived.cause2) {
80-
(DerivationTree::External(External::NoVersion(p, r)), ref mut cause2) => {
81-
cause2.collapse_noversion();
79+
(DerivationTree::External(External::NoVersions(p, r)), ref mut cause2) => {
80+
cause2.collapse_no_versions();
8281
*self = cause2
8382
.clone()
84-
.merge_noversion(p.to_owned(), r.to_owned())
83+
.merge_no_versions(p.to_owned(), r.to_owned())
8584
.unwrap_or_else(|| self.to_owned());
8685
}
87-
(ref mut cause1, DerivationTree::External(External::NoVersion(p, r))) => {
88-
cause1.collapse_noversion();
86+
(ref mut cause1, DerivationTree::External(External::NoVersions(p, r))) => {
87+
cause1.collapse_no_versions();
8988
*self = cause1
9089
.clone()
91-
.merge_noversion(p.to_owned(), r.to_owned())
90+
.merge_no_versions(p.to_owned(), r.to_owned())
9291
.unwrap_or_else(|| self.to_owned());
9392
}
9493
_ => {
95-
derived.cause1.collapse_noversion();
96-
derived.cause2.collapse_noversion();
94+
derived.cause1.collapse_no_versions();
95+
derived.cause2.collapse_no_versions();
9796
}
9897
}
9998
}
10099
}
101100
}
102101

103-
fn merge_noversion(self, package: P, range: Range<V>) -> Option<Self> {
102+
fn merge_no_versions(self, package: P, range: Range<V>) -> Option<Self> {
104103
match self {
105104
// TODO: take care of the Derived case.
106105
// Once done, we can remove the Option.
107106
DerivationTree::Derived(_) => Some(self),
108107
DerivationTree::External(External::NotRoot(_, _)) => {
109-
panic!("How did we end up with a NoVersion merged with a NotRoot?")
108+
panic!("How did we end up with a NoVersions merged with a NotRoot?")
110109
}
111-
DerivationTree::External(External::NoVersion(_, r)) => Some(DerivationTree::External(
112-
External::NoVersion(package, range.union(&r)),
110+
DerivationTree::External(External::NoVersions(_, r)) => Some(DerivationTree::External(
111+
External::NoVersions(package, range.union(&r)),
113112
)),
114113
DerivationTree::External(External::UnavailableDependencies(_, r)) => {
115114
Some(DerivationTree::External(External::UnavailableDependencies(
@@ -144,7 +143,7 @@ impl<P: Package, V: Version> fmt::Display for External<P, V> {
144143
Self::NotRoot(package, version) => {
145144
write!(f, "we are solving dependencies of {} {}", package, version)
146145
}
147-
Self::NoVersion(package, range) => {
146+
Self::NoVersions(package, range) => {
148147
if range == &Range::any() {
149148
write!(f, "there is no available version for {}", package)
150149
} else {

src/solver.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -119,7 +119,7 @@ pub fn resolve<P: Package, V: Version>(
119119
let v = match PartialSolution::<P, V>::pick_version(&available_versions[..], &term) {
120120
None => {
121121
state.add_incompatibility(|id| {
122-
Incompatibility::no_version(id, p.clone(), term.clone())
122+
Incompatibility::no_versions(id, p.clone(), term.clone())
123123
});
124124
continue;
125125
}

0 commit comments

Comments
 (0)