Skip to content

Commit 2601d10

Browse files
authored
feat: allow depending on self (#244)
1 parent 42ad7ea commit 2601d10

File tree

3 files changed

+4
-29
lines changed

3 files changed

+4
-29
lines changed

src/error.rs

Lines changed: 0 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -33,19 +33,6 @@ pub enum PubGrubError<DP: DependencyProvider> {
3333
source: DP::Err,
3434
},
3535

36-
/// Error arising when the implementer of
37-
/// [DependencyProvider]
38-
/// returned a dependency on the requested package.
39-
/// This technically means that the package directly depends on itself,
40-
/// and is clearly some kind of mistake.
41-
#[error("{package} {version} depends on itself")]
42-
SelfDependency {
43-
/// Package whose dependencies we want.
44-
package: DP::P,
45-
/// Version of the package for which we want the dependencies.
46-
version: DP::V,
47-
},
48-
4936
/// Error arising when the implementer of [DependencyProvider] returned an error in the method
5037
/// [choose_version](DependencyProvider::choose_version).
5138
#[error("Decision making failed")]
@@ -84,11 +71,6 @@ where
8471
.field("version", version)
8572
.field("source", source)
8673
.finish(),
87-
Self::SelfDependency { package, version } => f
88-
.debug_struct("SelfDependency")
89-
.field("package", package)
90-
.field("version", version)
91-
.finish(),
9274
Self::ErrorChoosingPackageVersion(arg0) => f
9375
.debug_tuple("ErrorChoosingPackageVersion")
9476
.field(arg0)

src/solver.rs

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -153,12 +153,6 @@ pub fn resolve<DP: DependencyProvider>(
153153
));
154154
continue;
155155
}
156-
Dependencies::Available(x) if x.contains_key(p) => {
157-
return Err(PubGrubError::SelfDependency {
158-
package: p.clone(),
159-
version: v,
160-
});
161-
}
162156
Dependencies::Available(x) => x,
163157
};
164158

tests/tests.rs

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -43,11 +43,10 @@ fn should_always_find_a_satisfier() {
4343
}
4444

4545
#[test]
46-
fn cannot_depend_on_self() {
46+
fn depend_on_self() {
4747
let mut dependency_provider = OfflineDependencyProvider::<_, NumVS>::new();
4848
dependency_provider.add_dependencies("a", 0u32, [("a", Range::full())]);
49-
assert!(matches!(
50-
resolve(&dependency_provider, "a", 0u32),
51-
Err(PubGrubError::SelfDependency { .. })
52-
));
49+
assert!(resolve(&dependency_provider, "a", 0u32).is_ok());
50+
dependency_provider.add_dependencies("a", 66u32, [("a", Range::singleton(111u32))]);
51+
assert!(resolve(&dependency_provider, "a", 66u32).is_err());
5352
}

0 commit comments

Comments
 (0)