1use ra_ap_syntax::ast;
4
5#[ink_analyzer_macro::entity(macro_kind = Error)]
7#[derive(Debug, Clone, PartialEq, Eq)]
8pub struct Error {
9    ast: ast::Adt,
11}
12
13impl Error {
14    impl_pub_ast_type_getter!(adt, Adt);
15}
16
17#[cfg(test)]
18mod tests {
19    use super::*;
20    use crate::test_utils::*;
21    use crate::traits::InkEntity;
22    use quote::quote;
23    use test_utils::quote_as_str;
24
25    #[test]
26    fn cast_works() {
27        for code in [
28            quote! {
29                struct Error {
30                }
31            },
32            quote! {
33                enum Error {
34                }
35            },
36            quote! {
37                union Error {
38                }
39            },
40        ] {
41            let node = parse_first_syntax_node(quote_as_str! {
42                #[ink::error]
43                #code
44            });
45
46            let error = Error::cast(node).unwrap();
47
48            assert!(error.adt().is_some());
50        }
51    }
52}