From 6354f7aeed0a9e851d03aecea527fa4b33db4bee Mon Sep 17 00:00:00 2001 From: Steve Dignam Date: Sat, 17 May 2025 13:04:36 -0400 Subject: [PATCH] syntax: rename top level Item enum to Stmt working on ungrammar and this is more descriptive, rust-analyzer uses Item, but all top level things in postgres are statements --- .../src/rules/adding_field_with_default.rs | 2 +- .../rules/adding_foreign_key_constraint.rs | 2 +- .../src/rules/adding_not_null_field.rs | 2 +- .../rules/adding_primary_key_constraint.rs | 2 +- .../src/rules/adding_required_field.rs | 2 +- .../ban_alter_domain_with_add_constraint.rs | 2 +- ...oncurrent_index_creation_in_transaction.rs | 6 +- .../ban_create_domain_with_constraint.rs | 2 +- .../src/rules/ban_drop_column.rs | 2 +- .../src/rules/ban_drop_database.rs | 2 +- .../src/rules/ban_drop_not_null.rs | 2 +- .../squawk_linter/src/rules/ban_drop_table.rs | 2 +- .../src/rules/ban_truncate_cascade.rs | 2 +- .../src/rules/changing_column_type.rs | 2 +- .../src/rules/constraint_missing_not_valid.rs | 14 ++-- .../src/rules/disallow_unique_constraint.rs | 2 +- .../src/rules/prefer_robust_stmts.rs | 16 ++-- .../src/rules/renaming_column.rs | 2 +- .../squawk_linter/src/rules/renaming_table.rs | 2 +- .../require_concurrent_index_creation.rs | 2 +- .../require_concurrent_index_deletion.rs | 2 +- .../src/rules/transaction_nesting.rs | 4 +- crates/squawk_linter/src/visitors.rs | 4 +- crates/squawk_syntax/src/ast/nodes.rs | 76 +++++++++---------- crates/squawk_syntax/src/ast/traits.rs | 2 +- crates/squawk_syntax/src/lib.rs | 2 +- crates/xtask/src/new_rule.rs | 2 +- 27 files changed, 81 insertions(+), 81 deletions(-) diff --git a/crates/squawk_linter/src/rules/adding_field_with_default.rs b/crates/squawk_linter/src/rules/adding_field_with_default.rs index 7eeea117..fc03201c 100644 --- a/crates/squawk_linter/src/rules/adding_field_with_default.rs +++ b/crates/squawk_linter/src/rules/adding_field_with_default.rs @@ -58,7 +58,7 @@ pub(crate) fn adding_field_with_default(ctx: &mut Linter, parse: &Parse { diff --git a/crates/squawk_linter/src/rules/adding_not_null_field.rs b/crates/squawk_linter/src/rules/adding_not_null_field.rs index 9198205d..08d05016 100644 --- a/crates/squawk_linter/src/rules/adding_not_null_field.rs +++ b/crates/squawk_linter/src/rules/adding_not_null_field.rs @@ -11,7 +11,7 @@ pub(crate) fn adding_not_null_field(ctx: &mut Linter, parse: &Parse) } let file = parse.tree(); for item in file.items() { - if let ast::Item::AlterTable(alter_table) = item { + if let ast::Stmt::AlterTable(alter_table) = item { for action in alter_table.actions() { if let ast::AlterTableAction::AlterColumn(alter_column) = action { let Some(option) = alter_column.option() else { diff --git a/crates/squawk_linter/src/rules/adding_primary_key_constraint.rs b/crates/squawk_linter/src/rules/adding_primary_key_constraint.rs index 7e3663fa..bcc3ce31 100644 --- a/crates/squawk_linter/src/rules/adding_primary_key_constraint.rs +++ b/crates/squawk_linter/src/rules/adding_primary_key_constraint.rs @@ -10,7 +10,7 @@ pub(crate) fn adding_primary_key_constraint(ctx: &mut Linter, parse: &Parse { diff --git a/crates/squawk_linter/src/rules/adding_required_field.rs b/crates/squawk_linter/src/rules/adding_required_field.rs index 6d363581..1d23e0e3 100644 --- a/crates/squawk_linter/src/rules/adding_required_field.rs +++ b/crates/squawk_linter/src/rules/adding_required_field.rs @@ -8,7 +8,7 @@ use crate::{Linter, Rule, Violation}; pub(crate) fn adding_required_field(ctx: &mut Linter, parse: &Parse) { let file = parse.tree(); for item in file.items() { - if let ast::Item::AlterTable(alter_table) = item { + if let ast::Stmt::AlterTable(alter_table) = item { for action in alter_table.actions() { if let ast::AlterTableAction::AddColumn(add_column) = action { if has_generated_constrait(add_column.constraints()) { diff --git a/crates/squawk_linter/src/rules/ban_alter_domain_with_add_constraint.rs b/crates/squawk_linter/src/rules/ban_alter_domain_with_add_constraint.rs index 64907c7a..88136da2 100644 --- a/crates/squawk_linter/src/rules/ban_alter_domain_with_add_constraint.rs +++ b/crates/squawk_linter/src/rules/ban_alter_domain_with_add_constraint.rs @@ -8,7 +8,7 @@ use crate::{Linter, Rule, Violation}; pub(crate) fn ban_alter_domain_with_add_constraint(ctx: &mut Linter, parse: &Parse) { let file = parse.tree(); for item in file.items() { - if let ast::Item::AlterDomain(alter_domain) = item { + if let ast::Stmt::AlterDomain(alter_domain) = item { let actions = alter_domain.actions(); for action in actions { if let ast::AlterDomainAction::AddConstraint(add_constraint) = action { diff --git a/crates/squawk_linter/src/rules/ban_concurrent_index_creation_in_transaction.rs b/crates/squawk_linter/src/rules/ban_concurrent_index_creation_in_transaction.rs index 13e72add..29079695 100644 --- a/crates/squawk_linter/src/rules/ban_concurrent_index_creation_in_transaction.rs +++ b/crates/squawk_linter/src/rules/ban_concurrent_index_creation_in_transaction.rs @@ -16,13 +16,13 @@ pub(crate) fn ban_concurrent_index_creation_in_transaction( for item in file.items() { stmt_count += 1; match item { - ast::Item::Begin(_) => { + ast::Stmt::Begin(_) => { in_transaction = true; } - ast::Item::Commit(_) => { + ast::Stmt::Commit(_) => { in_transaction = false; } - ast::Item::CreateIndex(create_index) => { + ast::Stmt::CreateIndex(create_index) => { if in_transaction { if let Some(concurrently) = create_index.concurrently_token() { errors.push(Violation::new( diff --git a/crates/squawk_linter/src/rules/ban_create_domain_with_constraint.rs b/crates/squawk_linter/src/rules/ban_create_domain_with_constraint.rs index 7866aad9..dc385146 100644 --- a/crates/squawk_linter/src/rules/ban_create_domain_with_constraint.rs +++ b/crates/squawk_linter/src/rules/ban_create_domain_with_constraint.rs @@ -9,7 +9,7 @@ use crate::{Linter, Rule, Violation}; pub(crate) fn ban_create_domain_with_constraint(ctx: &mut Linter, parse: &Parse) { let file = parse.tree(); for item in file.items() { - if let ast::Item::CreateDomain(domain) = item { + if let ast::Stmt::CreateDomain(domain) = item { let range = domain .constraints() diff --git a/crates/squawk_linter/src/rules/ban_drop_column.rs b/crates/squawk_linter/src/rules/ban_drop_column.rs index fecbc7a5..b5229569 100644 --- a/crates/squawk_linter/src/rules/ban_drop_column.rs +++ b/crates/squawk_linter/src/rules/ban_drop_column.rs @@ -8,7 +8,7 @@ use crate::{Linter, Rule, Violation}; pub(crate) fn ban_drop_column(ctx: &mut Linter, parse: &Parse) { let file = parse.tree(); for item in file.items() { - if let ast::Item::AlterTable(alter_table) = item { + if let ast::Stmt::AlterTable(alter_table) = item { for action in alter_table.actions() { if let ast::AlterTableAction::DropColumn(drop_column) = action { ctx.report(Violation::new( diff --git a/crates/squawk_linter/src/rules/ban_drop_database.rs b/crates/squawk_linter/src/rules/ban_drop_database.rs index 0a0497dc..4ef115a3 100644 --- a/crates/squawk_linter/src/rules/ban_drop_database.rs +++ b/crates/squawk_linter/src/rules/ban_drop_database.rs @@ -9,7 +9,7 @@ use crate::{Linter, Rule, Violation}; pub(crate) fn ban_drop_database(ctx: &mut Linter, parse: &Parse) { let file = parse.tree(); for item in file.items() { - if let ast::Item::DropDatabase(drop_database) = item { + if let ast::Stmt::DropDatabase(drop_database) = item { ctx.report(Violation::new( Rule::BanDropDatabase, "Dropping a database may break existing clients.".into(), diff --git a/crates/squawk_linter/src/rules/ban_drop_not_null.rs b/crates/squawk_linter/src/rules/ban_drop_not_null.rs index e0b4896e..1de56297 100644 --- a/crates/squawk_linter/src/rules/ban_drop_not_null.rs +++ b/crates/squawk_linter/src/rules/ban_drop_not_null.rs @@ -8,7 +8,7 @@ use crate::{Linter, Rule, Violation}; pub(crate) fn ban_drop_not_null(ctx: &mut Linter, parse: &Parse) { let file = parse.tree(); for item in file.items() { - if let ast::Item::AlterTable(alter_table) = item { + if let ast::Stmt::AlterTable(alter_table) = item { for action in alter_table.actions() { if let ast::AlterTableAction::AlterColumn(alter_column) = action { if let Some(ast::AlterColumnOption::DropNotNull(drop_not_null)) = diff --git a/crates/squawk_linter/src/rules/ban_drop_table.rs b/crates/squawk_linter/src/rules/ban_drop_table.rs index 7935660f..1344f8a2 100644 --- a/crates/squawk_linter/src/rules/ban_drop_table.rs +++ b/crates/squawk_linter/src/rules/ban_drop_table.rs @@ -8,7 +8,7 @@ use crate::{Linter, Rule, Violation}; pub(crate) fn ban_drop_table(ctx: &mut Linter, parse: &Parse) { let file = parse.tree(); for item in file.items() { - if let ast::Item::DropTable(drop_table) = item { + if let ast::Stmt::DropTable(drop_table) = item { ctx.report(Violation::new( Rule::BanDropTable, "Dropping a table may break existing clients.".into(), diff --git a/crates/squawk_linter/src/rules/ban_truncate_cascade.rs b/crates/squawk_linter/src/rules/ban_truncate_cascade.rs index fef4249c..8954bcb3 100644 --- a/crates/squawk_linter/src/rules/ban_truncate_cascade.rs +++ b/crates/squawk_linter/src/rules/ban_truncate_cascade.rs @@ -9,7 +9,7 @@ pub(crate) fn ban_truncate_cascade(ctx: &mut Linter, parse: &Parse) let file = parse.tree(); for item in file.items() { match item { - ast::Item::Truncate(truncate) => { + ast::Stmt::Truncate(truncate) => { if let Some(cascade) = truncate.cascade_token() { // TODO: if we had knowledge about the entire schema, we // could be more precise here and actually navigate the diff --git a/crates/squawk_linter/src/rules/changing_column_type.rs b/crates/squawk_linter/src/rules/changing_column_type.rs index 709cc047..32eacb34 100644 --- a/crates/squawk_linter/src/rules/changing_column_type.rs +++ b/crates/squawk_linter/src/rules/changing_column_type.rs @@ -8,7 +8,7 @@ use crate::{Linter, Rule, Violation}; pub(crate) fn changing_column_type(ctx: &mut Linter, parse: &Parse) { let file = parse.tree(); for item in file.items() { - if let ast::Item::AlterTable(alter_table) = item { + if let ast::Stmt::AlterTable(alter_table) = item { for action in alter_table.actions() { if let ast::AlterTableAction::AlterColumn(alter_column) = action { if let Some(ast::AlterColumnOption::SetType(set_type)) = alter_column.option() { diff --git a/crates/squawk_linter/src/rules/constraint_missing_not_valid.rs b/crates/squawk_linter/src/rules/constraint_missing_not_valid.rs index c3a915c3..05e506b2 100644 --- a/crates/squawk_linter/src/rules/constraint_missing_not_valid.rs +++ b/crates/squawk_linter/src/rules/constraint_missing_not_valid.rs @@ -15,13 +15,13 @@ pub fn tables_created_in_transaction( let mut inside_transaction = assume_in_transaction; for item in file.items() { match item { - ast::Item::Begin(_) => { + ast::Stmt::Begin(_) => { inside_transaction = true; } - ast::Item::Commit(_) => { + ast::Stmt::Commit(_) => { inside_transaction = false; } - ast::Item::CreateTable(create_table) if inside_transaction => { + ast::Stmt::CreateTable(create_table) if inside_transaction => { let Some(table_name) = create_table .path() .and_then(|x| x.segment()) @@ -46,7 +46,7 @@ fn not_valid_validate_in_transaction( let mut not_valid_names: HashSet = HashSet::new(); for item in file.items() { match item { - ast::Item::AlterTable(alter_table) => { + ast::Stmt::AlterTable(alter_table) => { for action in alter_table.actions() { match action { ast::AlterTableAction::ValidateConstraint(validate_constraint) => { @@ -81,13 +81,13 @@ fn not_valid_validate_in_transaction( } } } - ast::Item::Begin(_) => { + ast::Stmt::Begin(_) => { if !inside_transaction { not_valid_names.clear(); } inside_transaction = true; } - ast::Item::Commit(_) => { + ast::Stmt::Commit(_) => { inside_transaction = false; } _ => (), @@ -105,7 +105,7 @@ pub(crate) fn constraint_missing_not_valid(ctx: &mut Linter, parse: &Parse) { for item in file.items() { match item { - ast::Item::Begin(_) => { + ast::Stmt::Begin(_) => { inside_transaction = true; } - ast::Item::Commit(_) => { + ast::Stmt::Commit(_) => { inside_transaction = false; } - ast::Item::AlterTable(alter_table) => { + ast::Stmt::AlterTable(alter_table) => { for action in alter_table.actions() { let message_type = match &action { ast::AlterTableAction::DropConstraint(drop_constraint) => { @@ -122,7 +122,7 @@ pub(crate) fn prefer_robust_stmts(ctx: &mut Linter, parse: &Parse) { )); } } - ast::Item::CreateIndex(create_index) + ast::Stmt::CreateIndex(create_index) if create_index.if_not_exists().is_none() && (create_index.concurrently_token().is_some() || !inside_transaction) => { @@ -133,7 +133,7 @@ pub(crate) fn prefer_robust_stmts(ctx: &mut Linter, parse: &Parse) { "Use an explicit name for a concurrently created index".to_string(), )); } - ast::Item::CreateTable(create_table) + ast::Stmt::CreateTable(create_table) if create_table.if_not_exists().is_none() && !inside_transaction => { ctx.report(Violation::new( @@ -143,7 +143,7 @@ pub(crate) fn prefer_robust_stmts(ctx: &mut Linter, parse: &Parse) { None, )); } - ast::Item::DropIndex(drop_index) + ast::Stmt::DropIndex(drop_index) if drop_index.if_exists().is_none() && !inside_transaction => { ctx.report(Violation::new( @@ -153,7 +153,7 @@ pub(crate) fn prefer_robust_stmts(ctx: &mut Linter, parse: &Parse) { None, )); } - ast::Item::DropTable(drop_table) + ast::Stmt::DropTable(drop_table) if drop_table.if_exists().is_none() && !inside_transaction => { ctx.report(Violation::new( @@ -163,7 +163,7 @@ pub(crate) fn prefer_robust_stmts(ctx: &mut Linter, parse: &Parse) { None, )); } - ast::Item::DropType(drop_type) + ast::Stmt::DropType(drop_type) if drop_type.if_exists().is_none() && !inside_transaction => { ctx.report(Violation::new( diff --git a/crates/squawk_linter/src/rules/renaming_column.rs b/crates/squawk_linter/src/rules/renaming_column.rs index 4a28a0ca..243e9f0e 100644 --- a/crates/squawk_linter/src/rules/renaming_column.rs +++ b/crates/squawk_linter/src/rules/renaming_column.rs @@ -8,7 +8,7 @@ use crate::{Linter, Rule, Violation}; pub(crate) fn renaming_column(ctx: &mut Linter, parse: &Parse) { let file = parse.tree(); for item in file.items() { - if let ast::Item::AlterTable(alter_table) = item { + if let ast::Stmt::AlterTable(alter_table) = item { for action in alter_table.actions() { if let ast::AlterTableAction::RenameColumn(rename_column) = action { ctx.report(Violation::new( diff --git a/crates/squawk_linter/src/rules/renaming_table.rs b/crates/squawk_linter/src/rules/renaming_table.rs index 095d15c3..8caf9a8d 100644 --- a/crates/squawk_linter/src/rules/renaming_table.rs +++ b/crates/squawk_linter/src/rules/renaming_table.rs @@ -8,7 +8,7 @@ use crate::{Linter, Rule, Violation}; pub(crate) fn renaming_table(ctx: &mut Linter, parse: &Parse) { let file = parse.tree(); for item in file.items() { - if let ast::Item::AlterTable(alter_table) = item { + if let ast::Stmt::AlterTable(alter_table) = item { for action in alter_table.actions() { if let ast::AlterTableAction::RenameTable(rename_table) = action { ctx.report(Violation::new( diff --git a/crates/squawk_linter/src/rules/require_concurrent_index_creation.rs b/crates/squawk_linter/src/rules/require_concurrent_index_creation.rs index f364b7ce..06b62302 100644 --- a/crates/squawk_linter/src/rules/require_concurrent_index_creation.rs +++ b/crates/squawk_linter/src/rules/require_concurrent_index_creation.rs @@ -11,7 +11,7 @@ pub(crate) fn require_concurrent_index_creation(ctx: &mut Linter, parse: &Parse< let file = parse.tree(); let tables_created = tables_created_in_transaction(ctx.settings.assume_in_transaction, &file); for item in file.items() { - if let ast::Item::CreateIndex(create_index) = item { + if let ast::Stmt::CreateIndex(create_index) = item { if let Some(table_name) = create_index .path() .and_then(|x| x.segment()) diff --git a/crates/squawk_linter/src/rules/require_concurrent_index_deletion.rs b/crates/squawk_linter/src/rules/require_concurrent_index_deletion.rs index 314537ae..7180af10 100644 --- a/crates/squawk_linter/src/rules/require_concurrent_index_deletion.rs +++ b/crates/squawk_linter/src/rules/require_concurrent_index_deletion.rs @@ -8,7 +8,7 @@ use crate::{Linter, Rule, Violation}; pub(crate) fn require_concurrent_index_deletion(ctx: &mut Linter, parse: &Parse) { let file = parse.tree(); for item in file.items() { - if let ast::Item::DropIndex(drop_index) = item { + if let ast::Stmt::DropIndex(drop_index) = item { if drop_index.concurrently_token().is_none() { ctx.report(Violation::new( Rule::RequireConcurrentIndexDeletion, diff --git a/crates/squawk_linter/src/rules/transaction_nesting.rs b/crates/squawk_linter/src/rules/transaction_nesting.rs index 3e99e115..b3abc7d9 100644 --- a/crates/squawk_linter/src/rules/transaction_nesting.rs +++ b/crates/squawk_linter/src/rules/transaction_nesting.rs @@ -12,7 +12,7 @@ pub(crate) fn transaction_nesting(ctx: &mut Linter, parse: &Parse) { for item in file.items() { match item { - ast::Item::Begin(_) => { + ast::Stmt::Begin(_) => { if ctx.settings.assume_in_transaction { ctx.report(Violation::new( Rule::TransactionNesting, @@ -30,7 +30,7 @@ pub(crate) fn transaction_nesting(ctx: &mut Linter, parse: &Parse) { } in_explicit_transaction = true; } - ast::Item::Commit(_) | ast::Item::Rollback(_) => { + ast::Stmt::Commit(_) | ast::Stmt::Rollback(_) => { if ctx.settings.assume_in_transaction { ctx.report(Violation::new( Rule::TransactionNesting, diff --git a/crates/squawk_linter/src/visitors.rs b/crates/squawk_linter/src/visitors.rs index 39f97124..2d642e6b 100644 --- a/crates/squawk_linter/src/visitors.rs +++ b/crates/squawk_linter/src/visitors.rs @@ -41,7 +41,7 @@ pub(crate) fn check_not_allowed_types( ) { for item in file.items() { match item { - ast::Item::CreateTable(create_table) => { + ast::Stmt::CreateTable(create_table) => { if let Some(table_args) = create_table.table_args() { for arg in table_args.args() { if let ast::TableArg::Column(column) = arg { @@ -50,7 +50,7 @@ pub(crate) fn check_not_allowed_types( } } } - ast::Item::AlterTable(alter_table) => { + ast::Stmt::AlterTable(alter_table) => { for action in alter_table.actions() { match action { ast::AlterTableAction::AddColumn(add_column) => { diff --git a/crates/squawk_syntax/src/ast/nodes.rs b/crates/squawk_syntax/src/ast/nodes.rs index 92f3fe34..789cd438 100644 --- a/crates/squawk_syntax/src/ast/nodes.rs +++ b/crates/squawk_syntax/src/ast/nodes.rs @@ -3175,7 +3175,7 @@ impl AstNode for Truncate { } #[derive(Debug, Clone, PartialEq, Eq, Hash)] -pub enum Item { +pub enum Stmt { AlterTable(AlterTable), AlterDomain(AlterDomain), AlterAggregate(AlterAggregate), @@ -3198,7 +3198,7 @@ pub enum Item { // impl ast::HasAttrs for Item {} // impl ast::HasDocComments for Item {} -impl AstNode for Item { +impl AstNode for Stmt { #[inline] fn can_cast(kind: SyntaxKind) -> bool { matches!( @@ -3226,24 +3226,24 @@ impl AstNode for Item { #[inline] fn cast(syntax: SyntaxNode) -> Option { let res = match syntax.kind() { - SyntaxKind::SELECT => Item::Select(Select { syntax }), - SyntaxKind::CREATE_FUNCTION_STMT => Item::CreateFunc(CreateFunc { syntax }), - SyntaxKind::ALTER_TABLE => Item::AlterTable(AlterTable { syntax }), - SyntaxKind::DROP_DATABASE_STMT => Item::DropDatabase(DropDatabase { syntax }), - SyntaxKind::CREATE_TABLE => Item::CreateTable(CreateTable { syntax }), - SyntaxKind::BEGIN_STMT => Item::Begin(Begin { syntax }), - SyntaxKind::COMMIT_STMT => Item::Commit(Commit { syntax }), - SyntaxKind::CREATE_INDEX_STMT => Item::CreateIndex(CreateIndex { syntax }), - SyntaxKind::DROP_TABLE => Item::DropTable(DropTable { syntax }), - SyntaxKind::DROP_INDEX_STMT => Item::DropIndex(DropIndex { syntax }), - SyntaxKind::DROP_TYPE_STMT => Item::DropType(DropType { syntax }), - SyntaxKind::CREATE_DOMAIN_STMT => Item::CreateDomain(CreateDomain { syntax }), - SyntaxKind::ALTER_DOMAIN_STMT => Item::AlterDomain(AlterDomain { syntax }), - SyntaxKind::ALTER_AGGREGATE_STMT => Item::AlterAggregate(AlterAggregate { syntax }), - SyntaxKind::CREATE_AGGREGATE_STMT => Item::CreateAggregate(CreateAggregate { syntax }), - SyntaxKind::DROP_AGGREGATE_STMT => Item::DropAggregate(DropAggregate { syntax }), - SyntaxKind::ROLLBACK_STMT => Item::Rollback(Rollback { syntax }), - SyntaxKind::TRUNCATE_STMT => Item::Truncate(Truncate { syntax }), + SyntaxKind::SELECT => Stmt::Select(Select { syntax }), + SyntaxKind::CREATE_FUNCTION_STMT => Stmt::CreateFunc(CreateFunc { syntax }), + SyntaxKind::ALTER_TABLE => Stmt::AlterTable(AlterTable { syntax }), + SyntaxKind::DROP_DATABASE_STMT => Stmt::DropDatabase(DropDatabase { syntax }), + SyntaxKind::CREATE_TABLE => Stmt::CreateTable(CreateTable { syntax }), + SyntaxKind::BEGIN_STMT => Stmt::Begin(Begin { syntax }), + SyntaxKind::COMMIT_STMT => Stmt::Commit(Commit { syntax }), + SyntaxKind::CREATE_INDEX_STMT => Stmt::CreateIndex(CreateIndex { syntax }), + SyntaxKind::DROP_TABLE => Stmt::DropTable(DropTable { syntax }), + SyntaxKind::DROP_INDEX_STMT => Stmt::DropIndex(DropIndex { syntax }), + SyntaxKind::DROP_TYPE_STMT => Stmt::DropType(DropType { syntax }), + SyntaxKind::CREATE_DOMAIN_STMT => Stmt::CreateDomain(CreateDomain { syntax }), + SyntaxKind::ALTER_DOMAIN_STMT => Stmt::AlterDomain(AlterDomain { syntax }), + SyntaxKind::ALTER_AGGREGATE_STMT => Stmt::AlterAggregate(AlterAggregate { syntax }), + SyntaxKind::CREATE_AGGREGATE_STMT => Stmt::CreateAggregate(CreateAggregate { syntax }), + SyntaxKind::DROP_AGGREGATE_STMT => Stmt::DropAggregate(DropAggregate { syntax }), + SyntaxKind::ROLLBACK_STMT => Stmt::Rollback(Rollback { syntax }), + SyntaxKind::TRUNCATE_STMT => Stmt::Truncate(Truncate { syntax }), _ => return None, }; Some(res) @@ -3251,24 +3251,24 @@ impl AstNode for Item { #[inline] fn syntax(&self) -> &SyntaxNode { match self { - Item::Select(it) => &it.syntax, - Item::CreateFunc(it) => &it.syntax, - Item::AlterTable(it) => &it.syntax, - Item::DropDatabase(it) => &it.syntax, - Item::CreateTable(it) => &it.syntax, - Item::Begin(it) => &it.syntax, - Item::Commit(it) => &it.syntax, - Item::CreateIndex(it) => &it.syntax, - Item::DropTable(it) => &it.syntax, - Item::DropIndex(it) => &it.syntax, - Item::DropType(it) => &it.syntax, - Item::CreateDomain(it) => &it.syntax, - Item::AlterDomain(it) => &it.syntax, - Item::AlterAggregate(it) => &it.syntax, - Item::CreateAggregate(it) => &it.syntax, - Item::DropAggregate(it) => &it.syntax, - Item::Rollback(it) => &it.syntax, - Item::Truncate(it) => &it.syntax, + Stmt::Select(it) => &it.syntax, + Stmt::CreateFunc(it) => &it.syntax, + Stmt::AlterTable(it) => &it.syntax, + Stmt::DropDatabase(it) => &it.syntax, + Stmt::CreateTable(it) => &it.syntax, + Stmt::Begin(it) => &it.syntax, + Stmt::Commit(it) => &it.syntax, + Stmt::CreateIndex(it) => &it.syntax, + Stmt::DropTable(it) => &it.syntax, + Stmt::DropIndex(it) => &it.syntax, + Stmt::DropType(it) => &it.syntax, + Stmt::CreateDomain(it) => &it.syntax, + Stmt::AlterDomain(it) => &it.syntax, + Stmt::AlterAggregate(it) => &it.syntax, + Stmt::CreateAggregate(it) => &it.syntax, + Stmt::DropAggregate(it) => &it.syntax, + Stmt::Rollback(it) => &it.syntax, + Stmt::Truncate(it) => &it.syntax, } } } diff --git a/crates/squawk_syntax/src/ast/traits.rs b/crates/squawk_syntax/src/ast/traits.rs index 8d7d93e8..d70fb2b2 100644 --- a/crates/squawk_syntax/src/ast/traits.rs +++ b/crates/squawk_syntax/src/ast/traits.rs @@ -16,7 +16,7 @@ pub trait HasArgList: AstNode { } pub trait HasModuleItem: AstNode { - fn items(&self) -> AstChildren { + fn items(&self) -> AstChildren { support::children(self.syntax()) } } diff --git a/crates/squawk_syntax/src/lib.rs b/crates/squawk_syntax/src/lib.rs index 0f045320..b7f7eb53 100644 --- a/crates/squawk_syntax/src/lib.rs +++ b/crates/squawk_syntax/src/lib.rs @@ -207,7 +207,7 @@ fn api_walkthrough() { let mut func = None; for item in file.items() { match item { - ast::Item::CreateFunc(f) => func = Some(f), + ast::Stmt::CreateFunc(f) => func = Some(f), _ => unreachable!(), } } diff --git a/crates/xtask/src/new_rule.rs b/crates/xtask/src/new_rule.rs index 0f4224b6..f9b5825c 100644 --- a/crates/xtask/src/new_rule.rs +++ b/crates/xtask/src/new_rule.rs @@ -22,7 +22,7 @@ pub(crate) fn {rule_name_snake}(ctx: &mut Linter, parse: &Parse) {{ for item in file.items() {{ match item {{ // TODO: update to the item you want to check - ast::Item::CreateTable(create_table) => {{ + ast::Stmt::CreateTable(create_table) => {{ ctx.report(Violation::new( Rule::{rule_name_pascal}, "todo".to_string(),