Skip to main content

solidity_language_server/solc_ast/
variables.rs

1//! Variable declaration AST node types.
2
3use serde::{Deserialize, Serialize};
4
5use super::{
6    Documentation, Expression, Mutability, NodeID, OverrideSpecifier, StorageLocation,
7    TypeDescriptions, TypeName, Visibility,
8};
9
10/// A variable declaration.
11///
12/// Used for state variables, local variables, function parameters, and
13/// return parameters.
14#[derive(Clone, Debug, Deserialize, Serialize, PartialEq, Eq)]
15#[serde(rename_all = "camelCase")]
16pub struct VariableDeclaration {
17    pub id: NodeID,
18    pub src: String,
19    pub name: String,
20    #[serde(default)]
21    pub name_location: Option<String>,
22    #[serde(default)]
23    pub type_name: Option<TypeName>,
24    #[serde(default)]
25    pub constant: Option<bool>,
26    #[serde(default)]
27    pub mutability: Option<Mutability>,
28    #[serde(default)]
29    pub state_variable: Option<bool>,
30    #[serde(default)]
31    pub storage_location: Option<StorageLocation>,
32    #[serde(default)]
33    pub visibility: Option<Visibility>,
34    /// Initial value expression (for state variables with initializers).
35    #[serde(default)]
36    pub value: Option<Expression>,
37    /// Whether this parameter is `indexed` (only relevant in events).
38    #[serde(default)]
39    pub indexed: Option<bool>,
40    #[serde(default)]
41    pub scope: Option<NodeID>,
42    #[serde(default)]
43    pub type_descriptions: TypeDescriptions,
44    /// Override specifier, if present.
45    #[serde(default)]
46    pub overrides: Option<OverrideSpecifier>,
47    /// Function selector for public state variables.
48    #[serde(default)]
49    pub function_selector: Option<String>,
50    /// Base functions this variable overrides.
51    #[serde(default)]
52    pub base_functions: Option<Vec<NodeID>>,
53    /// Documentation (NatSpec) for state variables.
54    #[serde(default)]
55    pub documentation: Option<Documentation>,
56}