Fix Ord derive in gccrs to use Self for generic contexts
GCC Rust's Ord derive now correctly uses `Self` to handle generic type parameters, fixing a bug with trait implementations.
Philip Herron corrected the derive macro for the Ord trait in gccrs to use Self instead of a raw type name.
This change ensures that the generic type parameters of an implementation are correctly captured when deriving Ord.
This resolves an issue with how trait implementations are handled in generic contexts, specifically fixing Rust-GCC/gccrs#4879.
In Details
In gccrs, the automatic derivation of the Ord trait (used for ordering comparisons) has been fixed. The DeriveOrd::cmp_fn now uses Self to refer to the type being implemented, which correctly accounts for generic parameters in the implementation. Previously, using a raw type name would not capture this generic state, leading to incorrect behavior in generic contexts. This resolves issue 4879 and includes a new test case.
- derive macro
- A feature in Rust that allows programmers to automatically generate implementations for certain traits. The
#[derive(...)]attribute is used to invoke these macros. - Ord trait
- A Rust trait that provides total ordering comparisons for a type. Types implementing
Ordcan be compared using operators like<,>,<=, and>=. - Self
- In Rust,
Selfis a keyword used within animplblock to refer to the type being implemented. It correctly handles generic type parameters, unlike using the concrete type name directly. - trait implementation
- The process of providing concrete functionality for the methods defined in a trait for a specific type.