diff options
| author | nsfisis <nsfisis@gmail.com> | 2026-05-28 23:20:44 +0900 |
|---|---|---|
| committer | nsfisis <nsfisis@gmail.com> | 2026-05-28 23:28:39 +0900 |
| commit | 7715c98aaf3e3962cabbcf740e93fa817a2f8027 (patch) | |
| tree | 21203ac1139a321250a4a3690feaf97822716faa /crates/shirabe/src/dependency_resolver | |
| parent | eea4efe87e455742ec17881ee93d8095925e8516 (diff) | |
| download | php-shirabe-7715c98aaf3e3962cabbcf740e93fa817a2f8027.tar.gz php-shirabe-7715c98aaf3e3962cabbcf740e93fa817a2f8027.tar.zst php-shirabe-7715c98aaf3e3962cabbcf740e93fa817a2f8027.zip | |
feat: resolve TODOs unblocked by package handle get_repository
PackageInterfaceHandle::get_repository and handle upcasts have been
available since the recent Rc<RefCell<_>> handle refactors; wire them
at sites still carrying TODO(phase-c) markers.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Diffstat (limited to 'crates/shirabe/src/dependency_resolver')
| -rw-r--r-- | crates/shirabe/src/dependency_resolver/local_repo_transaction.rs | 9 | ||||
| -rw-r--r-- | crates/shirabe/src/dependency_resolver/problem.rs | 11 |
2 files changed, 11 insertions, 9 deletions
diff --git a/crates/shirabe/src/dependency_resolver/local_repo_transaction.rs b/crates/shirabe/src/dependency_resolver/local_repo_transaction.rs index 7b60522..5d9c0d5 100644 --- a/crates/shirabe/src/dependency_resolver/local_repo_transaction.rs +++ b/crates/shirabe/src/dependency_resolver/local_repo_transaction.rs @@ -14,12 +14,11 @@ impl LocalRepoTransaction { locked_repository: &dyn RepositoryInterface, local_repository: &dyn InstalledRepositoryInterface, ) -> Self { - // TODO(phase-c): RepositoryInterface::get_packages yields BasePackageHandle; widen each to - // PackageInterfaceHandle (via .into()) and feed them to Transaction::new once the repository - // getters expose handles here. - let _ = (locked_repository, local_repository); Self { - inner: Transaction::new(Vec::new(), Vec::new()), + inner: Transaction::new( + local_repository.get_packages(), + locked_repository.get_packages(), + ), } } diff --git a/crates/shirabe/src/dependency_resolver/problem.rs b/crates/shirabe/src/dependency_resolver/problem.rs index 740909f..7312bda 100644 --- a/crates/shirabe/src/dependency_resolver/problem.rs +++ b/crates/shirabe/src/dependency_resolver/problem.rs @@ -757,10 +757,13 @@ impl Problem { } } - // TODO(phase-c): filtering out packages from a LockArrayRepository needs the handle's - // repository back-reference (phase-c handoff item #1), which is not yet available; keep - // all packages for now. - let non_locked_packages: Vec<&BasePackageHandle> = packages.iter().collect(); + let non_locked_packages: Vec<&BasePackageHandle> = packages + .iter() + .filter(|p| { + !p.get_repository() + .map_or(false, |r| r.is::<LockArrayRepository>()) + }) + .collect(); if non_locked_packages.len() == 0 { return ( |
