@@ -34,63 +34,21 @@ pub use self::snowflake::SnowflakeDialect;
34
34
pub use self :: sqlite:: SQLiteDialect ;
35
35
pub use crate :: keywords;
36
36
37
- /// `dialect_of!(parser is SQLiteDialect | GenericDialect)` evaluates
38
- /// to `true` if `parser.dialect` is one of the `Dialect`s specified.
39
- macro_rules! dialect_of {
40
- ( $parsed_dialect: ident is $( $dialect_type: ty) |+ ) => {
41
- ( $( $parsed_dialect. dialect. is:: <$dialect_type>( ) ) ||+)
42
- } ;
43
- }
44
-
45
37
pub trait Dialect : Debug + Any {
46
38
/// Determine if a character starts a quoted identifier. The default
47
39
/// implementation, accepting "double quoted" ids is both ANSI-compliant
48
40
/// and appropriate for most dialects (with the notable exception of
49
41
/// MySQL, MS SQL, and sqlite). You can accept one of characters listed
50
42
/// in `Word::matching_end_quote` here
51
- fn is_delimited_identifier_start ( & self , ch : char ) -> bool {
43
+ fn is_delimited_identifier_start ( ch : char ) -> bool {
52
44
ch == '"'
53
45
}
54
46
/// Determine if a character is a valid start character for an unquoted identifier
55
- fn is_identifier_start ( & self , ch : char ) -> bool ;
47
+ fn is_identifier_start ( ch : char ) -> bool ;
56
48
/// Determine if a character is a valid unquoted identifier character
57
- fn is_identifier_part ( & self , ch : char ) -> bool ;
58
- }
59
-
60
- impl dyn Dialect {
61
- #[ inline]
62
- pub fn is < T : Dialect > ( & self ) -> bool {
63
- // borrowed from `Any` implementation
64
- TypeId :: of :: < T > ( ) == self . type_id ( )
65
- }
66
- }
67
-
68
- #[ cfg( test) ]
69
- mod tests {
70
- use super :: ansi:: AnsiDialect ;
71
- use super :: generic:: GenericDialect ;
72
- use super :: * ;
73
-
74
- struct DialectHolder < ' a > {
75
- dialect : & ' a dyn Dialect ,
76
- }
77
-
78
- #[ test]
79
- fn test_is_dialect ( ) {
80
- let generic_dialect: & dyn Dialect = & GenericDialect { } ;
81
- let ansi_dialect: & dyn Dialect = & AnsiDialect { } ;
82
-
83
- let generic_holder = DialectHolder {
84
- dialect : generic_dialect,
85
- } ;
86
- let ansi_holder = DialectHolder {
87
- dialect : ansi_dialect,
88
- } ;
49
+ fn is_identifier_part ( ch : char ) -> bool ;
89
50
90
- assert ! ( dialect_of!( generic_holder is GenericDialect | AnsiDialect ) , ) ;
91
- assert ! ( !dialect_of!( generic_holder is AnsiDialect ) ) ;
92
- assert ! ( dialect_of!( ansi_holder is AnsiDialect ) ) ;
93
- assert ! ( dialect_of!( ansi_holder is GenericDialect | AnsiDialect ) ) ;
94
- assert ! ( !dialect_of!( ansi_holder is GenericDialect | MsSqlDialect ) ) ;
51
+ fn is < T : Dialect > ( ) -> bool {
52
+ TypeId :: of :: < Self > ( ) == TypeId :: of :: < T > ( )
95
53
}
96
54
}
0 commit comments