diff --git a/Cargo.toml b/Cargo.toml index 9343265..297fb88 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,12 +1,12 @@ # file: Cargo.toml -# version: 19 +# version: 20 [workspace] resolver = "3" members = ["crates/ksp-core-lib"] [workspace.package] -version = "0.1.1-pre.2" +version = "0.1.1-pre.2.fix.1" edition = "2024" license = "MIT" repository = "https://git.sasedev.com/Sasedev/khadhroony-solana-project" diff --git a/crates/ksp-core-lib/tests/public_api.rs b/crates/ksp-core-lib/tests/public_api.rs index f7962d5..ea7fa2c 100644 --- a/crates/ksp-core-lib/tests/public_api.rs +++ b/crates/ksp-core-lib/tests/public_api.rs @@ -1,5 +1,7 @@ // file: crates/ksp-core-lib/tests/public_api.rs -// version: 1 +// version: 2 + +//! Integration tests for the public `ksp-core-lib` error contract. fn public_result() -> ksp_core_lib::Result<()> { let error = ksp_core_lib::Error::new(ksp_core_lib::ErrorCode::new("consumer", "failed"), "consumer failure").with_context("operation", "public_api"); diff --git a/crates/ksp-core-lib/unit_tests/error.rs b/crates/ksp-core-lib/unit_tests/error.rs index cd0f23f..7eb75a6 100644 --- a/crates/ksp-core-lib/unit_tests/error.rs +++ b/crates/ksp-core-lib/unit_tests/error.rs @@ -1,5 +1,5 @@ // file: crates/ksp-core-lib/unit_tests/error.rs -// version: 1 +// version: 2 #[derive(Debug)] struct TestSource; @@ -12,7 +12,7 @@ impl std::fmt::Display for TestSource { impl std::error::Error for TestSource {} -fn assert_send_sync() +fn assert_send_sync(_: std::marker::PhantomData) where T: std::marker::Send + std::marker::Sync, { @@ -73,6 +73,6 @@ fn standard_source_is_preserved() { #[test] fn common_error_is_send_and_sync() { - assert_send_sync::(); + assert_send_sync(std::marker::PhantomData::); return; } diff --git a/deltas/0.1.1/pre.002-fix.001.md b/deltas/0.1.1/pre.002-fix.001.md new file mode 100644 index 0000000..2afb8ab --- /dev/null +++ b/deltas/0.1.1/pre.002-fix.001.md @@ -0,0 +1,127 @@ + + + +# Delta 0.1.1-pre.002-fix.001 + +## Base requise + +Commit de livraison attendu : + +```text +v0.1.1-pre.002 +``` + +La version Cargo reste : + +```text +0.1.1-pre.2 +``` + +Ce correctif ne modifie aucun contrat public de `ksp-core-lib` et ne justifie donc aucune nouvelle prerelease Cargo. + +## Objectif + +Corriger les deux warnings remontés par les validations réelles de `0.1.1-pre.002` avant d'ouvrir `0.1.1-pre.003`. + +Les validations exécutées sur le dépôt cible ont confirmé que : + +- `cargo fmt --all` réussit ; +- `cargo check --workspace` réussit ; +- `cargo test --workspace` réussit avec 6 tests unitaires, 1 test d'intégration et 0 échec ; +- `cargo clippy --workspace --all-targets` termine sans erreur mais remonte deux warnings à corriger. + +Warnings observés : + +1. `clippy::extra_unused_type_parameters` sur le helper de vérification `Send + Sync` ; +2. `missing_docs` sur la crate de test d'intégration `tests/public_api.rs`. + +## Fichiers modifiés + +- `crates/ksp-core-lib/unit_tests/error.rs` +- `crates/ksp-core-lib/tests/public_api.rs` + +## Fichier ajouté + +- `deltas/0.1.1/pre.002-fix.001.md` + +## Fichiers supprimés + +Aucun. + +## Correction `Send + Sync` + +Le helper de test : + +```text +assert_send_sync() +``` + +utilisait `T` uniquement dans ses bornes de trait. Clippy considère alors le paramètre de type comme inutilisé avec `extra_unused_type_parameters`. + +Le helper reçoit désormais un `std::marker::PhantomData` : + +```text +assert_send_sync(PhantomData) +``` + +et le test fournit `PhantomData`. + +Cette forme conserve exactement l'objectif du test de compilation : l'appel ne compile que si `crate::Error` satisfait `Send + Sync`, tout en utilisant réellement le paramètre générique et sans ajouter de dépendance, d'import ou de logique runtime significative. + +## Correction `missing_docs` + +Le test d'intégration `crates/ksp-core-lib/tests/public_api.rs` constitue une crate Rust indépendante lors de sa compilation. + +Une rustdoc crate-level est ajoutée : + +```text +//! Integration tests for the public `ksp-core-lib` error contract. +``` + +Cela satisfait le lint workspace `missing_docs = warn` sans désactiver le lint et sans documenter artificiellement les helpers privés du test. + +## Headers de fichiers + +Les deux fichiers Rust modifiés passent de : + +```text +version: 1 +``` + +à : + +```text +version: 2 +``` + +## Contrat public + +Aucun changement. + +Les éléments suivants restent strictement identiques à `0.1.1-pre.002` : + +```text +ksp_core_lib::Error +ksp_core_lib::ErrorCode +ksp_core_lib::ErrorContext +ksp_core_lib::Result +``` + +Le plan `docs/plans/003-V0_1_1_CORE_FOUNDATION_PLAN.md` reste en version documentaire 5 : aucune décision d'architecture ou d'API n'est modifiée par ce correctif. + +## Dépendances + +Aucune dépendance ajoutée ou modifiée. + +## Validations à exécuter après application + +```bash +cargo fmt --all +cargo check --workspace +cargo test --workspace +cargo clippy --workspace --all-targets +``` + +Le résultat attendu de ce correctif est l'absence des deux warnings qui ont motivé `pre.002-fix.001`. + +Aucune validation du correctif lui-même n'est déclarée réussie tant que ces commandes n'ont pas été exécutées sur le dépôt cible.