action_macros.rs

 1use gpui::{Action, actions};
 2use gpui_macros::register_action;
 3use schemars::JsonSchema;
 4use serde::Deserialize;
 5
 6#[test]
 7fn test_action_macros() {
 8    actions!(
 9        test_only,
10        [
11            SomeAction,
12            /// Documented action
13            SomeActionWithDocs,
14        ]
15    );
16
17    #[derive(PartialEq, Clone, Deserialize, JsonSchema, Action)]
18    #[action(namespace = test_only)]
19    #[serde(deny_unknown_fields)]
20    struct AnotherAction;
21
22    #[derive(PartialEq, Clone, gpui::private::serde::Deserialize)]
23    #[serde(deny_unknown_fields)]
24    struct RegisterableAction {}
25
26    register_action!(RegisterableAction);
27
28    impl gpui::Action for RegisterableAction {
29        fn boxed_clone(&self) -> Box<dyn gpui::Action> {
30            unimplemented!()
31        }
32
33        fn partial_eq(&self, _action: &dyn gpui::Action) -> bool {
34            unimplemented!()
35        }
36
37        fn name(&self) -> &'static str {
38            unimplemented!()
39        }
40
41        fn name_for_type() -> &'static str
42        where
43            Self: Sized,
44        {
45            unimplemented!()
46        }
47
48        fn build(_value: serde_json::Value) -> anyhow::Result<Box<dyn gpui::Action>>
49        where
50            Self: Sized,
51        {
52            unimplemented!()
53        }
54    }
55}