sqruff_lib/utils/
identifers.rs1use sqruff_lib_core::dialects::syntax::SyntaxKind;
2use sqruff_lib_core::parser::segments::base::ErasedSegment;
3
4pub fn identifiers_policy_applicable(policy: &str, parent_stack: &[ErasedSegment]) -> bool {
5 match policy {
6 "all" => true,
7 "none" => false,
8 _ => {
9 let is_alias = parent_stack.last().is_some_and(|last| {
10 [
11 SyntaxKind::AliasExpression,
12 SyntaxKind::ColumnDefinition,
13 SyntaxKind::WithCompoundStatement,
14 ]
15 .into_iter()
16 .any(|it| last.is_type(it))
17 });
18
19 match policy {
20 "aliases" if is_alias => true,
21 "column_aliases" if is_alias => !parent_stack
22 .iter()
23 .any(|p| p.is_type(SyntaxKind::FromClause)),
24 _ => false,
25 }
26 }
27 }
28}