mod gpui_pre_facade_paths;
mod bench;
mod derive_action;
mod derive_app_context;
mod derive_into_element;
mod derive_render;
mod derive_visual_context;
mod property_test;
mod register_action;
mod styles;
mod test;
#[cfg(any(feature = "inspector", debug_assertions))]
mod derive_inspector_reflection;
use proc_macro::TokenStream;
use syn::{DeriveInput, Ident};
#[proc_macro_derive(Action, attributes(action))]
pub fn derive_action(input: TokenStream) -> TokenStream {
gpui_pre_facade_paths::rewrite(__gpui_pre_derive_action(input))
}
fn __gpui_pre_derive_action(input: TokenStream) -> TokenStream {
derive_action::derive_action(input)
}
#[proc_macro]
pub fn register_action(ident: TokenStream) -> TokenStream {
gpui_pre_facade_paths::rewrite(__gpui_pre_register_action(ident))
}
fn __gpui_pre_register_action(ident: TokenStream) -> TokenStream {
register_action::register_action(ident)
}
#[proc_macro_derive(IntoElement)]
pub fn derive_into_element(input: TokenStream) -> TokenStream {
gpui_pre_facade_paths::rewrite(__gpui_pre_derive_into_element(input))
}
fn __gpui_pre_derive_into_element(input: TokenStream) -> TokenStream {
derive_into_element::derive_into_element(input)
}
#[proc_macro_derive(Render)]
#[doc(hidden)]
pub fn derive_render(input: TokenStream) -> TokenStream {
gpui_pre_facade_paths::rewrite(__gpui_pre_derive_render(input))
}
fn __gpui_pre_derive_render(input: TokenStream) -> TokenStream {
derive_render::derive_render(input)
}
#[proc_macro_derive(AppContext, attributes(app))]
pub fn derive_app_context(input: TokenStream) -> TokenStream {
gpui_pre_facade_paths::rewrite(__gpui_pre_derive_app_context(input))
}
fn __gpui_pre_derive_app_context(input: TokenStream) -> TokenStream {
derive_app_context::derive_app_context(input)
}
#[proc_macro_derive(VisualContext, attributes(window, app))]
pub fn derive_visual_context(input: TokenStream) -> TokenStream {
gpui_pre_facade_paths::rewrite(__gpui_pre_derive_visual_context(input))
}
fn __gpui_pre_derive_visual_context(input: TokenStream) -> TokenStream {
derive_visual_context::derive_visual_context(input)
}
#[proc_macro]
#[doc(hidden)]
pub fn style_helpers(input: TokenStream) -> TokenStream {
gpui_pre_facade_paths::rewrite(__gpui_pre_style_helpers(input))
}
fn __gpui_pre_style_helpers(input: TokenStream) -> TokenStream {
styles::style_helpers(input)
}
#[proc_macro]
pub fn visibility_style_methods(input: TokenStream) -> TokenStream {
gpui_pre_facade_paths::rewrite(__gpui_pre_visibility_style_methods(input))
}
fn __gpui_pre_visibility_style_methods(input: TokenStream) -> TokenStream {
styles::visibility_style_methods(input)
}
#[proc_macro]
pub fn margin_style_methods(input: TokenStream) -> TokenStream {
gpui_pre_facade_paths::rewrite(__gpui_pre_margin_style_methods(input))
}
fn __gpui_pre_margin_style_methods(input: TokenStream) -> TokenStream {
styles::margin_style_methods(input)
}
#[proc_macro]
pub fn padding_style_methods(input: TokenStream) -> TokenStream {
gpui_pre_facade_paths::rewrite(__gpui_pre_padding_style_methods(input))
}
fn __gpui_pre_padding_style_methods(input: TokenStream) -> TokenStream {
styles::padding_style_methods(input)
}
#[proc_macro]
pub fn position_style_methods(input: TokenStream) -> TokenStream {
gpui_pre_facade_paths::rewrite(__gpui_pre_position_style_methods(input))
}
fn __gpui_pre_position_style_methods(input: TokenStream) -> TokenStream {
styles::position_style_methods(input)
}
#[proc_macro]
pub fn overflow_style_methods(input: TokenStream) -> TokenStream {
gpui_pre_facade_paths::rewrite(__gpui_pre_overflow_style_methods(input))
}
fn __gpui_pre_overflow_style_methods(input: TokenStream) -> TokenStream {
styles::overflow_style_methods(input)
}
#[proc_macro]
pub fn cursor_style_methods(input: TokenStream) -> TokenStream {
gpui_pre_facade_paths::rewrite(__gpui_pre_cursor_style_methods(input))
}
fn __gpui_pre_cursor_style_methods(input: TokenStream) -> TokenStream {
styles::cursor_style_methods(input)
}
#[proc_macro]
pub fn border_style_methods(input: TokenStream) -> TokenStream {
gpui_pre_facade_paths::rewrite(__gpui_pre_border_style_methods(input))
}
fn __gpui_pre_border_style_methods(input: TokenStream) -> TokenStream {
styles::border_style_methods(input)
}
#[proc_macro]
pub fn box_shadow_style_methods(input: TokenStream) -> TokenStream {
gpui_pre_facade_paths::rewrite(__gpui_pre_box_shadow_style_methods(input))
}
fn __gpui_pre_box_shadow_style_methods(input: TokenStream) -> TokenStream {
styles::box_shadow_style_methods(input)
}
#[proc_macro_attribute]
pub fn test(args: TokenStream, function: TokenStream) -> TokenStream {
gpui_pre_facade_paths::rewrite(__gpui_pre_test(args, function))
}
fn __gpui_pre_test(args: TokenStream, function: TokenStream) -> TokenStream {
test::test(args, function)
}
#[proc_macro_attribute]
pub fn bench(args: TokenStream, function: TokenStream) -> TokenStream {
gpui_pre_facade_paths::rewrite(__gpui_pre_bench(args, function))
}
fn __gpui_pre_bench(args: TokenStream, function: TokenStream) -> TokenStream {
bench::bench(args, function)
}
#[proc_macro_attribute]
pub fn property_test(args: TokenStream, function: TokenStream) -> TokenStream {
gpui_pre_facade_paths::rewrite(__gpui_pre_property_test(args, function))
}
fn __gpui_pre_property_test(args: TokenStream, function: TokenStream) -> TokenStream {
property_test::test(args.into(), function.into()).into()
}
#[cfg(any(feature = "inspector", debug_assertions))]
#[proc_macro_attribute]
pub fn derive_inspector_reflection(_args: TokenStream, input: TokenStream) -> TokenStream {
gpui_pre_facade_paths::rewrite(__gpui_pre_derive_inspector_reflection(_args, input))
}
fn __gpui_pre_derive_inspector_reflection(_args: TokenStream, input: TokenStream) -> TokenStream {
derive_inspector_reflection::derive_inspector_reflection(_args, input)
}
pub(crate) fn get_simple_attribute_field(ast: &DeriveInput, name: &'static str) -> Option<Ident> {
match &ast.data {
syn::Data::Struct(data_struct) => data_struct
.fields
.iter()
.find(|field| field.attrs.iter().any(|attr| attr.path().is_ident(name)))
.map(|field| field.ident.clone().unwrap()),
syn::Data::Enum(_) => None,
syn::Data::Union(_) => None,
}
}