Follows on from https://github.com/zed-industries/zed/pull/37716#pullrequestreview-3195695110 by @SomeoneToIgnore After this the doctests will be run in CI to check that the examples are still accurate. Note that doctests aren't run by Nextest: you can run them locally with `cargo test --doc`. Summary: * Run tests from CI * Loosen an exact float comparison to match approximately (otherwise it fails) * Fixed one actual bug in the tests for `dilate` where the test code assumed that `dilate` mutates `self` rather than returning a new object * Add some `must_use` on some functions that seemed at risk of similar bugs, following the Rust stdlib style to add it where ignoring the result is almost certainly a bug. * Fix some cases where the doc examples seem to have gone out of date with the code * Add imports to doctests that need them * Add some dev-dependencies to make the tests build * Fix the `key_dispatch` module docstring, which was accidentally attached to objects within that module * Skip some doctest examples that seem like they need an async environment or that just looked hard to get running AI usage: I asked Claude to do some of the repetitive tests. I checked the output and fixed up some things that seemed to not be in the right spirit of the test, or too longwinded. I think we could reasonably run the tests on only Linux to save CI CPU-seconds and latency, but I haven't done that yet, partly because of how it's implemented in the action. Release Notes: - N/A
38 lines
1.1 KiB
Rust
38 lines
1.1 KiB
Rust
mod derive_register_component;
|
|
mod dynamic_spacing;
|
|
|
|
use proc_macro::TokenStream;
|
|
|
|
/// Generates the DynamicSpacing enum used for density-aware spacing in the UI.
|
|
#[proc_macro]
|
|
pub fn derive_dynamic_spacing(input: TokenStream) -> TokenStream {
|
|
dynamic_spacing::derive_spacing(input)
|
|
}
|
|
|
|
/// Registers components that implement the `Component` trait.
|
|
///
|
|
/// This proc macro is used to automatically register structs that implement
|
|
/// the `Component` trait with the [`component::ComponentRegistry`].
|
|
///
|
|
/// If the component trait is not implemented, it will generate a compile-time error.
|
|
///
|
|
/// # Example
|
|
///
|
|
/// ```
|
|
/// use ui::Component;
|
|
/// use ui_macros::RegisterComponent;
|
|
///
|
|
/// #[derive(RegisterComponent)]
|
|
/// struct MyComponent;
|
|
///
|
|
/// impl Component for MyComponent {
|
|
/// // Component implementation
|
|
/// }
|
|
/// ```
|
|
///
|
|
/// This example will add MyComponent to the ComponentRegistry.
|
|
#[proc_macro_derive(RegisterComponent)]
|
|
pub fn derive_register_component(input: TokenStream) -> TokenStream {
|
|
derive_register_component::derive_register_component(input)
|
|
}
|