1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
//! # ink! analyzer
//! A library for semantic analysis of [ink!] smart contracts.
//!
//! [ink!]: https://use.ink/
//!
//! # Example
//! Analyzing ink! smart contract code.
//!
//! ```
//! use ink_analyzer::{Analysis, TextSize, TextRange, Version};
//!
//! fn do_analysis() {
//! // Smart contract code.
//! let code = r#"
//! #[ink::contract]
//! mod my_contract {
//!
//! #[ink(storage)]
//! pub struct MyContract {
//! value: bool,
//! }
//!
//! // --snip--
//! }
//! "#;
//!
//! // Creates analysis snapshot.
//! let analysis = Analysis::new(code, Version::V6);
//!
//! // Computes diagnostics.
//! let diagnostics = analysis.diagnostics();
//! dbg!(&diagnostics);
//!
//! // Sets the cursor position.
//! let position = TextSize::from(9);
//!
//! // Computes completions.
//! let completions = analysis.completions(position);
//! dbg!(&completions);
//!
//! // Sets the focus range.
//! let range = TextRange::new(position, TextSize::from(25));
//!
//! // Computes code/intent actions.
//! let actions = analysis.actions(range);
//! dbg!(&actions);
//!
//! // Gets hover content.
//! let hover = analysis.hover(range);
//! dbg!(&hover);
//!
//! // Computes inlay hints.
//! let inlay_hints = analysis.inlay_hints(None);
//! dbg!(&inlay_hints);
//!
//! // Computes signature help.
//! let signature_help = analysis.signature_help(TextSize::from(71));
//! dbg!(&signature_help);
//! }
//!
//! fn project_code_stubs() {
//! // Generates ink! project code stubs/snippets.
//! let project = ink_analyzer::new_project(String::from("hello_world"), Version::V6);
//! dbg!(&project);
//! }
//! ```
pub use ;
pub use ;