aboutsummaryrefslogtreecommitdiffhomepage
path: root/crates/shirabe/src/package/base_package.rs
diff options
context:
space:
mode:
authornsfisis <nsfisis@gmail.com>2026-06-06 14:48:48 +0900
committernsfisis <nsfisis@gmail.com>2026-06-06 14:48:48 +0900
commitadba8b1969a3f40245324d7feb5905693ca65d5e (patch)
tree7146bcbfae65664cbc32019d34a8e2d49fa11703 /crates/shirabe/src/package/base_package.rs
parente89e1785e3df047a869c48b91709289a3b145b49 (diff)
downloadphp-shirabe-adba8b1969a3f40245324d7feb5905693ca65d5e.tar.gz
php-shirabe-adba8b1969a3f40245324d7feb5905693ca65d5e.tar.zst
php-shirabe-adba8b1969a3f40245324d7feb5905693ca65d5e.zip
fix(base-package): move equals to PackageInterfaceHandle for reference identity
PHP BasePackage::equals uses === (reference identity), unwrapping AliasPackage on both sides first. A plain &self / &dyn PackageInterface cannot express this, so implement it on the shared handle where the Rc-based identity infrastructure (as_alias, get_alias_of, ptr_eq) already lives, and drop the unimplementable trait stub. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Diffstat (limited to 'crates/shirabe/src/package/base_package.rs')
-rw-r--r--crates/shirabe/src/package/base_package.rs17
1 files changed, 0 insertions, 17 deletions
diff --git a/crates/shirabe/src/package/base_package.rs b/crates/shirabe/src/package/base_package.rs
index ec2fd3f..54abc13 100644
--- a/crates/shirabe/src/package/base_package.rs
+++ b/crates/shirabe/src/package/base_package.rs
@@ -84,32 +84,15 @@ pub trait BasePackage: PackageInterface + std::fmt::Display {
fn set_repository_box(&mut self, repository: RepositoryInterfaceHandle);
fn take_repository(&mut self) -> Option<RepositoryInterfaceHandle>;
- // as_alias_package / as_complete_package_interface inherited from PackageInterface.
-
fn as_alias_package_mut(&mut self) -> Option<&mut crate::package::AliasPackage> {
None
}
- // get_name / get_pretty_name / get_names live on PackageInterface; the BasePackage
- // duplicates were causing ambiguity at every call site (`pkg.get_name()` with
- // pkg: &dyn BasePackage). Concrete impls already forward to name()/pretty_name().
-
- // set_id, get_id, get_repository, get_unique_name, set_repository are inherited
- // from PackageInterface; do not redeclare here to avoid trait-method ambiguity.
-
fn is_platform(&self) -> bool {
self.repository_opt()
.map_or(false, |r| r.is::<PlatformRepository>())
}
- fn equals(&self, _package: &dyn PackageInterface) -> bool {
- // TODO(phase-b): implement via reference identity (requires Rc/Arc)
- // PHP uses === which is reference equality; unwraps AliasPackage on both sides
- todo!("equals requires reference identity which needs Rc/Arc")
- }
-
- // get_pretty_string is inherited from PackageInterface.
-
fn get_full_pretty_version(&self, truncate: bool, display_mode: DisplayMode) -> String {
if display_mode == DisplayMode::SourceRefIfDev
&& (!self.is_dev()