Skip to content

Commit 234503c

Browse files
committed
Implement visitor for all AST nodes
1 parent 073df28 commit 234503c

15 files changed

Lines changed: 10198 additions & 84 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
/// A member of an ENUM type.
3637
pub enum EnumMember {
3738
/// Just a name.
@@ -46,6 +47,7 @@ pub enum EnumMember {
4647
#[derive(Debug, Clone, PartialEq, PartialOrd, Eq, Ord, Hash)]
4748
#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
4849
#[cfg_attr(feature = "visitor", derive(Visit, VisitMut))]
50+
#[cfg_attr(feature = "visitor", visit(with = "visit_data_type"))]
4951
pub enum DataType {
5052
/// Table type in [PostgreSQL], e.g. CREATE FUNCTION RETURNS TABLE(...).
5153
///
@@ -897,6 +899,7 @@ fn format_clickhouse_datetime_precision_and_timezone(
897899
#[derive(Debug, Clone, Copy, PartialEq, PartialOrd, Eq, Ord, Hash)]
898900
#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
899901
#[cfg_attr(feature = "visitor", derive(Visit, VisitMut))]
902+
#[cfg_attr(feature = "visitor", visit(with = "visit_struct_bracket_kind"))]
900903
pub enum StructBracketKind {
901904
/// Example: `STRUCT(a INT, b STRING)`
902905
Parentheses,
@@ -911,6 +914,7 @@ pub enum StructBracketKind {
911914
#[derive(Debug, Copy, Clone, PartialEq, PartialOrd, Eq, Ord, Hash)]
912915
#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
913916
#[cfg_attr(feature = "visitor", derive(Visit, VisitMut))]
917+
#[cfg_attr(feature = "visitor", visit(with = "visit_timezone_info"))]
914918
pub enum TimezoneInfo {
915919
/// No information about time zone, e.g. TIMESTAMP
916920
None,
@@ -1014,6 +1018,7 @@ impl fmt::Display for IntervalFields {
10141018
#[derive(Debug, Copy, Clone, PartialEq, PartialOrd, Eq, Ord, Hash)]
10151019
#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
10161020
#[cfg_attr(feature = "visitor", derive(Visit, VisitMut))]
1021+
#[cfg_attr(feature = "visitor", visit(with = "visit_exact_number_info"))]
10171022
pub enum ExactNumberInfo {
10181023
/// No additional information, e.g. `DECIMAL`.
10191024
None,
@@ -1045,6 +1050,7 @@ impl fmt::Display for ExactNumberInfo {
10451050
#[derive(Debug, Copy, Clone, PartialEq, PartialOrd, Eq, Ord, Hash)]
10461051
#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
10471052
#[cfg_attr(feature = "visitor", derive(Visit, VisitMut))]
1053+
#[cfg_attr(feature = "visitor", visit(with = "visit_character_length"))]
10481054
pub enum CharacterLength {
10491055
/// Integer length with optional unit (e.g. `CHAR(10)` or `VARCHAR(10 CHARACTERS)`).
10501056
IntegerLength {
@@ -1080,6 +1086,7 @@ impl fmt::Display for CharacterLength {
10801086
#[derive(Debug, Copy, Clone, PartialEq, PartialOrd, Eq, Ord, Hash)]
10811087
#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
10821088
#[cfg_attr(feature = "visitor", derive(Visit, VisitMut))]
1089+
#[cfg_attr(feature = "visitor", visit(with = "visit_char_length_units"))]
10831090
pub enum CharLengthUnits {
10841091
/// CHARACTERS unit
10851092
Characters,
@@ -1103,6 +1110,7 @@ impl fmt::Display for CharLengthUnits {
11031110
#[derive(Debug, Copy, Clone, PartialEq, PartialOrd, Eq, Ord, Hash)]
11041111
#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
11051112
#[cfg_attr(feature = "visitor", derive(Visit, VisitMut))]
1113+
#[cfg_attr(feature = "visitor", visit(with = "visit_binary_length"))]
11061114
/// Information about [binary length][1], including length and possibly unit.
11071115
///
11081116
/// [1]: https://jakewheat.github.io/sql-overview/sql-2016-foundation-grammar.html#binary-length
@@ -1137,6 +1145,7 @@ impl fmt::Display for BinaryLength {
11371145
#[derive(Debug, Clone, PartialEq, PartialOrd, Eq, Ord, Hash)]
11381146
#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
11391147
#[cfg_attr(feature = "visitor", derive(Visit, VisitMut))]
1148+
#[cfg_attr(feature = "visitor", visit(with = "visit_array_elem_type_def"))]
11401149
pub enum ArrayElemTypeDef {
11411150
/// Use `ARRAY` style without an explicit element type.
11421151
None,
@@ -1155,6 +1164,7 @@ pub enum ArrayElemTypeDef {
11551164
#[derive(Debug, Copy, Clone, PartialEq, Eq, Hash, PartialOrd, Ord)]
11561165
#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
11571166
#[cfg_attr(feature = "visitor", derive(Visit, VisitMut))]
1167+
#[cfg_attr(feature = "visitor", visit(with = "visit_geometric_type_kind"))]
11581168
pub enum GeometricTypeKind {
11591169
/// Point geometry
11601170
Point,

src/ast/dcl.rs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@ use crate::tokenizer::Span;
4141
#[derive(Debug, Clone, PartialEq, PartialOrd, Eq, Ord, Hash)]
4242
#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
4343
#[cfg_attr(feature = "visitor", derive(Visit, VisitMut))]
44+
#[cfg_attr(feature = "visitor", visit(with = "visit_role_option"))]
4445
pub enum RoleOption {
4546
/// Enable or disable BYPASSRLS.
4647
BypassRLS(bool),
@@ -116,6 +117,7 @@ impl fmt::Display for RoleOption {
116117
#[derive(Debug, Clone, PartialEq, PartialOrd, Eq, Ord, Hash)]
117118
#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
118119
#[cfg_attr(feature = "visitor", derive(Visit, VisitMut))]
120+
#[cfg_attr(feature = "visitor", visit(with = "visit_set_config_value"))]
119121
pub enum SetConfigValue {
120122
/// Use the default value.
121123
Default,
@@ -131,6 +133,7 @@ pub enum SetConfigValue {
131133
#[derive(Debug, Clone, PartialEq, PartialOrd, Eq, Ord, Hash)]
132134
#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
133135
#[cfg_attr(feature = "visitor", derive(Visit, VisitMut))]
136+
#[cfg_attr(feature = "visitor", visit(with = "visit_reset_config"))]
134137
pub enum ResetConfig {
135138
/// Reset all configuration parameters.
136139
ALL,
@@ -142,6 +145,7 @@ pub enum ResetConfig {
142145
#[derive(Debug, Clone, PartialEq, PartialOrd, Eq, Ord, Hash)]
143146
#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
144147
#[cfg_attr(feature = "visitor", derive(Visit, VisitMut))]
148+
#[cfg_attr(feature = "visitor", visit(with = "visit_alter_role_operation"))]
145149
pub enum AlterRoleOperation {
146150
/// Generic
147151
RenameRole {
@@ -242,6 +246,7 @@ impl fmt::Display for AlterRoleOperation {
242246
#[derive(Debug, Clone, PartialEq, PartialOrd, Eq, Ord, Hash)]
243247
#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
244248
#[cfg_attr(feature = "visitor", derive(Visit, VisitMut))]
249+
#[cfg_attr(feature = "visitor", visit(with = "visit_use"))]
245250
pub enum Use {
246251
/// Switch to the given catalog (e.g. `USE CATALOG ...`).
247252
Catalog(ObjectName),
@@ -284,6 +289,7 @@ impl fmt::Display for Use {
284289
#[derive(Debug, Clone, PartialEq, PartialOrd, Eq, Ord, Hash)]
285290
#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
286291
#[cfg_attr(feature = "visitor", derive(Visit, VisitMut))]
292+
#[cfg_attr(feature = "visitor", visit(with = "visit_secondary_roles"))]
287293
pub enum SecondaryRoles {
288294
/// Use all secondary roles.
289295
All,

0 commit comments

Comments
 (0)