Skip to content

Commit

Permalink
Add SemVersionReq::exact, replace ToSemverReqExact
Browse files Browse the repository at this point in the history
  • Loading branch information
dwijnand committed Dec 20, 2018
1 parent abfdb3d commit ee9e83f
Show file tree
Hide file tree
Showing 6 changed files with 13 additions and 21 deletions.
4 changes: 2 additions & 2 deletions src/cargo/core/dependency.rs
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ use serde::Serialize;
use crate::core::interning::InternedString;
use crate::core::{PackageId, SourceId, Summary};
use crate::util::errors::{CargoResult, CargoResultExt};
use crate::util::{Cfg, CfgExpr, Config, SemVersionReq, ToSemverReq, ToSemverReqExact};
use crate::util::{Cfg, CfgExpr, Config, SemVersionReq, ToSemverReq};

/// Information about a dependency requested by a Cargo manifest.
/// Cheap to copy.
Expand Down Expand Up @@ -361,7 +361,7 @@ impl Dependency {
self.source_id(),
id
);
self.set_version_req(id.version().to_semver_req_exact())
self.set_version_req(SemVersionReq::exact(id.sem_version()))
.set_source_id(id.source_id())
}

Expand Down
5 changes: 2 additions & 3 deletions src/cargo/core/package_id_spec.rs
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
use std::collections::HashMap;
use std::fmt;

use semver::Version;
use serde::{de, ser};
use url::Url;

Expand Down Expand Up @@ -143,8 +142,8 @@ impl PackageIdSpec {
&self.name
}

pub fn version(&self) -> Option<&Version> {
self.version.map(|sv| sv.value())
pub fn version(&self) -> Option<SemVersion> {
self.version
}

pub fn url(&self) -> Option<&Url> {
Expand Down
4 changes: 2 additions & 2 deletions src/cargo/core/registry.rs
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ use crate::core::PackageSet;
use crate::core::{Dependency, PackageId, Source, SourceId, SourceMap, Summary};
use crate::sources::config::SourceConfigMap;
use crate::util::errors::{CargoResult, CargoResultExt};
use crate::util::{profile, Config, ToSemverReqExact};
use crate::util::{profile, Config, SemVersionReq};

/// Source of information about a group of packages.
///
Expand Down Expand Up @@ -644,7 +644,7 @@ fn lock(locked: &LockedMap, patches: &HashMap<Url, Vec<PackageId>>, summary: Sum

if patch_locked {
trace!("\tthird hit on {}", patch_id);
let req = patch_id.version().to_semver_req_exact();
let req = SemVersionReq::exact(patch_id.sem_version());
let mut dep = dep;
dep.set_version_req(req);
return dep;
Expand Down
2 changes: 1 addition & 1 deletion src/cargo/util/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ pub use self::progress::{Progress, ProgressStyle};
pub use self::read2::read2;
pub use self::rustc::Rustc;
pub use self::sha256::Sha256;
pub use self::to_semver::{SemVersion, SemVersionReq, ToSemver, ToSemverReq, ToSemverReqExact};
pub use self::to_semver::{SemVersion, SemVersionReq, ToSemver, ToSemverReq};
pub use self::to_url::ToUrl;
pub use self::vcs::{existing_vcs_repo, FossilRepo, GitRepo, HgRepo, PijulRepo};

Expand Down
15 changes: 4 additions & 11 deletions src/cargo/util/to_semver.rs
Original file line number Diff line number Diff line change
Expand Up @@ -120,6 +120,10 @@ impl SemVersionReq {
SemVersionReq::new(VersionReq::any())
}

pub fn exact(version: SemVersion) -> SemVersionReq {
SemVersionReq::new(VersionReq::exact(version.inner))
}

pub fn value(&self) -> &'static VersionReq {
self.inner
}
Expand Down Expand Up @@ -165,14 +169,3 @@ impl<'a> ToSemverReq for &'a str {
Ok(SemVersionReq::new(VersionReq::parse(self)?))
}
}


pub trait ToSemverReqExact {
fn to_semver_req_exact(self) -> SemVersionReq;
}

impl<'a> ToSemverReqExact for &'a Version {
fn to_semver_req_exact(self) -> SemVersionReq {
SemVersionReq::new(VersionReq::exact(self))
}
}
4 changes: 2 additions & 2 deletions src/cargo/util/toml/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ use crate::core::{GitReference, PackageIdSpec, SourceId, WorkspaceConfig, Worksp
use crate::sources::{CRATES_IO_INDEX, CRATES_IO_REGISTRY};
use crate::util::errors::{CargoResult, CargoResultExt, ManifestError};
use crate::util::paths;
use crate::util::{self, validate_package_name, Config, SemVersion, ToUrl, ToSemverReqExact};
use crate::util::{self, validate_package_name, Config, SemVersion, SemVersionReq, ToUrl};

mod targets;
use self::targets::targets;
Expand Down Expand Up @@ -1180,7 +1180,7 @@ impl TomlManifest {
spec
)
})?;
dep.set_version_req(version.to_semver_req_exact());
dep.set_version_req(SemVersionReq::exact(version));
}
replace.push((spec, dep));
}
Expand Down

0 comments on commit ee9e83f

Please sign in to comment.