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}