diff options
| author | nsfisis <nsfisis@gmail.com> | 2026-08-06 20:38:00 +0900 |
|---|---|---|
| committer | nsfisis <nsfisis@gmail.com> | 2026-08-06 20:38:00 +0900 |
| commit | 9411867aa23f8f4f3a6b21b4e8ca9f498a16283a (patch) | |
| tree | 1d679d8fa48fcae87b036a00301c9fba0d210b3f /crates/shirabe/src/downloader/downloader_interface.rs | |
| parent | f18efec69df00cf61e3ec595d07131cae7ca0372 (diff) | |
| download | php-shirabe-9411867aa23f8f4f3a6b21b4e8ca9f498a16283a.tar.gz php-shirabe-9411867aa23f8f4f3a6b21b4e8ca9f498a16283a.tar.zst php-shirabe-9411867aa23f8f4f3a6b21b4e8ca9f498a16283a.zip | |
fix(download-manager): name the downloader class in its LogicException
getDownloaderForPackage reports get_class($downloader) when the resolved
downloader's installation source does not match. Rust has no runtime class
name, so the message was built from a shim stub that panicked instead —
the error could never be returned.
DownloaderInterface now requires PhpClass, the trait already used for the
same purpose on Command, and each downloader states the name PHP reports.
That leaves get_class_obj without callers, so it is gone.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Diffstat (limited to 'crates/shirabe/src/downloader/downloader_interface.rs')
| -rw-r--r-- | crates/shirabe/src/downloader/downloader_interface.rs | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/crates/shirabe/src/downloader/downloader_interface.rs b/crates/shirabe/src/downloader/downloader_interface.rs index 873438e2..8f2e2c0d 100644 --- a/crates/shirabe/src/downloader/downloader_interface.rs +++ b/crates/shirabe/src/downloader/downloader_interface.rs @@ -3,8 +3,10 @@ use crate::package::PackageInterfaceHandle; use shirabe_php_shim::PhpMixed; +/// `PhpClass` is a supertrait because `DownloadManager::getDownloaderForPackage` reports +/// `get_class($downloader)` in its error message, and Rust has no runtime class name. #[async_trait::async_trait(?Send)] -pub trait DownloaderInterface: std::fmt::Debug { +pub trait DownloaderInterface: std::fmt::Debug + shirabe_php_shim::PhpClass { fn get_installation_source(&self) -> String; async fn download( |
