Skip to content

Commit 3ab0faf

Browse files
committed
Implement visitor for all AST nodes
1 parent 0d2976d commit 3ab0faf

15 files changed

+7174
-78
lines changed

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
///
@@ -804,6 +806,7 @@ fn format_clickhouse_datetime_precision_and_timezone(
804806
#[derive(Debug, Clone, PartialEq, PartialOrd, Eq, Ord, Hash)]
805807
#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
806808
#[cfg_attr(feature = "visitor", derive(Visit, VisitMut))]
809+
#[cfg_attr(feature = "visitor", visit(with = "visit_struct_bracket_kind"))]
807810
pub enum StructBracketKind {
808811
/// Example: `STRUCT(a INT, b STRING)`
809812
Parentheses,
@@ -818,6 +821,7 @@ pub enum StructBracketKind {
818821
#[derive(Debug, Copy, Clone, PartialEq, PartialOrd, Eq, Ord, Hash)]
819822
#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
820823
#[cfg_attr(feature = "visitor", derive(Visit, VisitMut))]
824+
#[cfg_attr(feature = "visitor", visit(with = "visit_timezone_info"))]
821825
pub enum TimezoneInfo {
822826
/// No information about time zone, e.g. TIMESTAMP
823827
None,
@@ -866,6 +870,7 @@ impl fmt::Display for TimezoneInfo {
866870
#[derive(Debug, Copy, Clone, PartialEq, PartialOrd, Eq, Ord, Hash)]
867871
#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
868872
#[cfg_attr(feature = "visitor", derive(Visit, VisitMut))]
873+
#[cfg_attr(feature = "visitor", visit(with = "visit_exact_number_info"))]
869874
pub enum ExactNumberInfo {
870875
/// No additional information, e.g. `DECIMAL`
871876
None,
@@ -897,6 +902,7 @@ impl fmt::Display for ExactNumberInfo {
897902
#[derive(Debug, Copy, Clone, PartialEq, PartialOrd, Eq, Ord, Hash)]
898903
#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
899904
#[cfg_attr(feature = "visitor", derive(Visit, VisitMut))]
905+
#[cfg_attr(feature = "visitor", visit(with = "visit_character_length"))]
900906
pub enum CharacterLength {
901907
IntegerLength {
902908
/// Default (if VARYING) or maximum (if not VARYING) length
@@ -931,6 +937,7 @@ impl fmt::Display for CharacterLength {
931937
#[derive(Debug, Copy, Clone, PartialEq, PartialOrd, Eq, Ord, Hash)]
932938
#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
933939
#[cfg_attr(feature = "visitor", derive(Visit, VisitMut))]
940+
#[cfg_attr(feature = "visitor", visit(with = "visit_char_length_units"))]
934941
pub enum CharLengthUnits {
935942
/// CHARACTERS unit
936943
Characters,
@@ -954,6 +961,7 @@ impl fmt::Display for CharLengthUnits {
954961
#[derive(Debug, Copy, Clone, PartialEq, PartialOrd, Eq, Ord, Hash)]
955962
#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
956963
#[cfg_attr(feature = "visitor", derive(Visit, VisitMut))]
964+
#[cfg_attr(feature = "visitor", visit(with = "visit_binary_length"))]
957965
pub enum BinaryLength {
958966
IntegerLength {
959967
/// Default (if VARYING)
@@ -984,6 +992,7 @@ impl fmt::Display for BinaryLength {
984992
#[derive(Debug, Clone, PartialEq, PartialOrd, Eq, Ord, Hash)]
985993
#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
986994
#[cfg_attr(feature = "visitor", derive(Visit, VisitMut))]
995+
#[cfg_attr(feature = "visitor", visit(with = "visit_array_elem_type_def"))]
987996
pub enum ArrayElemTypeDef {
988997
/// `ARRAY`
989998
None,
@@ -1002,6 +1011,7 @@ pub enum ArrayElemTypeDef {
10021011
#[derive(Debug, Copy, Clone, PartialEq, Eq, Hash, PartialOrd, Ord)]
10031012
#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
10041013
#[cfg_attr(feature = "visitor", derive(Visit, VisitMut))]
1014+
#[cfg_attr(feature = "visitor", visit(with = "visit_geometric_type_kind"))]
10051015
pub enum GeometricTypeKind {
10061016
Point,
10071017
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)