Skip to content

Commit 377dfd2

Browse files
committed
Implement visitor for all AST nodes
1 parent 779dcf9 commit 377dfd2

15 files changed

Lines changed: 10195 additions & 74 deletions

src/ast/data_type.rs

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ use super::{value::escape_single_quote_string, ColumnDef};
3232
#[derive(Debug, Clone, PartialEq, PartialOrd, Eq, Ord, Hash)]
3333
#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
3434
#[cfg_attr(feature = "visitor", derive(Visit, VisitMut))]
35+
#[cfg_attr(feature = "visitor", visit(with = "visit_enum_member"))]
3536
pub enum EnumMember {
3637
Name(String),
3738
/// ClickHouse allows to specify an integer value for each enum value.
@@ -44,6 +45,7 @@ pub enum EnumMember {
4445
#[derive(Debug, Clone, PartialEq, PartialOrd, Eq, Ord, Hash)]
4546
#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
4647
#[cfg_attr(feature = "visitor", derive(Visit, VisitMut))]
48+
#[cfg_attr(feature = "visitor", visit(with = "visit_data_type"))]
4749
pub enum DataType {
4850
/// Table type in [PostgreSQL], e.g. CREATE FUNCTION RETURNS TABLE(...).
4951
///
@@ -852,6 +854,7 @@ fn format_clickhouse_datetime_precision_and_timezone(
852854
#[derive(Debug, Clone, PartialEq, PartialOrd, Eq, Ord, Hash)]
853855
#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
854856
#[cfg_attr(feature = "visitor", derive(Visit, VisitMut))]
857+
#[cfg_attr(feature = "visitor", visit(with = "visit_struct_bracket_kind"))]
855858
pub enum StructBracketKind {
856859
/// Example: `STRUCT(a INT, b STRING)`
857860
Parentheses,
@@ -866,6 +869,7 @@ pub enum StructBracketKind {
866869
#[derive(Debug, Copy, Clone, PartialEq, PartialOrd, Eq, Ord, Hash)]
867870
#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
868871
#[cfg_attr(feature = "visitor", derive(Visit, VisitMut))]
872+
#[cfg_attr(feature = "visitor", visit(with = "visit_timezone_info"))]
869873
pub enum TimezoneInfo {
870874
/// No information about time zone, e.g. TIMESTAMP
871875
None,
@@ -956,6 +960,7 @@ impl fmt::Display for IntervalFields {
956960
#[derive(Debug, Copy, Clone, PartialEq, PartialOrd, Eq, Ord, Hash)]
957961
#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
958962
#[cfg_attr(feature = "visitor", derive(Visit, VisitMut))]
963+
#[cfg_attr(feature = "visitor", visit(with = "visit_exact_number_info"))]
959964
pub enum ExactNumberInfo {
960965
/// No additional information, e.g. `DECIMAL`
961966
None,
@@ -987,6 +992,7 @@ impl fmt::Display for ExactNumberInfo {
987992
#[derive(Debug, Copy, Clone, PartialEq, PartialOrd, Eq, Ord, Hash)]
988993
#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
989994
#[cfg_attr(feature = "visitor", derive(Visit, VisitMut))]
995+
#[cfg_attr(feature = "visitor", visit(with = "visit_character_length"))]
990996
pub enum CharacterLength {
991997
IntegerLength {
992998
/// Default (if VARYING) or maximum (if not VARYING) length
@@ -1021,6 +1027,7 @@ impl fmt::Display for CharacterLength {
10211027
#[derive(Debug, Copy, Clone, PartialEq, PartialOrd, Eq, Ord, Hash)]
10221028
#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
10231029
#[cfg_attr(feature = "visitor", derive(Visit, VisitMut))]
1030+
#[cfg_attr(feature = "visitor", visit(with = "visit_char_length_units"))]
10241031
pub enum CharLengthUnits {
10251032
/// CHARACTERS unit
10261033
Characters,
@@ -1044,6 +1051,7 @@ impl fmt::Display for CharLengthUnits {
10441051
#[derive(Debug, Copy, Clone, PartialEq, PartialOrd, Eq, Ord, Hash)]
10451052
#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
10461053
#[cfg_attr(feature = "visitor", derive(Visit, VisitMut))]
1054+
#[cfg_attr(feature = "visitor", visit(with = "visit_binary_length"))]
10471055
pub enum BinaryLength {
10481056
IntegerLength {
10491057
/// Default (if VARYING)
@@ -1074,6 +1082,7 @@ impl fmt::Display for BinaryLength {
10741082
#[derive(Debug, Clone, PartialEq, PartialOrd, Eq, Ord, Hash)]
10751083
#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
10761084
#[cfg_attr(feature = "visitor", derive(Visit, VisitMut))]
1085+
#[cfg_attr(feature = "visitor", visit(with = "visit_array_elem_type_def"))]
10771086
pub enum ArrayElemTypeDef {
10781087
/// `ARRAY`
10791088
None,
@@ -1092,6 +1101,7 @@ pub enum ArrayElemTypeDef {
10921101
#[derive(Debug, Copy, Clone, PartialEq, Eq, Hash, PartialOrd, Ord)]
10931102
#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
10941103
#[cfg_attr(feature = "visitor", derive(Visit, VisitMut))]
1104+
#[cfg_attr(feature = "visitor", visit(with = "visit_geometric_type_kind"))]
10951105
pub enum GeometricTypeKind {
10961106
Point,
10971107
Line,

src/ast/dcl.rs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@ use crate::ast::{display_separated, ObjectName};
3737
#[derive(Debug, Clone, PartialEq, PartialOrd, Eq, Ord, Hash)]
3838
#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
3939
#[cfg_attr(feature = "visitor", derive(Visit, VisitMut))]
40+
#[cfg_attr(feature = "visitor", visit(with = "visit_role_option"))]
4041
pub enum RoleOption {
4142
BypassRLS(bool),
4243
ConnectionLimit(Expr),
@@ -102,6 +103,7 @@ impl fmt::Display for RoleOption {
102103
#[derive(Debug, Clone, PartialEq, PartialOrd, Eq, Ord, Hash)]
103104
#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
104105
#[cfg_attr(feature = "visitor", derive(Visit, VisitMut))]
106+
#[cfg_attr(feature = "visitor", visit(with = "visit_set_config_value"))]
105107
pub enum SetConfigValue {
106108
Default,
107109
FromCurrent,
@@ -114,6 +116,7 @@ pub enum SetConfigValue {
114116
#[derive(Debug, Clone, PartialEq, PartialOrd, Eq, Ord, Hash)]
115117
#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
116118
#[cfg_attr(feature = "visitor", derive(Visit, VisitMut))]
119+
#[cfg_attr(feature = "visitor", visit(with = "visit_reset_config"))]
117120
pub enum ResetConfig {
118121
ALL,
119122
ConfigName(ObjectName),
@@ -123,6 +126,7 @@ pub enum ResetConfig {
123126
#[derive(Debug, Clone, PartialEq, PartialOrd, Eq, Ord, Hash)]
124127
#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
125128
#[cfg_attr(feature = "visitor", derive(Visit, VisitMut))]
129+
#[cfg_attr(feature = "visitor", visit(with = "visit_alter_role_operation"))]
126130
pub enum AlterRoleOperation {
127131
/// Generic
128132
RenameRole {
@@ -203,6 +207,7 @@ impl fmt::Display for AlterRoleOperation {
203207
#[derive(Debug, Clone, PartialEq, PartialOrd, Eq, Ord, Hash)]
204208
#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
205209
#[cfg_attr(feature = "visitor", derive(Visit, VisitMut))]
210+
#[cfg_attr(feature = "visitor", visit(with = "visit_use"))]
206211
pub enum Use {
207212
Catalog(ObjectName), // e.g. `USE CATALOG foo.bar`
208213
Schema(ObjectName), // e.g. `USE SCHEMA foo.bar`
@@ -237,6 +242,7 @@ impl fmt::Display for Use {
237242
#[derive(Debug, Clone, PartialEq, PartialOrd, Eq, Ord, Hash)]
238243
#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
239244
#[cfg_attr(feature = "visitor", derive(Visit, VisitMut))]
245+
#[cfg_attr(feature = "visitor", visit(with = "visit_secondary_roles"))]
240246
pub enum SecondaryRoles {
241247
All,
242248
None,

0 commit comments

Comments
 (0)