From eea4efe87e455742ec17881ee93d8095925e8516 Mon Sep 17 00:00:00 2001 From: nsfisis Date: Thu, 28 May 2026 22:43:11 +0900 Subject: refactor(repository): introduce Rc> handles for repositories Co-Authored-By: Claude Opus 4.7 (1M context) --- crates/shirabe/src/package/alias_package.rs | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) (limited to 'crates/shirabe/src/package/alias_package.rs') diff --git a/crates/shirabe/src/package/alias_package.rs b/crates/shirabe/src/package/alias_package.rs index 997685b..69e0723 100644 --- a/crates/shirabe/src/package/alias_package.rs +++ b/crates/shirabe/src/package/alias_package.rs @@ -11,14 +11,13 @@ use crate::package::Link; use crate::package::PackageHandle; use crate::package::PackageInterface; use crate::package::version::VersionParser; -use crate::repository::RepositoryInterface; +use crate::repository::RepositoryInterfaceHandle; #[derive(Debug)] pub struct AliasPackage { id: i64, name: String, pretty_name: String, - repository: Option>, /// @var string pub(crate) version: String, @@ -64,7 +63,6 @@ impl AliasPackage { id: -1, name: alias_name.to_lowercase(), pretty_name: alias_name, - repository: None, version, pretty_version, dev, @@ -452,12 +450,12 @@ impl PackageInterface for AliasPackage { self.alias_of.get_pretty_string() } - fn set_repository(&mut self, repository: Box) -> anyhow::Result<()> { + fn set_repository(&mut self, repository: RepositoryInterfaceHandle) -> anyhow::Result<()> { self.alias_of.set_repository(repository) } - fn get_repository(&self) -> Option<&dyn RepositoryInterface> { - todo!("AliasPackage::get_repository cannot return a borrow across the aliasOf handle") + fn get_repository(&self) -> Option { + self.alias_of.get_repository() } } @@ -486,15 +484,17 @@ impl BasePackage for AliasPackage { &mut self.pretty_name } - fn repository_opt(&self) -> Option<&dyn RepositoryInterface> { - self.repository.as_deref() + fn repository_opt(&self) -> Option { + // PHP `AliasPackage::getRepository()` delegates to `$this->aliasOf->getRepository()`. + self.alias_of.get_repository() } - fn set_repository_box(&mut self, repository: Box) { - todo!() + fn set_repository_box(&mut self, repository: RepositoryInterfaceHandle) { + let _ = self.alias_of.set_repository(repository); } - fn take_repository(&mut self) -> Option> { - todo!() + fn take_repository(&mut self) -> Option { + // AliasPackage holds no repository of its own; never mutate the aliased package here. + None } } -- cgit v1.3.1