Skip to content

Commit

Permalink
Extension::register_updated` is infallible
Browse files Browse the repository at this point in the history
  • Loading branch information
aborgna-q committed Nov 26, 2024
1 parent 1d8d896 commit 1d0a0d8
Show file tree
Hide file tree
Showing 3 changed files with 8 additions and 18 deletions.
4 changes: 1 addition & 3 deletions hugr-cli/src/validate.rs
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@
use clap::Parser;
use clap_verbosity_flag::Level;
use hugr::package::PackageValidationError;
use hugr::{extension::ExtensionRegistry, Extension, Hugr};

use crate::{CliError, HugrArgs};
Expand Down Expand Up @@ -64,8 +63,7 @@ impl HugrArgs {
for ext in &self.extensions {
let f = std::fs::File::open(ext)?;
let ext: Extension = serde_json::from_reader(f)?;
reg.register_updated(ext)
.map_err(PackageValidationError::Extension)?;
reg.register_updated(ext);
}

package.update_validate(&mut reg)?;
Expand Down
20 changes: 6 additions & 14 deletions hugr-core/src/extension.rs
Original file line number Diff line number Diff line change
Expand Up @@ -104,10 +104,7 @@ impl ExtensionRegistry {
///
/// Takes an Arc to the extension. To avoid cloning Arcs unless necessary, see
/// [`ExtensionRegistry::register_updated_ref`].
pub fn register_updated(
&mut self,
extension: impl Into<Arc<Extension>>,
) -> Result<(), ExtensionRegistryError> {
pub fn register_updated(&mut self, extension: impl Into<Arc<Extension>>) {
let extension = extension.into();
match self.0.entry(extension.name().clone()) {
btree_map::Entry::Occupied(mut prev) => {
Expand All @@ -119,7 +116,6 @@ impl ExtensionRegistry {
ve.insert(extension);
}
}
Ok(())
}

/// Registers a new extension to the registry, keeping most up to date if
Expand All @@ -131,10 +127,7 @@ impl ExtensionRegistry {
///
/// Clones the Arc only when required. For no-cloning version see
/// [`ExtensionRegistry::register_updated`].
pub fn register_updated_ref(
&mut self,
extension: &Arc<Extension>,
) -> Result<(), ExtensionRegistryError> {
pub fn register_updated_ref(&mut self, extension: &Arc<Extension>) {
match self.0.entry(extension.name().clone()) {
btree_map::Entry::Occupied(mut prev) => {
if prev.get().version() < extension.version() {
Expand All @@ -145,7 +138,6 @@ impl ExtensionRegistry {
ve.insert(extension.clone());
}
}
Ok(())
}

/// Returns the number of extensions in the registry.
Expand Down Expand Up @@ -777,14 +769,14 @@ pub mod test {
);

// register with update works
reg_ref.register_updated_ref(&ext1_1).unwrap();
reg.register_updated(ext1_1.clone()).unwrap();
reg_ref.register_updated_ref(&ext1_1);
reg.register_updated(ext1_1.clone());
assert_eq!(reg.get("ext1").unwrap().version(), &Version::new(1, 1, 0));
assert_eq!(&reg, &reg_ref);

// register with lower version does not change version
reg_ref.register_updated_ref(&ext1_2).unwrap();
reg.register_updated(ext1_2.clone()).unwrap();
reg_ref.register_updated_ref(&ext1_2);
reg.register_updated(ext1_2.clone());
assert_eq!(reg.get("ext1").unwrap().version(), &Version::new(1, 1, 0));
assert_eq!(&reg, &reg_ref);

Expand Down
2 changes: 1 addition & 1 deletion hugr-core/src/package.rs
Original file line number Diff line number Diff line change
Expand Up @@ -99,7 +99,7 @@ impl Package {
reg: &mut ExtensionRegistry,
) -> Result<(), PackageValidationError> {
for ext in &self.extensions {
reg.register_updated_ref(ext)?;
reg.register_updated_ref(ext);
}
for hugr in self.modules.iter_mut() {
hugr.update_validate(reg)?;
Expand Down

0 comments on commit 1d0a0d8

Please sign in to comment.