diff options
| author | nsfisis <nsfisis@gmail.com> | 2026-06-29 04:17:51 +0900 |
|---|---|---|
| committer | nsfisis <nsfisis@gmail.com> | 2026-06-29 04:24:14 +0900 |
| commit | f33487739aa9af2f40df678db2e418788a66e634 (patch) | |
| tree | b5456508d0ef8cf8d784fe99345a6a5f6e5cb561 /crates/shirabe/src/package | |
| parent | 633a250e3039d766af3ed5733fe9b825b994511c (diff) | |
| download | php-shirabe-f33487739aa9af2f40df678db2e418788a66e634.tar.gz php-shirabe-f33487739aa9af2f40df678db2e418788a66e634.tar.zst php-shirabe-f33487739aa9af2f40df678db2e418788a66e634.zip | |
feat(package): implement RootAliasPackage root getters via owned returns
It is faithful to PHP's by-value array/string semantics.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Diffstat (limited to 'crates/shirabe/src/package')
| -rw-r--r-- | crates/shirabe/src/package/handle.rs | 5 | ||||
| -rw-r--r-- | crates/shirabe/src/package/root_alias_package.rs | 24 | ||||
| -rw-r--r-- | crates/shirabe/src/package/root_package.rs | 20 | ||||
| -rw-r--r-- | crates/shirabe/src/package/root_package_interface.rs | 10 |
4 files changed, 25 insertions, 34 deletions
diff --git a/crates/shirabe/src/package/handle.rs b/crates/shirabe/src/package/handle.rs index 28b1dbe..d11b20e 100644 --- a/crates/shirabe/src/package/handle.rs +++ b/crates/shirabe/src/package/handle.rs @@ -916,7 +916,6 @@ macro_rules! impl_root_package_interface_handle { .as_root_package_interface() .expect("RootPackage handle invariant") .get_aliases() - .to_vec() } pub fn get_minimum_stability(&self) -> String { @@ -925,7 +924,6 @@ macro_rules! impl_root_package_interface_handle { .as_root_package_interface() .expect("RootPackage handle invariant") .get_minimum_stability() - .to_string() } pub fn get_stability_flags(&self) -> indexmap::IndexMap<String, i64> { @@ -934,7 +932,6 @@ macro_rules! impl_root_package_interface_handle { .as_root_package_interface() .expect("RootPackage handle invariant") .get_stability_flags() - .clone() } pub fn get_references(&self) -> indexmap::IndexMap<String, String> { @@ -943,7 +940,6 @@ macro_rules! impl_root_package_interface_handle { .as_root_package_interface() .expect("RootPackage handle invariant") .get_references() - .clone() } pub fn get_prefer_stable(&self) -> bool { @@ -960,7 +956,6 @@ macro_rules! impl_root_package_interface_handle { .as_root_package_interface() .expect("RootPackage handle invariant") .get_config() - .clone() } pub fn set_requires(&self, requires: indexmap::IndexMap<String, crate::package::Link>) { diff --git a/crates/shirabe/src/package/root_alias_package.rs b/crates/shirabe/src/package/root_alias_package.rs index 41b30a9..4a4115d 100644 --- a/crates/shirabe/src/package/root_alias_package.rs +++ b/crates/shirabe/src/package/root_alias_package.rs @@ -53,32 +53,28 @@ impl std::fmt::Display for RootAliasPackage { } impl RootPackageInterface for RootAliasPackage { - fn get_aliases(&self) -> &[IndexMap<String, String>] { - todo!("RootAliasPackage::get_aliases cannot return a borrow across the aliasOf handle") + fn get_aliases(&self) -> Vec<IndexMap<String, String>> { + self.alias_of.get_aliases() } - fn get_minimum_stability(&self) -> &str { - todo!( - "RootAliasPackage::get_minimum_stability cannot return &str across the aliasOf handle" - ) + fn get_minimum_stability(&self) -> String { + self.alias_of.get_minimum_stability() } - fn get_stability_flags(&self) -> &IndexMap<String, i64> { - todo!( - "RootAliasPackage::get_stability_flags cannot return a borrow across the aliasOf handle" - ) + fn get_stability_flags(&self) -> IndexMap<String, i64> { + self.alias_of.get_stability_flags() } - fn get_references(&self) -> &IndexMap<String, String> { - todo!("RootAliasPackage::get_references cannot return a borrow across the aliasOf handle") + fn get_references(&self) -> IndexMap<String, String> { + self.alias_of.get_references() } fn get_prefer_stable(&self) -> bool { self.alias_of.get_prefer_stable() } - fn get_config(&self) -> &IndexMap<String, PhpMixed> { - todo!("RootAliasPackage::get_config cannot return a borrow across the aliasOf handle") + fn get_config(&self) -> IndexMap<String, PhpMixed> { + self.alias_of.get_config() } fn set_requires(&mut self, requires: IndexMap<String, Link>) { diff --git a/crates/shirabe/src/package/root_package.rs b/crates/shirabe/src/package/root_package.rs index d764f9e..899006d 100644 --- a/crates/shirabe/src/package/root_package.rs +++ b/crates/shirabe/src/package/root_package.rs @@ -49,16 +49,16 @@ impl RootPackageInterface for RootPackage { self.minimum_stability = minimum_stability; } - fn get_minimum_stability(&self) -> &str { - &self.minimum_stability + fn get_minimum_stability(&self) -> String { + self.minimum_stability.clone() } fn set_stability_flags(&mut self, stability_flags: IndexMap<String, i64>) { self.stability_flags = stability_flags; } - fn get_stability_flags(&self) -> &IndexMap<String, i64> { - &self.stability_flags + fn get_stability_flags(&self) -> IndexMap<String, i64> { + self.stability_flags.clone() } fn set_prefer_stable(&mut self, prefer_stable: bool) { @@ -73,24 +73,24 @@ impl RootPackageInterface for RootPackage { self.config = config; } - fn get_config(&self) -> &IndexMap<String, PhpMixed> { - &self.config + fn get_config(&self) -> IndexMap<String, PhpMixed> { + self.config.clone() } fn set_references(&mut self, references: IndexMap<String, String>) { self.references = references; } - fn get_references(&self) -> &IndexMap<String, String> { - &self.references + fn get_references(&self) -> IndexMap<String, String> { + self.references.clone() } fn set_aliases(&mut self, aliases: Vec<IndexMap<String, String>>) { self.aliases = aliases; } - fn get_aliases(&self) -> &[IndexMap<String, String>] { - &self.aliases + fn get_aliases(&self) -> Vec<IndexMap<String, String>> { + self.aliases.clone() } fn set_requires(&mut self, requires: IndexMap<String, Link>) { diff --git a/crates/shirabe/src/package/root_package_interface.rs b/crates/shirabe/src/package/root_package_interface.rs index 85e5f9a..0d34acf 100644 --- a/crates/shirabe/src/package/root_package_interface.rs +++ b/crates/shirabe/src/package/root_package_interface.rs @@ -7,17 +7,17 @@ use indexmap::IndexMap; use shirabe_php_shim::PhpMixed; pub trait RootPackageInterface: CompletePackageInterface { - fn get_aliases(&self) -> &[IndexMap<String, String>]; + fn get_aliases(&self) -> Vec<IndexMap<String, String>>; - fn get_minimum_stability(&self) -> &str; + fn get_minimum_stability(&self) -> String; - fn get_stability_flags(&self) -> &IndexMap<String, i64>; + fn get_stability_flags(&self) -> IndexMap<String, i64>; - fn get_references(&self) -> &IndexMap<String, String>; + fn get_references(&self) -> IndexMap<String, String>; fn get_prefer_stable(&self) -> bool; - fn get_config(&self) -> &IndexMap<String, PhpMixed>; + fn get_config(&self) -> IndexMap<String, PhpMixed>; fn set_requires(&mut self, requires: IndexMap<String, Link>); |
