use crate::ast::NoExt;
use crate::ast::dialect::FeatureSet;
use crate::parser::Dialect;
use crate::render::RenderDialect;
#[derive(Clone, Copy, Debug, Default, PartialEq, Eq, Hash)]
pub struct Ansi;
impl Dialect for Ansi {
type Ext = NoExt;
fn features(&self) -> &FeatureSet {
&FeatureSet::ANSI
}
}
impl RenderDialect for Ansi {
fn render_features(&self) -> FeatureSet {
FeatureSet::ANSI
}
}
#[cfg(test)]
mod tests {
use super::*;
use crate::ast::Statement;
use crate::dialect::parse;
use crate::dialect::test_support::assert_full_grammar;
#[test]
fn ansi_parses_the_full_m1_select_grammar() {
assert_full_grammar(Ansi);
}
#[test]
fn parse_convenience_defaults_to_ansi() {
let parsed = parse("SELECT 1").expect("`SELECT 1` parses");
assert_eq!(parsed.statements().len(), 1, "one statement");
assert!(
matches!(parsed.statements()[0], Statement::Query { .. }),
"a query statement",
);
}
}