From 4237a762513f6aeb62accccb0c49771116134197 Mon Sep 17 00:00:00 2001 From: Tom Hvitved Date: Mon, 29 Jun 2026 10:44:10 +0200 Subject: [PATCH 1/5] Shared: Generate `final` tree-sitter classes --- .../src/generator/mod.rs | 22 +-- .../tree-sitter-extractor/src/generator/ql.rs | 13 ++ .../src/generator/ql_gen.rs | 128 ++++++++++++------ 3 files changed, 116 insertions(+), 47 deletions(-) diff --git a/shared/tree-sitter-extractor/src/generator/mod.rs b/shared/tree-sitter-extractor/src/generator/mod.rs index 6c5fbfabda62..dbecf62569af 100644 --- a/shared/tree-sitter-extractor/src/generator/mod.rs +++ b/shared/tree-sitter-extractor/src/generator/mod.rs @@ -120,14 +120,20 @@ pub fn generate( ))); dbscheme::write(&mut dbscheme_writer, &dbscheme_tail)?; - let mut body = vec![ - ql::TopLevel::Class(ql_gen::create_ast_node_class( - &ast_node_name, - &node_location_table_name, - &node_parent_table_name, - )), - ql::TopLevel::Class(ql_gen::create_token_class(&token_name, &tokeninfo_name)), - ]; + let mut body = vec![]; + + for c in ql_gen::create_ast_node_class( + &ast_node_name, + &node_location_table_name, + &node_parent_table_name, + ) { + body.push(ql::TopLevel::Class(c)); + } + + for c in ql_gen::create_token_class(&token_name, &tokeninfo_name) { + body.push(ql::TopLevel::Class(c)); + } + if has_trivia_tokens { body.push(ql::TopLevel::Class(ql_gen::create_trivia_token_class( &trivia_token_name, diff --git a/shared/tree-sitter-extractor/src/generator/ql.rs b/shared/tree-sitter-extractor/src/generator/ql.rs index 24ae25d854bb..2d091afedc93 100644 --- a/shared/tree-sitter-extractor/src/generator/ql.rs +++ b/shared/tree-sitter-extractor/src/generator/ql.rs @@ -40,9 +40,12 @@ pub struct Class<'a> { pub qldoc: Option, pub name: &'a str, pub is_abstract: bool, + pub is_final: bool, + pub is_private: bool, pub supertypes: BTreeSet>, pub characteristic_predicate: Option>, pub predicates: Vec>, + pub alias: Option, } impl fmt::Display for Class<'_> { @@ -50,6 +53,16 @@ impl fmt::Display for Class<'_> { if let Some(qldoc) = &self.qldoc { write!(f, "/** {qldoc} */")?; } + if self.is_final { + write!(f, "final ")?; + } + if self.is_private { + write!(f, "private ")?; + } + if let Some(alias) = &self.alias { + write!(f, "class {} = {alias} ;", &self.name)?; + return Ok(()); + } if self.is_abstract { write!(f, "abstract ")?; } diff --git a/shared/tree-sitter-extractor/src/generator/ql_gen.rs b/shared/tree-sitter-extractor/src/generator/ql_gen.rs index bfefdadeaf72..8f37bf5dff45 100644 --- a/shared/tree-sitter-extractor/src/generator/ql_gen.rs +++ b/shared/tree-sitter-extractor/src/generator/ql_gen.rs @@ -8,7 +8,7 @@ pub fn create_ast_node_class<'a>( ast_node: &'a str, node_location_table: &'a str, node_parent_table: &'a str, -) -> ql::Class<'a> { +) -> [ql::Class<'a>; 2] { // Default implementation of `toString` calls `this.getAPrimaryQlClass()` let to_string = ql::Predicate { qldoc: Some(String::from( @@ -132,25 +132,41 @@ pub fn create_ast_node_class<'a>( ), overlay: None, }; - ql::Class { - qldoc: Some(String::from("The base class for all AST nodes")), - name: "AstNode", - is_abstract: false, - supertypes: vec![ql::Type::At(ast_node)].into_iter().collect(), - characteristic_predicate: None, - predicates: vec![ - to_string, - get_location, - get_parent, - get_parent_index, - get_a_field_or_child, - get_a_primary_ql_class, - get_primary_ql_classes, - ], - } + [ + ql::Class { + qldoc: Some(String::from("The base class for all AST nodes")), + name: "AstNodeImpl", + is_abstract: false, + is_final: false, + is_private: true, + alias: None, + supertypes: vec![ql::Type::At(ast_node)].into_iter().collect(), + characteristic_predicate: None, + predicates: vec![ + to_string, + get_location, + get_parent, + get_parent_index, + get_a_field_or_child, + get_a_primary_ql_class, + get_primary_ql_classes, + ], + }, + ql::Class { + qldoc: None, + name: "AstNode", + is_abstract: false, + is_final: true, + is_private: false, + alias: Some("AstNodeImpl".to_string()), + supertypes: vec![].into_iter().collect(), + characteristic_predicate: None, + predicates: vec![], + }, + ] } -pub fn create_token_class<'a>(token_type: &'a str, tokeninfo: &'a str) -> ql::Class<'a> { +pub fn create_token_class<'a>(token_type: &'a str, tokeninfo: &'a str) -> [ql::Class<'a>; 2] { let tokeninfo_arity = 3; // id, kind, value let get_value = ql::Predicate { qldoc: Some(String::from("Gets the value of this token.")), @@ -183,20 +199,36 @@ pub fn create_token_class<'a>(token_type: &'a str, tokeninfo: &'a str) -> ql::Cl ), overlay: None, }; - ql::Class { - qldoc: Some(String::from("A token.")), - name: "Token", - is_abstract: false, - supertypes: vec![ql::Type::At(token_type), ql::Type::Normal("AstNode")] - .into_iter() - .collect(), - characteristic_predicate: None, - predicates: vec![ - get_value, - to_string, - create_get_a_primary_ql_class("Token", false), - ], - } + [ + ql::Class { + qldoc: Some(String::from("A token.")), + name: "TokenImpl", + is_abstract: false, + is_final: false, + is_private: true, + alias: None, + supertypes: vec![ql::Type::At(token_type), ql::Type::Normal("AstNodeImpl")] + .into_iter() + .collect(), + characteristic_predicate: None, + predicates: vec![ + get_value, + to_string, + create_get_a_primary_ql_class("Token", false), + ], + }, + ql::Class { + qldoc: None, + name: "Token", + is_abstract: false, + is_final: true, + is_private: false, + alias: Some("TokenImpl".to_string()), + supertypes: vec![].into_iter().collect(), + characteristic_predicate: None, + predicates: vec![], + }, + ] } /// Creates the `TriviaToken` class. Trivia tokens (e.g. comments) are @@ -251,9 +283,15 @@ pub fn create_trivia_token_class<'a>( )), name: "TriviaToken", is_abstract: false, - supertypes: vec![ql::Type::At(trivia_token_type), ql::Type::Normal("AstNode")] - .into_iter() - .collect(), + is_final: true, + is_private: false, + alias: None, + supertypes: vec![ + ql::Type::At(trivia_token_type), + ql::Type::Normal("AstNodeImpl"), + ] + .into_iter() + .collect(), characteristic_predicate: None, predicates: vec![ get_value, @@ -271,7 +309,10 @@ pub fn create_reserved_word_class(db_name: &str) -> ql::Class<'_> { qldoc: Some(String::from("A reserved word.")), name: class_name, is_abstract: false, - supertypes: vec![ql::Type::At(db_name), ql::Type::Normal("Token")] + is_final: true, + is_private: false, + alias: None, + supertypes: vec![ql::Type::At(db_name), ql::Type::Normal("TokenImpl")] .into_iter() .collect(), characteristic_predicate: None, @@ -775,11 +816,14 @@ pub fn convert_nodes(nodes: &node_types::NodeTypeMap) -> Vec> { create_get_a_primary_ql_class(&node.ql_class_name, true); let mut supertypes: BTreeSet = BTreeSet::new(); supertypes.insert(ql::Type::At(&node.dbscheme_name)); - supertypes.insert(ql::Type::Normal("Token")); + supertypes.insert(ql::Type::Normal("TokenImpl")); classes.push(ql::TopLevel::Class(ql::Class { qldoc: Some(format!("A class representing `{}` tokens.", type_name.kind)), name: &node.ql_class_name, is_abstract: false, + is_final: true, + is_private: false, + alias: None, supertypes, characteristic_predicate: None, predicates: vec![get_a_primary_ql_class], @@ -793,9 +837,12 @@ pub fn convert_nodes(nodes: &node_types::NodeTypeMap) -> Vec> { qldoc: None, name: &node.ql_class_name, is_abstract: false, + is_final: true, + is_private: false, + alias: None, supertypes: vec![ ql::Type::At(&node.dbscheme_name), - ql::Type::Normal("AstNode"), + ql::Type::Normal("AstNodeImpl"), ] .into_iter() .collect(), @@ -824,9 +871,12 @@ pub fn convert_nodes(nodes: &node_types::NodeTypeMap) -> Vec> { qldoc: Some(format!("A class representing `{}` nodes.", type_name.kind)), name: main_class_name, is_abstract: false, + is_final: true, + is_private: false, + alias: None, supertypes: vec![ ql::Type::At(&node.dbscheme_name), - ql::Type::Normal("AstNode"), + ql::Type::Normal("AstNodeImpl"), ] .into_iter() .collect(), From 818a25b64ed0023287138756b2b67e71e4895b98 Mon Sep 17 00:00:00 2001 From: Tom Hvitved Date: Mon, 29 Jun 2026 10:44:38 +0200 Subject: [PATCH 2/5] Ruby: Regenerate `TreeSitter.qll` --- .../codeql/ruby/ast/internal/TreeSitter.qll | 337 +++++++++--------- 1 file changed, 174 insertions(+), 163 deletions(-) diff --git a/ruby/ql/lib/codeql/ruby/ast/internal/TreeSitter.qll b/ruby/ql/lib/codeql/ruby/ast/internal/TreeSitter.qll index e6b4c63f5486..13ae1923b105 100644 --- a/ruby/ql/lib/codeql/ruby/ast/internal/TreeSitter.qll +++ b/ruby/ql/lib/codeql/ruby/ast/internal/TreeSitter.qll @@ -26,7 +26,7 @@ private predicate discardLocation(@location_default loc) { overlay[local] module Ruby { /** The base class for all AST nodes */ - class AstNode extends @ruby_ast_node { + private class AstNodeImpl extends @ruby_ast_node { /** Gets a string representation of this element. */ string toString() { result = this.getAPrimaryQlClass() } @@ -49,8 +49,10 @@ module Ruby { string getPrimaryQlClasses() { result = concat(this.getAPrimaryQlClass(), ",") } } + final class AstNode = AstNodeImpl; + /** A token. */ - class Token extends @ruby_token, AstNode { + private class TokenImpl extends @ruby_token, AstNodeImpl { /** Gets the value of this token. */ final string getValue() { ruby_tokeninfo(this, _, result) } @@ -61,8 +63,10 @@ module Ruby { override string getAPrimaryQlClass() { result = "Token" } } + final class Token = TokenImpl; + /** A reserved word. */ - class ReservedWord extends @ruby_reserved_word, Token { + final class ReservedWord extends @ruby_reserved_word, TokenImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "ReservedWord" } } @@ -87,38 +91,41 @@ module Ruby { ) } - class UnderscoreArg extends @ruby_underscore_arg, AstNode { } + final class UnderscoreArg extends @ruby_underscore_arg, AstNodeImpl { } - class UnderscoreCallOperator extends @ruby_underscore_call_operator, AstNode { } + final class UnderscoreCallOperator extends @ruby_underscore_call_operator, AstNodeImpl { } - class UnderscoreExpression extends @ruby_underscore_expression, AstNode { } + final class UnderscoreExpression extends @ruby_underscore_expression, AstNodeImpl { } - class UnderscoreLhs extends @ruby_underscore_lhs, AstNode { } + final class UnderscoreLhs extends @ruby_underscore_lhs, AstNodeImpl { } - class UnderscoreMethodName extends @ruby_underscore_method_name, AstNode { } + final class UnderscoreMethodName extends @ruby_underscore_method_name, AstNodeImpl { } - class UnderscoreNonlocalVariable extends @ruby_underscore_nonlocal_variable, AstNode { } + final class UnderscoreNonlocalVariable extends @ruby_underscore_nonlocal_variable, AstNodeImpl { } - class UnderscorePatternConstant extends @ruby_underscore_pattern_constant, AstNode { } + final class UnderscorePatternConstant extends @ruby_underscore_pattern_constant, AstNodeImpl { } - class UnderscorePatternExpr extends @ruby_underscore_pattern_expr, AstNode { } + final class UnderscorePatternExpr extends @ruby_underscore_pattern_expr, AstNodeImpl { } - class UnderscorePatternExprBasic extends @ruby_underscore_pattern_expr_basic, AstNode { } + final class UnderscorePatternExprBasic extends @ruby_underscore_pattern_expr_basic, AstNodeImpl { + } - class UnderscorePatternPrimitive extends @ruby_underscore_pattern_primitive, AstNode { } + final class UnderscorePatternPrimitive extends @ruby_underscore_pattern_primitive, AstNodeImpl { } - class UnderscorePatternTopExprBody extends @ruby_underscore_pattern_top_expr_body, AstNode { } + final class UnderscorePatternTopExprBody extends @ruby_underscore_pattern_top_expr_body, + AstNodeImpl + { } - class UnderscorePrimary extends @ruby_underscore_primary, AstNode { } + final class UnderscorePrimary extends @ruby_underscore_primary, AstNodeImpl { } - class UnderscoreSimpleNumeric extends @ruby_underscore_simple_numeric, AstNode { } + final class UnderscoreSimpleNumeric extends @ruby_underscore_simple_numeric, AstNodeImpl { } - class UnderscoreStatement extends @ruby_underscore_statement, AstNode { } + final class UnderscoreStatement extends @ruby_underscore_statement, AstNodeImpl { } - class UnderscoreVariable extends @ruby_underscore_variable, AstNode { } + final class UnderscoreVariable extends @ruby_underscore_variable, AstNodeImpl { } /** A class representing `alias` nodes. */ - class Alias extends @ruby_alias, AstNode { + final class Alias extends @ruby_alias, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "Alias" } @@ -135,7 +142,7 @@ module Ruby { } /** A class representing `alternative_pattern` nodes. */ - class AlternativePattern extends @ruby_alternative_pattern, AstNode { + final class AlternativePattern extends @ruby_alternative_pattern, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "AlternativePattern" } @@ -151,7 +158,7 @@ module Ruby { } /** A class representing `argument_list` nodes. */ - class ArgumentList extends @ruby_argument_list, AstNode { + final class ArgumentList extends @ruby_argument_list, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "ArgumentList" } @@ -163,7 +170,7 @@ module Ruby { } /** A class representing `array` nodes. */ - class Array extends @ruby_array, AstNode { + final class Array extends @ruby_array, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "Array" } @@ -175,7 +182,7 @@ module Ruby { } /** A class representing `array_pattern` nodes. */ - class ArrayPattern extends @ruby_array_pattern, AstNode { + final class ArrayPattern extends @ruby_array_pattern, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "ArrayPattern" } @@ -192,7 +199,7 @@ module Ruby { } /** A class representing `as_pattern` nodes. */ - class AsPattern extends @ruby_as_pattern, AstNode { + final class AsPattern extends @ruby_as_pattern, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "AsPattern" } @@ -209,7 +216,7 @@ module Ruby { } /** A class representing `assignment` nodes. */ - class Assignment extends @ruby_assignment, AstNode { + final class Assignment extends @ruby_assignment, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "Assignment" } @@ -226,7 +233,7 @@ module Ruby { } /** A class representing `bare_string` nodes. */ - class BareString extends @ruby_bare_string, AstNode { + final class BareString extends @ruby_bare_string, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "BareString" } @@ -238,7 +245,7 @@ module Ruby { } /** A class representing `bare_symbol` nodes. */ - class BareSymbol extends @ruby_bare_symbol, AstNode { + final class BareSymbol extends @ruby_bare_symbol, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "BareSymbol" } @@ -250,7 +257,7 @@ module Ruby { } /** A class representing `begin` nodes. */ - class Begin extends @ruby_begin, AstNode { + final class Begin extends @ruby_begin, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "Begin" } @@ -262,7 +269,7 @@ module Ruby { } /** A class representing `begin_block` nodes. */ - class BeginBlock extends @ruby_begin_block, AstNode { + final class BeginBlock extends @ruby_begin_block, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "BeginBlock" } @@ -274,7 +281,7 @@ module Ruby { } /** A class representing `binary` nodes. */ - class Binary extends @ruby_binary, AstNode { + final class Binary extends @ruby_binary, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "Binary" } @@ -346,7 +353,7 @@ module Ruby { } /** A class representing `block` nodes. */ - class Block extends @ruby_block, AstNode { + final class Block extends @ruby_block, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "Block" } @@ -363,7 +370,7 @@ module Ruby { } /** A class representing `block_argument` nodes. */ - class BlockArgument extends @ruby_block_argument, AstNode { + final class BlockArgument extends @ruby_block_argument, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "BlockArgument" } @@ -375,7 +382,7 @@ module Ruby { } /** A class representing `block_body` nodes. */ - class BlockBody extends @ruby_block_body, AstNode { + final class BlockBody extends @ruby_block_body, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "BlockBody" } @@ -387,7 +394,7 @@ module Ruby { } /** A class representing `block_parameter` nodes. */ - class BlockParameter extends @ruby_block_parameter, AstNode { + final class BlockParameter extends @ruby_block_parameter, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "BlockParameter" } @@ -399,7 +406,7 @@ module Ruby { } /** A class representing `block_parameters` nodes. */ - class BlockParameters extends @ruby_block_parameters, AstNode { + final class BlockParameters extends @ruby_block_parameters, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "BlockParameters" } @@ -416,7 +423,7 @@ module Ruby { } /** A class representing `body_statement` nodes. */ - class BodyStatement extends @ruby_body_statement, AstNode { + final class BodyStatement extends @ruby_body_statement, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "BodyStatement" } @@ -428,7 +435,7 @@ module Ruby { } /** A class representing `break` nodes. */ - class Break extends @ruby_break, AstNode { + final class Break extends @ruby_break, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "Break" } @@ -440,7 +447,7 @@ module Ruby { } /** A class representing `call` nodes. */ - class Call extends @ruby_call, AstNode { + final class Call extends @ruby_call, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "Call" } @@ -470,7 +477,7 @@ module Ruby { } /** A class representing `case` nodes. */ - class Case extends @ruby_case__, AstNode { + final class Case extends @ruby_case__, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "Case" } @@ -487,7 +494,7 @@ module Ruby { } /** A class representing `case_match` nodes. */ - class CaseMatch extends @ruby_case_match, AstNode { + final class CaseMatch extends @ruby_case_match, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "CaseMatch" } @@ -509,7 +516,7 @@ module Ruby { } /** A class representing `chained_string` nodes. */ - class ChainedString extends @ruby_chained_string, AstNode { + final class ChainedString extends @ruby_chained_string, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "ChainedString" } @@ -521,13 +528,13 @@ module Ruby { } /** A class representing `character` tokens. */ - class Character extends @ruby_token_character, Token { + final class Character extends @ruby_token_character, TokenImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "Character" } } /** A class representing `class` nodes. */ - class Class extends @ruby_class, AstNode { + final class Class extends @ruby_class, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "Class" } @@ -549,19 +556,19 @@ module Ruby { } /** A class representing `class_variable` tokens. */ - class ClassVariable extends @ruby_token_class_variable, Token { + final class ClassVariable extends @ruby_token_class_variable, TokenImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "ClassVariable" } } /** A class representing `comment` tokens. */ - class Comment extends @ruby_token_comment, Token { + final class Comment extends @ruby_token_comment, TokenImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "Comment" } } /** A class representing `complex` nodes. */ - class Complex extends @ruby_complex, AstNode { + final class Complex extends @ruby_complex, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "Complex" } @@ -573,7 +580,7 @@ module Ruby { } /** A class representing `conditional` nodes. */ - class Conditional extends @ruby_conditional, AstNode { + final class Conditional extends @ruby_conditional, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "Conditional" } @@ -595,13 +602,13 @@ module Ruby { } /** A class representing `constant` tokens. */ - class Constant extends @ruby_token_constant, Token { + final class Constant extends @ruby_token_constant, TokenImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "Constant" } } /** A class representing `delimited_symbol` nodes. */ - class DelimitedSymbol extends @ruby_delimited_symbol, AstNode { + final class DelimitedSymbol extends @ruby_delimited_symbol, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "DelimitedSymbol" } @@ -613,7 +620,7 @@ module Ruby { } /** A class representing `destructured_left_assignment` nodes. */ - class DestructuredLeftAssignment extends @ruby_destructured_left_assignment, AstNode { + final class DestructuredLeftAssignment extends @ruby_destructured_left_assignment, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "DestructuredLeftAssignment" } @@ -627,7 +634,7 @@ module Ruby { } /** A class representing `destructured_parameter` nodes. */ - class DestructuredParameter extends @ruby_destructured_parameter, AstNode { + final class DestructuredParameter extends @ruby_destructured_parameter, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "DestructuredParameter" } @@ -639,7 +646,7 @@ module Ruby { } /** A class representing `do` nodes. */ - class Do extends @ruby_do, AstNode { + final class Do extends @ruby_do, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "Do" } @@ -651,7 +658,7 @@ module Ruby { } /** A class representing `do_block` nodes. */ - class DoBlock extends @ruby_do_block, AstNode { + final class DoBlock extends @ruby_do_block, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "DoBlock" } @@ -668,7 +675,7 @@ module Ruby { } /** A class representing `element_reference` nodes. */ - class ElementReference extends @ruby_element_reference, AstNode { + final class ElementReference extends @ruby_element_reference, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "ElementReference" } @@ -690,7 +697,7 @@ module Ruby { } /** A class representing `else` nodes. */ - class Else extends @ruby_else, AstNode { + final class Else extends @ruby_else, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "Else" } @@ -702,7 +709,7 @@ module Ruby { } /** A class representing `elsif` nodes. */ - class Elsif extends @ruby_elsif, AstNode { + final class Elsif extends @ruby_elsif, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "Elsif" } @@ -724,19 +731,19 @@ module Ruby { } /** A class representing `empty_statement` tokens. */ - class EmptyStatement extends @ruby_token_empty_statement, Token { + final class EmptyStatement extends @ruby_token_empty_statement, TokenImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "EmptyStatement" } } /** A class representing `encoding` tokens. */ - class Encoding extends @ruby_token_encoding, Token { + final class Encoding extends @ruby_token_encoding, TokenImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "Encoding" } } /** A class representing `end_block` nodes. */ - class EndBlock extends @ruby_end_block, AstNode { + final class EndBlock extends @ruby_end_block, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "EndBlock" } @@ -748,7 +755,7 @@ module Ruby { } /** A class representing `ensure` nodes. */ - class Ensure extends @ruby_ensure, AstNode { + final class Ensure extends @ruby_ensure, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "Ensure" } @@ -760,13 +767,13 @@ module Ruby { } /** A class representing `escape_sequence` tokens. */ - class EscapeSequence extends @ruby_token_escape_sequence, Token { + final class EscapeSequence extends @ruby_token_escape_sequence, TokenImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "EscapeSequence" } } /** A class representing `exception_variable` nodes. */ - class ExceptionVariable extends @ruby_exception_variable, AstNode { + final class ExceptionVariable extends @ruby_exception_variable, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "ExceptionVariable" } @@ -778,7 +785,7 @@ module Ruby { } /** A class representing `exceptions` nodes. */ - class Exceptions extends @ruby_exceptions, AstNode { + final class Exceptions extends @ruby_exceptions, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "Exceptions" } @@ -790,7 +797,7 @@ module Ruby { } /** A class representing `expression_reference_pattern` nodes. */ - class ExpressionReferencePattern extends @ruby_expression_reference_pattern, AstNode { + final class ExpressionReferencePattern extends @ruby_expression_reference_pattern, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "ExpressionReferencePattern" } @@ -804,19 +811,19 @@ module Ruby { } /** A class representing `false` tokens. */ - class False extends @ruby_token_false, Token { + final class False extends @ruby_token_false, TokenImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "False" } } /** A class representing `file` tokens. */ - class File extends @ruby_token_file, Token { + final class File extends @ruby_token_file, TokenImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "File" } } /** A class representing `find_pattern` nodes. */ - class FindPattern extends @ruby_find_pattern, AstNode { + final class FindPattern extends @ruby_find_pattern, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "FindPattern" } @@ -833,13 +840,13 @@ module Ruby { } /** A class representing `float` tokens. */ - class Float extends @ruby_token_float, Token { + final class Float extends @ruby_token_float, TokenImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "Float" } } /** A class representing `for` nodes. */ - class For extends @ruby_for, AstNode { + final class For extends @ruby_for, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "For" } @@ -861,25 +868,25 @@ module Ruby { } /** A class representing `forward_argument` tokens. */ - class ForwardArgument extends @ruby_token_forward_argument, Token { + final class ForwardArgument extends @ruby_token_forward_argument, TokenImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "ForwardArgument" } } /** A class representing `forward_parameter` tokens. */ - class ForwardParameter extends @ruby_token_forward_parameter, Token { + final class ForwardParameter extends @ruby_token_forward_parameter, TokenImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "ForwardParameter" } } /** A class representing `global_variable` tokens. */ - class GlobalVariable extends @ruby_token_global_variable, Token { + final class GlobalVariable extends @ruby_token_global_variable, TokenImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "GlobalVariable" } } /** A class representing `hash` nodes. */ - class Hash extends @ruby_hash, AstNode { + final class Hash extends @ruby_hash, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "Hash" } @@ -891,13 +898,13 @@ module Ruby { } /** A class representing `hash_key_symbol` tokens. */ - class HashKeySymbol extends @ruby_token_hash_key_symbol, Token { + final class HashKeySymbol extends @ruby_token_hash_key_symbol, TokenImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "HashKeySymbol" } } /** A class representing `hash_pattern` nodes. */ - class HashPattern extends @ruby_hash_pattern, AstNode { + final class HashPattern extends @ruby_hash_pattern, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "HashPattern" } @@ -914,7 +921,7 @@ module Ruby { } /** A class representing `hash_splat_argument` nodes. */ - class HashSplatArgument extends @ruby_hash_splat_argument, AstNode { + final class HashSplatArgument extends @ruby_hash_splat_argument, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "HashSplatArgument" } @@ -926,13 +933,13 @@ module Ruby { } /** A class representing `hash_splat_nil` tokens. */ - class HashSplatNil extends @ruby_token_hash_splat_nil, Token { + final class HashSplatNil extends @ruby_token_hash_splat_nil, TokenImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "HashSplatNil" } } /** A class representing `hash_splat_parameter` nodes. */ - class HashSplatParameter extends @ruby_hash_splat_parameter, AstNode { + final class HashSplatParameter extends @ruby_hash_splat_parameter, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "HashSplatParameter" } @@ -944,13 +951,13 @@ module Ruby { } /** A class representing `heredoc_beginning` tokens. */ - class HeredocBeginning extends @ruby_token_heredoc_beginning, Token { + final class HeredocBeginning extends @ruby_token_heredoc_beginning, TokenImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "HeredocBeginning" } } /** A class representing `heredoc_body` nodes. */ - class HeredocBody extends @ruby_heredoc_body, AstNode { + final class HeredocBody extends @ruby_heredoc_body, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "HeredocBody" } @@ -962,25 +969,25 @@ module Ruby { } /** A class representing `heredoc_content` tokens. */ - class HeredocContent extends @ruby_token_heredoc_content, Token { + final class HeredocContent extends @ruby_token_heredoc_content, TokenImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "HeredocContent" } } /** A class representing `heredoc_end` tokens. */ - class HeredocEnd extends @ruby_token_heredoc_end, Token { + final class HeredocEnd extends @ruby_token_heredoc_end, TokenImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "HeredocEnd" } } /** A class representing `identifier` tokens. */ - class Identifier extends @ruby_token_identifier, Token { + final class Identifier extends @ruby_token_identifier, TokenImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "Identifier" } } /** A class representing `if` nodes. */ - class If extends @ruby_if, AstNode { + final class If extends @ruby_if, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "If" } @@ -1002,7 +1009,7 @@ module Ruby { } /** A class representing `if_guard` nodes. */ - class IfGuard extends @ruby_if_guard, AstNode { + final class IfGuard extends @ruby_if_guard, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "IfGuard" } @@ -1014,7 +1021,7 @@ module Ruby { } /** A class representing `if_modifier` nodes. */ - class IfModifier extends @ruby_if_modifier, AstNode { + final class IfModifier extends @ruby_if_modifier, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "IfModifier" } @@ -1031,7 +1038,7 @@ module Ruby { } /** A class representing `in` nodes. */ - class In extends @ruby_in, AstNode { + final class In extends @ruby_in, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "In" } @@ -1043,7 +1050,7 @@ module Ruby { } /** A class representing `in_clause` nodes. */ - class InClause extends @ruby_in_clause, AstNode { + final class InClause extends @ruby_in_clause, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "InClause" } @@ -1065,19 +1072,19 @@ module Ruby { } /** A class representing `instance_variable` tokens. */ - class InstanceVariable extends @ruby_token_instance_variable, Token { + final class InstanceVariable extends @ruby_token_instance_variable, TokenImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "InstanceVariable" } } /** A class representing `integer` tokens. */ - class Integer extends @ruby_token_integer, Token { + final class Integer extends @ruby_token_integer, TokenImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "Integer" } } /** A class representing `interpolation` nodes. */ - class Interpolation extends @ruby_interpolation, AstNode { + final class Interpolation extends @ruby_interpolation, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "Interpolation" } @@ -1089,7 +1096,7 @@ module Ruby { } /** A class representing `keyword_parameter` nodes. */ - class KeywordParameter extends @ruby_keyword_parameter, AstNode { + final class KeywordParameter extends @ruby_keyword_parameter, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "KeywordParameter" } @@ -1106,7 +1113,7 @@ module Ruby { } /** A class representing `keyword_pattern` nodes. */ - class KeywordPattern extends @ruby_keyword_pattern, AstNode { + final class KeywordPattern extends @ruby_keyword_pattern, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "KeywordPattern" } @@ -1123,7 +1130,7 @@ module Ruby { } /** A class representing `lambda` nodes. */ - class Lambda extends @ruby_lambda, AstNode { + final class Lambda extends @ruby_lambda, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "Lambda" } @@ -1140,7 +1147,7 @@ module Ruby { } /** A class representing `lambda_parameters` nodes. */ - class LambdaParameters extends @ruby_lambda_parameters, AstNode { + final class LambdaParameters extends @ruby_lambda_parameters, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "LambdaParameters" } @@ -1152,7 +1159,7 @@ module Ruby { } /** A class representing `left_assignment_list` nodes. */ - class LeftAssignmentList extends @ruby_left_assignment_list, AstNode { + final class LeftAssignmentList extends @ruby_left_assignment_list, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "LeftAssignmentList" } @@ -1164,13 +1171,13 @@ module Ruby { } /** A class representing `line` tokens. */ - class Line extends @ruby_token_line, Token { + final class Line extends @ruby_token_line, TokenImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "Line" } } /** A class representing `match_pattern` nodes. */ - class MatchPattern extends @ruby_match_pattern, AstNode { + final class MatchPattern extends @ruby_match_pattern, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "MatchPattern" } @@ -1187,7 +1194,7 @@ module Ruby { } /** A class representing `method` nodes. */ - class Method extends @ruby_method, AstNode { + final class Method extends @ruby_method, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "Method" } @@ -1209,7 +1216,7 @@ module Ruby { } /** A class representing `method_parameters` nodes. */ - class MethodParameters extends @ruby_method_parameters, AstNode { + final class MethodParameters extends @ruby_method_parameters, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "MethodParameters" } @@ -1221,7 +1228,7 @@ module Ruby { } /** A class representing `module` nodes. */ - class Module extends @ruby_module, AstNode { + final class Module extends @ruby_module, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "Module" } @@ -1238,7 +1245,7 @@ module Ruby { } /** A class representing `next` nodes. */ - class Next extends @ruby_next, AstNode { + final class Next extends @ruby_next, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "Next" } @@ -1250,19 +1257,19 @@ module Ruby { } /** A class representing `nil` tokens. */ - class Nil extends @ruby_token_nil, Token { + final class Nil extends @ruby_token_nil, TokenImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "Nil" } } /** A class representing `operator` tokens. */ - class Operator extends @ruby_token_operator, Token { + final class Operator extends @ruby_token_operator, TokenImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "Operator" } } /** A class representing `operator_assignment` nodes. */ - class OperatorAssignment extends @ruby_operator_assignment, AstNode { + final class OperatorAssignment extends @ruby_operator_assignment, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "OperatorAssignment" } @@ -1311,7 +1318,7 @@ module Ruby { } /** A class representing `optional_parameter` nodes. */ - class OptionalParameter extends @ruby_optional_parameter, AstNode { + final class OptionalParameter extends @ruby_optional_parameter, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "OptionalParameter" } @@ -1328,7 +1335,7 @@ module Ruby { } /** A class representing `pair` nodes. */ - class Pair extends @ruby_pair, AstNode { + final class Pair extends @ruby_pair, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "Pair" } @@ -1345,7 +1352,7 @@ module Ruby { } /** A class representing `parenthesized_pattern` nodes. */ - class ParenthesizedPattern extends @ruby_parenthesized_pattern, AstNode { + final class ParenthesizedPattern extends @ruby_parenthesized_pattern, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "ParenthesizedPattern" } @@ -1357,7 +1364,7 @@ module Ruby { } /** A class representing `parenthesized_statements` nodes. */ - class ParenthesizedStatements extends @ruby_parenthesized_statements, AstNode { + final class ParenthesizedStatements extends @ruby_parenthesized_statements, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "ParenthesizedStatements" } @@ -1371,7 +1378,7 @@ module Ruby { } /** A class representing `pattern` nodes. */ - class Pattern extends @ruby_pattern, AstNode { + final class Pattern extends @ruby_pattern, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "Pattern" } @@ -1383,7 +1390,7 @@ module Ruby { } /** A class representing `program` nodes. */ - class Program extends @ruby_program, AstNode { + final class Program extends @ruby_program, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "Program" } @@ -1395,7 +1402,7 @@ module Ruby { } /** A class representing `range` nodes. */ - class Range extends @ruby_range, AstNode { + final class Range extends @ruby_range, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "Range" } @@ -1421,7 +1428,7 @@ module Ruby { } /** A class representing `rational` nodes. */ - class Rational extends @ruby_rational, AstNode { + final class Rational extends @ruby_rational, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "Rational" } @@ -1433,7 +1440,7 @@ module Ruby { } /** A class representing `redo` nodes. */ - class Redo extends @ruby_redo, AstNode { + final class Redo extends @ruby_redo, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "Redo" } @@ -1445,7 +1452,7 @@ module Ruby { } /** A class representing `regex` nodes. */ - class Regex extends @ruby_regex, AstNode { + final class Regex extends @ruby_regex, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "Regex" } @@ -1457,7 +1464,7 @@ module Ruby { } /** A class representing `rescue` nodes. */ - class Rescue extends @ruby_rescue, AstNode { + final class Rescue extends @ruby_rescue, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "Rescue" } @@ -1479,7 +1486,7 @@ module Ruby { } /** A class representing `rescue_modifier` nodes. */ - class RescueModifier extends @ruby_rescue_modifier, AstNode { + final class RescueModifier extends @ruby_rescue_modifier, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "RescueModifier" } @@ -1496,7 +1503,7 @@ module Ruby { } /** A class representing `rest_assignment` nodes. */ - class RestAssignment extends @ruby_rest_assignment, AstNode { + final class RestAssignment extends @ruby_rest_assignment, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "RestAssignment" } @@ -1508,7 +1515,7 @@ module Ruby { } /** A class representing `retry` nodes. */ - class Retry extends @ruby_retry, AstNode { + final class Retry extends @ruby_retry, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "Retry" } @@ -1520,7 +1527,7 @@ module Ruby { } /** A class representing `return` nodes. */ - class Return extends @ruby_return, AstNode { + final class Return extends @ruby_return, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "Return" } @@ -1532,7 +1539,7 @@ module Ruby { } /** A class representing `right_assignment_list` nodes. */ - class RightAssignmentList extends @ruby_right_assignment_list, AstNode { + final class RightAssignmentList extends @ruby_right_assignment_list, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "RightAssignmentList" } @@ -1544,7 +1551,7 @@ module Ruby { } /** A class representing `scope_resolution` nodes. */ - class ScopeResolution extends @ruby_scope_resolution, AstNode { + final class ScopeResolution extends @ruby_scope_resolution, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "ScopeResolution" } @@ -1561,13 +1568,13 @@ module Ruby { } /** A class representing `self` tokens. */ - class Self extends @ruby_token_self, Token { + final class Self extends @ruby_token_self, TokenImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "Self" } } /** A class representing `setter` nodes. */ - class Setter extends @ruby_setter, AstNode { + final class Setter extends @ruby_setter, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "Setter" } @@ -1579,13 +1586,13 @@ module Ruby { } /** A class representing `simple_symbol` tokens. */ - class SimpleSymbol extends @ruby_token_simple_symbol, Token { + final class SimpleSymbol extends @ruby_token_simple_symbol, TokenImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "SimpleSymbol" } } /** A class representing `singleton_class` nodes. */ - class SingletonClass extends @ruby_singleton_class, AstNode { + final class SingletonClass extends @ruby_singleton_class, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "SingletonClass" } @@ -1602,7 +1609,7 @@ module Ruby { } /** A class representing `singleton_method` nodes. */ - class SingletonMethod extends @ruby_singleton_method, AstNode { + final class SingletonMethod extends @ruby_singleton_method, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "SingletonMethod" } @@ -1628,7 +1635,7 @@ module Ruby { } /** A class representing `splat_argument` nodes. */ - class SplatArgument extends @ruby_splat_argument, AstNode { + final class SplatArgument extends @ruby_splat_argument, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "SplatArgument" } @@ -1640,7 +1647,7 @@ module Ruby { } /** A class representing `splat_parameter` nodes. */ - class SplatParameter extends @ruby_splat_parameter, AstNode { + final class SplatParameter extends @ruby_splat_parameter, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "SplatParameter" } @@ -1652,7 +1659,7 @@ module Ruby { } /** A class representing `string` nodes. */ - class String extends @ruby_string__, AstNode { + final class String extends @ruby_string__, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "String" } @@ -1664,7 +1671,7 @@ module Ruby { } /** A class representing `string_array` nodes. */ - class StringArray extends @ruby_string_array, AstNode { + final class StringArray extends @ruby_string_array, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "StringArray" } @@ -1676,13 +1683,13 @@ module Ruby { } /** A class representing `string_content` tokens. */ - class StringContent extends @ruby_token_string_content, Token { + final class StringContent extends @ruby_token_string_content, TokenImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "StringContent" } } /** A class representing `subshell` nodes. */ - class Subshell extends @ruby_subshell, AstNode { + final class Subshell extends @ruby_subshell, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "Subshell" } @@ -1694,13 +1701,13 @@ module Ruby { } /** A class representing `super` tokens. */ - class Super extends @ruby_token_super, Token { + final class Super extends @ruby_token_super, TokenImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "Super" } } /** A class representing `superclass` nodes. */ - class Superclass extends @ruby_superclass, AstNode { + final class Superclass extends @ruby_superclass, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "Superclass" } @@ -1712,7 +1719,7 @@ module Ruby { } /** A class representing `symbol_array` nodes. */ - class SymbolArray extends @ruby_symbol_array, AstNode { + final class SymbolArray extends @ruby_symbol_array, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "SymbolArray" } @@ -1724,7 +1731,7 @@ module Ruby { } /** A class representing `test_pattern` nodes. */ - class TestPattern extends @ruby_test_pattern, AstNode { + final class TestPattern extends @ruby_test_pattern, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "TestPattern" } @@ -1741,7 +1748,7 @@ module Ruby { } /** A class representing `then` nodes. */ - class Then extends @ruby_then, AstNode { + final class Then extends @ruby_then, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "Then" } @@ -1753,13 +1760,13 @@ module Ruby { } /** A class representing `true` tokens. */ - class True extends @ruby_token_true, Token { + final class True extends @ruby_token_true, TokenImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "True" } } /** A class representing `unary` nodes. */ - class Unary extends @ruby_unary, AstNode { + final class Unary extends @ruby_unary, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "Unary" } @@ -1788,7 +1795,7 @@ module Ruby { } /** A class representing `undef` nodes. */ - class Undef extends @ruby_undef, AstNode { + final class Undef extends @ruby_undef, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "Undef" } @@ -1800,13 +1807,13 @@ module Ruby { } /** A class representing `uninterpreted` tokens. */ - class Uninterpreted extends @ruby_token_uninterpreted, Token { + final class Uninterpreted extends @ruby_token_uninterpreted, TokenImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "Uninterpreted" } } /** A class representing `unless` nodes. */ - class Unless extends @ruby_unless, AstNode { + final class Unless extends @ruby_unless, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "Unless" } @@ -1828,7 +1835,7 @@ module Ruby { } /** A class representing `unless_guard` nodes. */ - class UnlessGuard extends @ruby_unless_guard, AstNode { + final class UnlessGuard extends @ruby_unless_guard, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "UnlessGuard" } @@ -1840,7 +1847,7 @@ module Ruby { } /** A class representing `unless_modifier` nodes. */ - class UnlessModifier extends @ruby_unless_modifier, AstNode { + final class UnlessModifier extends @ruby_unless_modifier, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "UnlessModifier" } @@ -1857,7 +1864,7 @@ module Ruby { } /** A class representing `until` nodes. */ - class Until extends @ruby_until, AstNode { + final class Until extends @ruby_until, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "Until" } @@ -1874,7 +1881,7 @@ module Ruby { } /** A class representing `until_modifier` nodes. */ - class UntilModifier extends @ruby_until_modifier, AstNode { + final class UntilModifier extends @ruby_until_modifier, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "UntilModifier" } @@ -1891,7 +1898,7 @@ module Ruby { } /** A class representing `variable_reference_pattern` nodes. */ - class VariableReferencePattern extends @ruby_variable_reference_pattern, AstNode { + final class VariableReferencePattern extends @ruby_variable_reference_pattern, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "VariableReferencePattern" } @@ -1903,7 +1910,7 @@ module Ruby { } /** A class representing `when` nodes. */ - class When extends @ruby_when, AstNode { + final class When extends @ruby_when, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "When" } @@ -1920,7 +1927,7 @@ module Ruby { } /** A class representing `while` nodes. */ - class While extends @ruby_while, AstNode { + final class While extends @ruby_while, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "While" } @@ -1937,7 +1944,7 @@ module Ruby { } /** A class representing `while_modifier` nodes. */ - class WhileModifier extends @ruby_while_modifier, AstNode { + final class WhileModifier extends @ruby_while_modifier, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "WhileModifier" } @@ -1954,7 +1961,7 @@ module Ruby { } /** A class representing `yield` nodes. */ - class Yield extends @ruby_yield, AstNode { + final class Yield extends @ruby_yield, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "Yield" } @@ -2303,7 +2310,7 @@ module Ruby { overlay[local] module Erb { /** The base class for all AST nodes */ - class AstNode extends @erb_ast_node { + private class AstNodeImpl extends @erb_ast_node { /** Gets a string representation of this element. */ string toString() { result = this.getAPrimaryQlClass() } @@ -2326,8 +2333,10 @@ module Erb { string getPrimaryQlClasses() { result = concat(this.getAPrimaryQlClass(), ",") } } + final class AstNode = AstNodeImpl; + /** A token. */ - class Token extends @erb_token, AstNode { + private class TokenImpl extends @erb_token, AstNodeImpl { /** Gets the value of this token. */ final string getValue() { erb_tokeninfo(this, _, result) } @@ -2338,8 +2347,10 @@ module Erb { override string getAPrimaryQlClass() { result = "Token" } } + final class Token = TokenImpl; + /** A reserved word. */ - class ReservedWord extends @erb_reserved_word, Token { + final class ReservedWord extends @erb_reserved_word, TokenImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "ReservedWord" } } @@ -2365,19 +2376,19 @@ module Erb { } /** A class representing `code` tokens. */ - class Code extends @erb_token_code, Token { + final class Code extends @erb_token_code, TokenImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "Code" } } /** A class representing `comment` tokens. */ - class Comment extends @erb_token_comment, Token { + final class Comment extends @erb_token_comment, TokenImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "Comment" } } /** A class representing `comment_directive` nodes. */ - class CommentDirective extends @erb_comment_directive, AstNode { + final class CommentDirective extends @erb_comment_directive, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "CommentDirective" } @@ -2389,13 +2400,13 @@ module Erb { } /** A class representing `content` tokens. */ - class Content extends @erb_token_content, Token { + final class Content extends @erb_token_content, TokenImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "Content" } } /** A class representing `directive` nodes. */ - class Directive extends @erb_directive, AstNode { + final class Directive extends @erb_directive, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "Directive" } @@ -2407,7 +2418,7 @@ module Erb { } /** A class representing `graphql_directive` nodes. */ - class GraphqlDirective extends @erb_graphql_directive, AstNode { + final class GraphqlDirective extends @erb_graphql_directive, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "GraphqlDirective" } @@ -2419,7 +2430,7 @@ module Erb { } /** A class representing `output_directive` nodes. */ - class OutputDirective extends @erb_output_directive, AstNode { + final class OutputDirective extends @erb_output_directive, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "OutputDirective" } @@ -2431,7 +2442,7 @@ module Erb { } /** A class representing `template` nodes. */ - class Template extends @erb_template, AstNode { + final class Template extends @erb_template, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "Template" } From 330bb17d6914e4f7e8255dcdf8275f8cc0e1645c Mon Sep 17 00:00:00 2001 From: Tom Hvitved Date: Mon, 29 Jun 2026 10:45:34 +0200 Subject: [PATCH 3/5] QL4QL: Regenerate `TreeSitter.qll` --- ql/Cargo.lock | 273 --------------- .../src/codeql_ql/ast/internal/TreeSitter.qll | 326 +++++++++--------- 2 files changed, 171 insertions(+), 428 deletions(-) diff --git a/ql/Cargo.lock b/ql/Cargo.lock index ba31581cc233..5c65d88de6a7 100644 --- a/ql/Cargo.lock +++ b/ql/Cargo.lock @@ -195,7 +195,6 @@ dependencies = [ "tracing", "tracing-subscriber", "tree-sitter", - "url", "yeast", "zstd", ] @@ -263,17 +262,6 @@ version = "0.8.20" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "22ec99545bb0ed0ea7bb9b8e1e9122ea386ff8a48c0922e43f36d45ab09e0e80" -[[package]] -name = "displaydoc" -version = "0.2.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - [[package]] name = "either" version = "1.13.0" @@ -360,15 +348,6 @@ dependencies = [ "miniz_oxide", ] -[[package]] -name = "form_urlencoded" -version = "1.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb4cb245038516f5f85277875cdaa4f7d2c9a0fa0468de06ed190163b1581fcf" -dependencies = [ - "percent-encoding", -] - [[package]] name = "globset" version = "0.4.15" @@ -423,109 +402,6 @@ dependencies = [ "cc", ] -[[package]] -name = "icu_collections" -version = "2.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2984d1cd16c883d7935b9e07e44071dca8d917fd52ecc02c04d5fa0b5a3f191c" -dependencies = [ - "displaydoc", - "potential_utf", - "utf8_iter", - "yoke", - "zerofrom", - "zerovec", -] - -[[package]] -name = "icu_locale_core" -version = "2.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92219b62b3e2b4d88ac5119f8904c10f8f61bf7e95b640d25ba3075e6cac2c29" -dependencies = [ - "displaydoc", - "litemap", - "tinystr", - "writeable", - "zerovec", -] - -[[package]] -name = "icu_normalizer" -version = "2.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c56e5ee99d6e3d33bd91c5d85458b6005a22140021cc324cea84dd0e72cff3b4" -dependencies = [ - "icu_collections", - "icu_normalizer_data", - "icu_properties", - "icu_provider", - "smallvec", - "zerovec", -] - -[[package]] -name = "icu_normalizer_data" -version = "2.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da3be0ae77ea334f4da67c12f149704f19f81d1adf7c51cf482943e84a2bad38" - -[[package]] -name = "icu_properties" -version = "2.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bee3b67d0ea5c2cca5003417989af8996f8604e34fb9ddf96208a033901e70de" -dependencies = [ - "icu_collections", - "icu_locale_core", - "icu_properties_data", - "icu_provider", - "zerotrie", - "zerovec", -] - -[[package]] -name = "icu_properties_data" -version = "2.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e2bbb201e0c04f7b4b3e14382af113e17ba4f63e2c9d2ee626b720cbce54a14" - -[[package]] -name = "icu_provider" -version = "2.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "139c4cf31c8b5f33d7e199446eff9c1e02decfc2f0eec2c8d71f65befa45b421" -dependencies = [ - "displaydoc", - "icu_locale_core", - "writeable", - "yoke", - "zerofrom", - "zerotrie", - "zerovec", -] - -[[package]] -name = "idna" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b0875f23caa03898994f6ddc501886a45c7d3d62d04d2d90788d47be1b1e4de" -dependencies = [ - "idna_adapter", - "smallvec", - "utf8_iter", -] - -[[package]] -name = "idna_adapter" -version = "1.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb68373c0d6620ef8105e855e7745e18b0d00d3bdb07fb532e434244cdb9a714" -dependencies = [ - "icu_normalizer", - "icu_properties", -] - [[package]] name = "indexmap" version = "2.14.0" @@ -578,12 +454,6 @@ version = "0.2.162" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "18d287de67fe55fd7e1581fe933d965a5a9477b38e949cfa9f8574ef01506398" -[[package]] -name = "litemap" -version = "0.8.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92daf443525c4cce67b150400bc2316076100ce0b3686209eb8cf3c31612e6f0" - [[package]] name = "log" version = "0.4.22" @@ -648,12 +518,6 @@ version = "1.20.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1261fe7e33c73b354eab43b1273a57c8f967d0391e80353e51f764ac02cf6775" -[[package]] -name = "percent-encoding" -version = "2.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b4f627cb1b25917193a259e49bdad08f671f8d9708acfd5fe0a8c1455d87220" - [[package]] name = "pin-project-lite" version = "0.2.15" @@ -666,15 +530,6 @@ version = "0.3.33" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "19f132c84eca552bf34cab8ec81f1c1dcc229b811638f9d283dceabe58c5569e" -[[package]] -name = "potential_utf" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0103b1cef7ec0cf76490e969665504990193874ea05c85ff9bab8b911d0a0564" -dependencies = [ - "zerovec", -] - [[package]] name = "proc-macro2" version = "1.0.89" @@ -814,12 +669,6 @@ version = "1.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" -[[package]] -name = "stable_deref_trait" -version = "1.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ce2be8dc25455e1f91df71bfa12ad37d7af1092ae736f3a6cd0e37bc7810596" - [[package]] name = "streaming-iterator" version = "0.1.9" @@ -843,17 +692,6 @@ dependencies = [ "unicode-ident", ] -[[package]] -name = "synstructure" -version = "0.13.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - [[package]] name = "thread_local" version = "1.1.8" @@ -864,16 +702,6 @@ dependencies = [ "once_cell", ] -[[package]] -name = "tinystr" -version = "0.8.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c8323304221c2a851516f22236c5722a72eaa19749016521d6dff0824447d96d" -dependencies = [ - "displaydoc", - "zerovec", -] - [[package]] name = "tracing" version = "0.1.44" @@ -1022,24 +850,6 @@ version = "0.2.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "673aac59facbab8a9007c7f6108d11f63b603f7cabff99fabf650fea5c32b861" -[[package]] -name = "url" -version = "2.5.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff67a8a4397373c3ef660812acab3268222035010ab8680ec4215f38ba3d0eed" -dependencies = [ - "form_urlencoded", - "idna", - "percent-encoding", - "serde", -] - -[[package]] -name = "utf8_iter" -version = "1.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be" - [[package]] name = "utf8parse" version = "0.2.2" @@ -1195,12 +1005,6 @@ version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" -[[package]] -name = "writeable" -version = "0.6.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ffae5123b2d3fc086436f8834ae3ab053a283cfac8fe0a0b8eaae044768a4c4" - [[package]] name = "yeast" version = "0.1.0" @@ -1224,83 +1028,6 @@ dependencies = [ "syn", ] -[[package]] -name = "yoke" -version = "0.8.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "abe8c5fda708d9ca3df187cae8bfb9ceda00dd96231bed36e445a1a48e66f9ca" -dependencies = [ - "stable_deref_trait", - "yoke-derive", - "zerofrom", -] - -[[package]] -name = "yoke-derive" -version = "0.8.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "de844c262c8848816172cef550288e7dc6c7b7814b4ee56b3e1553f275f1858e" -dependencies = [ - "proc-macro2", - "quote", - "syn", - "synstructure", -] - -[[package]] -name = "zerofrom" -version = "0.1.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ec05a11813ea801ff6d75110ad09cd0824ddba17dfe17128ea0d5f68e6c5272" -dependencies = [ - "zerofrom-derive", -] - -[[package]] -name = "zerofrom-derive" -version = "0.1.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "11532158c46691caf0f2593ea8358fed6bbf68a0315e80aae9bd41fbade684a1" -dependencies = [ - "proc-macro2", - "quote", - "syn", - "synstructure", -] - -[[package]] -name = "zerotrie" -version = "0.2.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0f9152d31db0792fa83f70fb2f83148effb5c1f5b8c7686c3459e361d9bc20bf" -dependencies = [ - "displaydoc", - "yoke", - "zerofrom", -] - -[[package]] -name = "zerovec" -version = "0.11.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "90f911cbc359ab6af17377d242225f4d75119aec87ea711a880987b18cd7b239" -dependencies = [ - "yoke", - "zerofrom", - "zerovec-derive", -] - -[[package]] -name = "zerovec-derive" -version = "0.11.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "625dc425cab0dca6dc3c3319506e6593dcb08a9f387ea3b284dbd52a92c40555" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - [[package]] name = "zstd" version = "0.13.3" diff --git a/ql/ql/src/codeql_ql/ast/internal/TreeSitter.qll b/ql/ql/src/codeql_ql/ast/internal/TreeSitter.qll index 402cb23b9104..e2aedc401f7a 100644 --- a/ql/ql/src/codeql_ql/ast/internal/TreeSitter.qll +++ b/ql/ql/src/codeql_ql/ast/internal/TreeSitter.qll @@ -26,7 +26,7 @@ private predicate discardLocation(@location_default loc) { overlay[local] module QL { /** The base class for all AST nodes */ - class AstNode extends @ql_ast_node { + private class AstNodeImpl extends @ql_ast_node { /** Gets a string representation of this element. */ string toString() { result = this.getAPrimaryQlClass() } @@ -49,8 +49,10 @@ module QL { string getPrimaryQlClasses() { result = concat(this.getAPrimaryQlClass(), ",") } } + final class AstNode = AstNodeImpl; + /** A token. */ - class Token extends @ql_token, AstNode { + private class TokenImpl extends @ql_token, AstNodeImpl { /** Gets the value of this token. */ final string getValue() { ql_tokeninfo(this, _, result) } @@ -61,8 +63,10 @@ module QL { override string getAPrimaryQlClass() { result = "Token" } } + final class Token = TokenImpl; + /** A reserved word. */ - class ReservedWord extends @ql_reserved_word, Token { + final class ReservedWord extends @ql_reserved_word, TokenImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "ReservedWord" } } @@ -88,7 +92,7 @@ module QL { } /** A class representing `add_expr` nodes. */ - class AddExpr extends @ql_add_expr, AstNode { + final class AddExpr extends @ql_add_expr, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "AddExpr" } @@ -110,19 +114,19 @@ module QL { } /** A class representing `addop` tokens. */ - class Addop extends @ql_token_addop, Token { + final class Addop extends @ql_token_addop, TokenImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "Addop" } } /** A class representing `aggId` tokens. */ - class AggId extends @ql_token_agg_id, Token { + final class AggId extends @ql_token_agg_id, TokenImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "AggId" } } /** A class representing `aggregate` nodes. */ - class Aggregate extends @ql_aggregate, AstNode { + final class Aggregate extends @ql_aggregate, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "Aggregate" } @@ -134,7 +138,7 @@ module QL { } /** A class representing `annotArg` nodes. */ - class AnnotArg extends @ql_annot_arg, AstNode { + final class AnnotArg extends @ql_annot_arg, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "AnnotArg" } @@ -146,13 +150,13 @@ module QL { } /** A class representing `annotName` tokens. */ - class AnnotName extends @ql_token_annot_name, Token { + final class AnnotName extends @ql_token_annot_name, TokenImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "AnnotName" } } /** A class representing `annotation` nodes. */ - class Annotation extends @ql_annotation, AstNode { + final class Annotation extends @ql_annotation, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "Annotation" } @@ -169,7 +173,7 @@ module QL { } /** A class representing `aritylessPredicateExpr` nodes. */ - class AritylessPredicateExpr extends @ql_arityless_predicate_expr, AstNode { + final class AritylessPredicateExpr extends @ql_arityless_predicate_expr, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "AritylessPredicateExpr" } @@ -187,7 +191,7 @@ module QL { } /** A class representing `asExpr` nodes. */ - class AsExpr extends @ql_as_expr, AstNode { + final class AsExpr extends @ql_as_expr, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "AsExpr" } @@ -199,7 +203,7 @@ module QL { } /** A class representing `asExprs` nodes. */ - class AsExprs extends @ql_as_exprs, AstNode { + final class AsExprs extends @ql_as_exprs, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "AsExprs" } @@ -211,13 +215,13 @@ module QL { } /** A class representing `block_comment` tokens. */ - class BlockComment extends @ql_token_block_comment, Token { + final class BlockComment extends @ql_token_block_comment, TokenImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "BlockComment" } } /** A class representing `body` nodes. */ - class Body extends @ql_body, AstNode { + final class Body extends @ql_body, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "Body" } @@ -229,7 +233,7 @@ module QL { } /** A class representing `bool` nodes. */ - class Bool extends @ql_bool, AstNode { + final class Bool extends @ql_bool, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "Bool" } @@ -241,7 +245,7 @@ module QL { } /** A class representing `call_body` nodes. */ - class CallBody extends @ql_call_body, AstNode { + final class CallBody extends @ql_call_body, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "CallBody" } @@ -253,7 +257,7 @@ module QL { } /** A class representing `call_or_unqual_agg_expr` nodes. */ - class CallOrUnqualAggExpr extends @ql_call_or_unqual_agg_expr, AstNode { + final class CallOrUnqualAggExpr extends @ql_call_or_unqual_agg_expr, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "CallOrUnqualAggExpr" } @@ -265,7 +269,7 @@ module QL { } /** A class representing `charpred` nodes. */ - class Charpred extends @ql_charpred, AstNode { + final class Charpred extends @ql_charpred, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "Charpred" } @@ -282,7 +286,7 @@ module QL { } /** A class representing `classMember` nodes. */ - class ClassMember extends @ql_class_member, AstNode { + final class ClassMember extends @ql_class_member, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "ClassMember" } @@ -294,13 +298,13 @@ module QL { } /** A class representing `className` tokens. */ - class ClassName extends @ql_token_class_name, Token { + final class ClassName extends @ql_token_class_name, TokenImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "ClassName" } } /** A class representing `classlessPredicate` nodes. */ - class ClasslessPredicate extends @ql_classless_predicate, AstNode { + final class ClasslessPredicate extends @ql_classless_predicate, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "ClasslessPredicate" } @@ -322,13 +326,13 @@ module QL { } /** A class representing `closure` tokens. */ - class Closure extends @ql_token_closure, Token { + final class Closure extends @ql_token_closure, TokenImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "Closure" } } /** A class representing `comp_term` nodes. */ - class CompTerm extends @ql_comp_term, AstNode { + final class CompTerm extends @ql_comp_term, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "CompTerm" } @@ -350,13 +354,13 @@ module QL { } /** A class representing `compop` tokens. */ - class Compop extends @ql_token_compop, Token { + final class Compop extends @ql_token_compop, TokenImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "Compop" } } /** A class representing `conjunction` nodes. */ - class Conjunction extends @ql_conjunction, AstNode { + final class Conjunction extends @ql_conjunction, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "Conjunction" } @@ -373,7 +377,7 @@ module QL { } /** A class representing `dataclass` nodes. */ - class Dataclass extends @ql_dataclass, AstNode { + final class Dataclass extends @ql_dataclass, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "Dataclass" } @@ -399,7 +403,7 @@ module QL { } /** A class representing `datatype` nodes. */ - class Datatype extends @ql_datatype, AstNode { + final class Datatype extends @ql_datatype, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "Datatype" } @@ -416,7 +420,7 @@ module QL { } /** A class representing `datatypeBranch` nodes. */ - class DatatypeBranch extends @ql_datatype_branch, AstNode { + final class DatatypeBranch extends @ql_datatype_branch, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "DatatypeBranch" } @@ -433,7 +437,7 @@ module QL { } /** A class representing `datatypeBranches` nodes. */ - class DatatypeBranches extends @ql_datatype_branches, AstNode { + final class DatatypeBranches extends @ql_datatype_branches, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "DatatypeBranches" } @@ -445,19 +449,19 @@ module QL { } /** A class representing `dbtype` tokens. */ - class Dbtype extends @ql_token_dbtype, Token { + final class Dbtype extends @ql_token_dbtype, TokenImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "Dbtype" } } /** A class representing `direction` tokens. */ - class Direction extends @ql_token_direction, Token { + final class Direction extends @ql_token_direction, TokenImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "Direction" } } /** A class representing `disjunction` nodes. */ - class Disjunction extends @ql_disjunction, AstNode { + final class Disjunction extends @ql_disjunction, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "Disjunction" } @@ -474,13 +478,13 @@ module QL { } /** A class representing `empty` tokens. */ - class Empty extends @ql_token_empty, Token { + final class Empty extends @ql_token_empty, TokenImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "Empty" } } /** A class representing `expr_aggregate_body` nodes. */ - class ExprAggregateBody extends @ql_expr_aggregate_body, AstNode { + final class ExprAggregateBody extends @ql_expr_aggregate_body, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "ExprAggregateBody" } @@ -497,7 +501,7 @@ module QL { } /** A class representing `expr_annotation` nodes. */ - class ExprAnnotation extends @ql_expr_annotation, AstNode { + final class ExprAnnotation extends @ql_expr_annotation, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "ExprAnnotation" } @@ -519,13 +523,13 @@ module QL { } /** A class representing `false` tokens. */ - class False extends @ql_token_false, Token { + final class False extends @ql_token_false, TokenImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "False" } } /** A class representing `field` nodes. */ - class Field extends @ql_field, AstNode { + final class Field extends @ql_field, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "Field" } @@ -537,13 +541,13 @@ module QL { } /** A class representing `float` tokens. */ - class Float extends @ql_token_float, Token { + final class Float extends @ql_token_float, TokenImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "Float" } } /** A class representing `full_aggregate_body` nodes. */ - class FullAggregateBody extends @ql_full_aggregate_body, AstNode { + final class FullAggregateBody extends @ql_full_aggregate_body, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "FullAggregateBody" } @@ -569,7 +573,7 @@ module QL { } /** A class representing `higherOrderTerm` nodes. */ - class HigherOrderTerm extends @ql_higher_order_term, AstNode { + final class HigherOrderTerm extends @ql_higher_order_term, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "HigherOrderTerm" } @@ -586,7 +590,7 @@ module QL { } /** A class representing `if_term` nodes. */ - class IfTerm extends @ql_if_term, AstNode { + final class IfTerm extends @ql_if_term, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "IfTerm" } @@ -608,7 +612,7 @@ module QL { } /** A class representing `implication` nodes. */ - class Implication extends @ql_implication, AstNode { + final class Implication extends @ql_implication, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "Implication" } @@ -625,7 +629,7 @@ module QL { } /** A class representing `importDirective` nodes. */ - class ImportDirective extends @ql_import_directive, AstNode { + final class ImportDirective extends @ql_import_directive, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "ImportDirective" } @@ -637,7 +641,7 @@ module QL { } /** A class representing `importModuleExpr` nodes. */ - class ImportModuleExpr extends @ql_import_module_expr, AstNode { + final class ImportModuleExpr extends @ql_import_module_expr, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "ImportModuleExpr" } @@ -654,7 +658,7 @@ module QL { } /** A class representing `in_expr` nodes. */ - class InExpr extends @ql_in_expr, AstNode { + final class InExpr extends @ql_in_expr, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "InExpr" } @@ -671,7 +675,7 @@ module QL { } /** A class representing `instance_of` nodes. */ - class InstanceOf extends @ql_instance_of, AstNode { + final class InstanceOf extends @ql_instance_of, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "InstanceOf" } @@ -683,19 +687,19 @@ module QL { } /** A class representing `integer` tokens. */ - class Integer extends @ql_token_integer, Token { + final class Integer extends @ql_token_integer, TokenImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "Integer" } } /** A class representing `line_comment` tokens. */ - class LineComment extends @ql_token_line_comment, Token { + final class LineComment extends @ql_token_line_comment, TokenImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "LineComment" } } /** A class representing `literal` nodes. */ - class Literal extends @ql_literal, AstNode { + final class Literal extends @ql_literal, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "Literal" } @@ -707,13 +711,13 @@ module QL { } /** A class representing `literalId` tokens. */ - class LiteralId extends @ql_token_literal_id, Token { + final class LiteralId extends @ql_token_literal_id, TokenImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "LiteralId" } } /** A class representing `memberPredicate` nodes. */ - class MemberPredicate extends @ql_member_predicate, AstNode { + final class MemberPredicate extends @ql_member_predicate, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "MemberPredicate" } @@ -735,7 +739,7 @@ module QL { } /** A class representing `module` nodes. */ - class Module extends @ql_module, AstNode { + final class Module extends @ql_module, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "Module" } @@ -761,7 +765,7 @@ module QL { } /** A class representing `moduleAliasBody` nodes. */ - class ModuleAliasBody extends @ql_module_alias_body, AstNode { + final class ModuleAliasBody extends @ql_module_alias_body, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "ModuleAliasBody" } @@ -773,7 +777,7 @@ module QL { } /** A class representing `moduleExpr` nodes. */ - class ModuleExpr extends @ql_module_expr, AstNode { + final class ModuleExpr extends @ql_module_expr, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "ModuleExpr" } @@ -790,7 +794,7 @@ module QL { } /** A class representing `moduleInstantiation` nodes. */ - class ModuleInstantiation extends @ql_module_instantiation, AstNode { + final class ModuleInstantiation extends @ql_module_instantiation, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "ModuleInstantiation" } @@ -807,7 +811,7 @@ module QL { } /** A class representing `moduleMember` nodes. */ - class ModuleMember extends @ql_module_member, AstNode { + final class ModuleMember extends @ql_module_member, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "ModuleMember" } @@ -819,7 +823,7 @@ module QL { } /** A class representing `moduleName` nodes. */ - class ModuleName extends @ql_module_name, AstNode { + final class ModuleName extends @ql_module_name, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "ModuleName" } @@ -831,7 +835,7 @@ module QL { } /** A class representing `moduleParam` nodes. */ - class ModuleParam extends @ql_module_param, AstNode { + final class ModuleParam extends @ql_module_param, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "ModuleParam" } @@ -848,7 +852,7 @@ module QL { } /** A class representing `mul_expr` nodes. */ - class MulExpr extends @ql_mul_expr, AstNode { + final class MulExpr extends @ql_mul_expr, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "MulExpr" } @@ -870,13 +874,13 @@ module QL { } /** A class representing `mulop` tokens. */ - class Mulop extends @ql_token_mulop, Token { + final class Mulop extends @ql_token_mulop, TokenImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "Mulop" } } /** A class representing `negation` nodes. */ - class Negation extends @ql_negation, AstNode { + final class Negation extends @ql_negation, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "Negation" } @@ -888,7 +892,7 @@ module QL { } /** A class representing `orderBy` nodes. */ - class OrderBy extends @ql_order_by, AstNode { + final class OrderBy extends @ql_order_by, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "OrderBy" } @@ -900,7 +904,7 @@ module QL { } /** A class representing `orderBys` nodes. */ - class OrderBys extends @ql_order_bys, AstNode { + final class OrderBys extends @ql_order_bys, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "OrderBys" } @@ -912,7 +916,7 @@ module QL { } /** A class representing `par_expr` nodes. */ - class ParExpr extends @ql_par_expr, AstNode { + final class ParExpr extends @ql_par_expr, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "ParExpr" } @@ -924,13 +928,13 @@ module QL { } /** A class representing `predicate` tokens. */ - class Predicate extends @ql_token_predicate, Token { + final class Predicate extends @ql_token_predicate, TokenImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "Predicate" } } /** A class representing `predicateAliasBody` nodes. */ - class PredicateAliasBody extends @ql_predicate_alias_body, AstNode { + final class PredicateAliasBody extends @ql_predicate_alias_body, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "PredicateAliasBody" } @@ -942,7 +946,7 @@ module QL { } /** A class representing `predicateExpr` nodes. */ - class PredicateExpr extends @ql_predicate_expr, AstNode { + final class PredicateExpr extends @ql_predicate_expr, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "PredicateExpr" } @@ -954,13 +958,13 @@ module QL { } /** A class representing `predicateName` tokens. */ - class PredicateName extends @ql_token_predicate_name, Token { + final class PredicateName extends @ql_token_predicate_name, TokenImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "PredicateName" } } /** A class representing `prefix_cast` nodes. */ - class PrefixCast extends @ql_prefix_cast, AstNode { + final class PrefixCast extends @ql_prefix_cast, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "PrefixCast" } @@ -972,13 +976,13 @@ module QL { } /** A class representing `primitiveType` tokens. */ - class PrimitiveType extends @ql_token_primitive_type, Token { + final class PrimitiveType extends @ql_token_primitive_type, TokenImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "PrimitiveType" } } /** A class representing `ql` nodes. */ - class Ql extends @ql_ql, AstNode { + final class Ql extends @ql_ql, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "Ql" } @@ -990,13 +994,13 @@ module QL { } /** A class representing `qldoc` tokens. */ - class Qldoc extends @ql_token_qldoc, Token { + final class Qldoc extends @ql_token_qldoc, TokenImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "Qldoc" } } /** A class representing `qualifiedRhs` nodes. */ - class QualifiedRhs extends @ql_qualified_rhs, AstNode { + final class QualifiedRhs extends @ql_qualified_rhs, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "QualifiedRhs" } @@ -1013,7 +1017,7 @@ module QL { } /** A class representing `qualified_expr` nodes. */ - class QualifiedExpr extends @ql_qualified_expr, AstNode { + final class QualifiedExpr extends @ql_qualified_expr, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "QualifiedExpr" } @@ -1025,7 +1029,7 @@ module QL { } /** A class representing `quantified` nodes. */ - class Quantified extends @ql_quantified, AstNode { + final class Quantified extends @ql_quantified, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "Quantified" } @@ -1051,13 +1055,13 @@ module QL { } /** A class representing `quantifier` tokens. */ - class Quantifier extends @ql_token_quantifier, Token { + final class Quantifier extends @ql_token_quantifier, TokenImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "Quantifier" } } /** A class representing `range` nodes. */ - class Range extends @ql_range, AstNode { + final class Range extends @ql_range, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "Range" } @@ -1074,13 +1078,13 @@ module QL { } /** A class representing `result` tokens. */ - class Result extends @ql_token_result, Token { + final class Result extends @ql_token_result, TokenImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "Result" } } /** A class representing `select` nodes. */ - class Select extends @ql_select, AstNode { + final class Select extends @ql_select, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "Select" } @@ -1092,7 +1096,7 @@ module QL { } /** A class representing `set_literal` nodes. */ - class SetLiteral extends @ql_set_literal, AstNode { + final class SetLiteral extends @ql_set_literal, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "SetLiteral" } @@ -1104,7 +1108,7 @@ module QL { } /** A class representing `signatureExpr` nodes. */ - class SignatureExpr extends @ql_signature_expr, AstNode { + final class SignatureExpr extends @ql_signature_expr, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "SignatureExpr" } @@ -1126,19 +1130,19 @@ module QL { } /** A class representing `simpleId` tokens. */ - class SimpleId extends @ql_token_simple_id, Token { + final class SimpleId extends @ql_token_simple_id, TokenImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "SimpleId" } } /** A class representing `specialId` tokens. */ - class SpecialId extends @ql_token_special_id, Token { + final class SpecialId extends @ql_token_special_id, TokenImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "SpecialId" } } /** A class representing `special_call` nodes. */ - class SpecialCall extends @ql_special_call, AstNode { + final class SpecialCall extends @ql_special_call, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "SpecialCall" } @@ -1150,19 +1154,19 @@ module QL { } /** A class representing `string` tokens. */ - class String extends @ql_token_string, Token { + final class String extends @ql_token_string, TokenImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "String" } } /** A class representing `super` tokens. */ - class Super extends @ql_token_super, Token { + final class Super extends @ql_token_super, TokenImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "Super" } } /** A class representing `super_ref` nodes. */ - class SuperRef extends @ql_super_ref, AstNode { + final class SuperRef extends @ql_super_ref, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "SuperRef" } @@ -1174,19 +1178,19 @@ module QL { } /** A class representing `this` tokens. */ - class This extends @ql_token_this, Token { + final class This extends @ql_token_this, TokenImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "This" } } /** A class representing `true` tokens. */ - class True extends @ql_token_true, Token { + final class True extends @ql_token_true, TokenImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "True" } } /** A class representing `typeAliasBody` nodes. */ - class TypeAliasBody extends @ql_type_alias_body, AstNode { + final class TypeAliasBody extends @ql_type_alias_body, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "TypeAliasBody" } @@ -1198,7 +1202,7 @@ module QL { } /** A class representing `typeExpr` nodes. */ - class TypeExpr extends @ql_type_expr, AstNode { + final class TypeExpr extends @ql_type_expr, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "TypeExpr" } @@ -1220,7 +1224,7 @@ module QL { } /** A class representing `typeUnionBody` nodes. */ - class TypeUnionBody extends @ql_type_union_body, AstNode { + final class TypeUnionBody extends @ql_type_union_body, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "TypeUnionBody" } @@ -1232,7 +1236,7 @@ module QL { } /** A class representing `unary_expr` nodes. */ - class UnaryExpr extends @ql_unary_expr, AstNode { + final class UnaryExpr extends @ql_unary_expr, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "UnaryExpr" } @@ -1244,19 +1248,19 @@ module QL { } /** A class representing `underscore` tokens. */ - class Underscore extends @ql_token_underscore, Token { + final class Underscore extends @ql_token_underscore, TokenImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "Underscore" } } /** A class representing `unop` tokens. */ - class Unop extends @ql_token_unop, Token { + final class Unop extends @ql_token_unop, TokenImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "Unop" } } /** A class representing `unqual_agg_body` nodes. */ - class UnqualAggBody extends @ql_unqual_agg_body, AstNode { + final class UnqualAggBody extends @ql_unqual_agg_body, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "UnqualAggBody" } @@ -1278,7 +1282,7 @@ module QL { } /** A class representing `varDecl` nodes. */ - class VarDecl extends @ql_var_decl, AstNode { + final class VarDecl extends @ql_var_decl, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "VarDecl" } @@ -1290,7 +1294,7 @@ module QL { } /** A class representing `varName` nodes. */ - class VarName extends @ql_var_name, AstNode { + final class VarName extends @ql_var_name, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "VarName" } @@ -1302,7 +1306,7 @@ module QL { } /** A class representing `variable` nodes. */ - class Variable extends @ql_variable, AstNode { + final class Variable extends @ql_variable, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "Variable" } @@ -1555,7 +1559,7 @@ module QL { overlay[local] module Dbscheme { /** The base class for all AST nodes */ - class AstNode extends @dbscheme_ast_node { + private class AstNodeImpl extends @dbscheme_ast_node { /** Gets a string representation of this element. */ string toString() { result = this.getAPrimaryQlClass() } @@ -1578,8 +1582,10 @@ module Dbscheme { string getPrimaryQlClasses() { result = concat(this.getAPrimaryQlClass(), ",") } } + final class AstNode = AstNodeImpl; + /** A token. */ - class Token extends @dbscheme_token, AstNode { + private class TokenImpl extends @dbscheme_token, AstNodeImpl { /** Gets the value of this token. */ final string getValue() { dbscheme_tokeninfo(this, _, result) } @@ -1590,8 +1596,10 @@ module Dbscheme { override string getAPrimaryQlClass() { result = "Token" } } + final class Token = TokenImpl; + /** A reserved word. */ - class ReservedWord extends @dbscheme_reserved_word, Token { + final class ReservedWord extends @dbscheme_reserved_word, TokenImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "ReservedWord" } } @@ -1617,13 +1625,13 @@ module Dbscheme { } /** A class representing `annotName` tokens. */ - class AnnotName extends @dbscheme_token_annot_name, Token { + final class AnnotName extends @dbscheme_token_annot_name, TokenImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "AnnotName" } } /** A class representing `annotation` nodes. */ - class Annotation extends @dbscheme_annotation, AstNode { + final class Annotation extends @dbscheme_annotation, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "Annotation" } @@ -1641,7 +1649,7 @@ module Dbscheme { } /** A class representing `argsAnnotation` nodes. */ - class ArgsAnnotation extends @dbscheme_args_annotation, AstNode { + final class ArgsAnnotation extends @dbscheme_args_annotation, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "ArgsAnnotation" } @@ -1658,19 +1666,19 @@ module Dbscheme { } /** A class representing `block_comment` tokens. */ - class BlockComment extends @dbscheme_token_block_comment, Token { + final class BlockComment extends @dbscheme_token_block_comment, TokenImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "BlockComment" } } /** A class representing `boolean` tokens. */ - class Boolean extends @dbscheme_token_boolean, Token { + final class Boolean extends @dbscheme_token_boolean, TokenImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "Boolean" } } /** A class representing `branch` nodes. */ - class Branch extends @dbscheme_branch, AstNode { + final class Branch extends @dbscheme_branch, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "Branch" } @@ -1687,7 +1695,7 @@ module Dbscheme { } /** A class representing `caseDecl` nodes. */ - class CaseDecl extends @dbscheme_case_decl, AstNode { + final class CaseDecl extends @dbscheme_case_decl, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "CaseDecl" } @@ -1709,7 +1717,7 @@ module Dbscheme { } /** A class representing `colType` nodes. */ - class ColType extends @dbscheme_col_type, AstNode { + final class ColType extends @dbscheme_col_type, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "ColType" } @@ -1721,7 +1729,7 @@ module Dbscheme { } /** A class representing `column` nodes. */ - class Column extends @dbscheme_column, AstNode { + final class Column extends @dbscheme_column, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "Column" } @@ -1755,13 +1763,13 @@ module Dbscheme { } /** A class representing `date` tokens. */ - class Date extends @dbscheme_token_date, Token { + final class Date extends @dbscheme_token_date, TokenImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "Date" } } /** A class representing `dbscheme` nodes. */ - class Dbscheme extends @dbscheme_dbscheme, AstNode { + final class Dbscheme extends @dbscheme_dbscheme, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "Dbscheme" } @@ -1773,13 +1781,13 @@ module Dbscheme { } /** A class representing `dbtype` tokens. */ - class Dbtype extends @dbscheme_token_dbtype, Token { + final class Dbtype extends @dbscheme_token_dbtype, TokenImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "Dbtype" } } /** A class representing `entry` nodes. */ - class Entry extends @dbscheme_entry, AstNode { + final class Entry extends @dbscheme_entry, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "Entry" } @@ -1791,43 +1799,43 @@ module Dbscheme { } /** A class representing `float` tokens. */ - class Float extends @dbscheme_token_float, Token { + final class Float extends @dbscheme_token_float, TokenImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "Float" } } /** A class representing `int` tokens. */ - class Int extends @dbscheme_token_int, Token { + final class Int extends @dbscheme_token_int, TokenImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "Int" } } /** A class representing `integer` tokens. */ - class Integer extends @dbscheme_token_integer, Token { + final class Integer extends @dbscheme_token_integer, TokenImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "Integer" } } /** A class representing `line_comment` tokens. */ - class LineComment extends @dbscheme_token_line_comment, Token { + final class LineComment extends @dbscheme_token_line_comment, TokenImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "LineComment" } } /** A class representing `qldoc` tokens. */ - class Qldoc extends @dbscheme_token_qldoc, Token { + final class Qldoc extends @dbscheme_token_qldoc, TokenImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "Qldoc" } } /** A class representing `ref` tokens. */ - class Ref extends @dbscheme_token_ref, Token { + final class Ref extends @dbscheme_token_ref, TokenImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "Ref" } } /** A class representing `reprType` nodes. */ - class ReprType extends @dbscheme_repr_type, AstNode { + final class ReprType extends @dbscheme_repr_type, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "ReprType" } @@ -1839,19 +1847,19 @@ module Dbscheme { } /** A class representing `simpleId` tokens. */ - class SimpleId extends @dbscheme_token_simple_id, Token { + final class SimpleId extends @dbscheme_token_simple_id, TokenImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "SimpleId" } } /** A class representing `string` tokens. */ - class String extends @dbscheme_token_string, Token { + final class String extends @dbscheme_token_string, TokenImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "String" } } /** A class representing `table` nodes. */ - class Table extends @dbscheme_table, AstNode { + final class Table extends @dbscheme_table, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "Table" } @@ -1868,7 +1876,7 @@ module Dbscheme { } /** A class representing `tableName` nodes. */ - class TableName extends @dbscheme_table_name, AstNode { + final class TableName extends @dbscheme_table_name, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "TableName" } @@ -1880,7 +1888,7 @@ module Dbscheme { } /** A class representing `unionDecl` nodes. */ - class UnionDecl extends @dbscheme_union_decl, AstNode { + final class UnionDecl extends @dbscheme_union_decl, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "UnionDecl" } @@ -1897,13 +1905,13 @@ module Dbscheme { } /** A class representing `unique` tokens. */ - class Unique extends @dbscheme_token_unique, Token { + final class Unique extends @dbscheme_token_unique, TokenImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "Unique" } } /** A class representing `varchar` tokens. */ - class Varchar extends @dbscheme_token_varchar, Token { + final class Varchar extends @dbscheme_token_varchar, TokenImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "Varchar" } } @@ -1966,7 +1974,7 @@ module Dbscheme { overlay[local] module Blame { /** The base class for all AST nodes */ - class AstNode extends @blame_ast_node { + private class AstNodeImpl extends @blame_ast_node { /** Gets a string representation of this element. */ string toString() { result = this.getAPrimaryQlClass() } @@ -1989,8 +1997,10 @@ module Blame { string getPrimaryQlClasses() { result = concat(this.getAPrimaryQlClass(), ",") } } + final class AstNode = AstNodeImpl; + /** A token. */ - class Token extends @blame_token, AstNode { + private class TokenImpl extends @blame_token, AstNodeImpl { /** Gets the value of this token. */ final string getValue() { blame_tokeninfo(this, _, result) } @@ -2001,8 +2011,10 @@ module Blame { override string getAPrimaryQlClass() { result = "Token" } } + final class Token = TokenImpl; + /** A reserved word. */ - class ReservedWord extends @blame_reserved_word, Token { + final class ReservedWord extends @blame_reserved_word, TokenImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "ReservedWord" } } @@ -2028,7 +2040,7 @@ module Blame { } /** A class representing `blame_entry` nodes. */ - class BlameEntry extends @blame_blame_entry, AstNode { + final class BlameEntry extends @blame_blame_entry, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "BlameEntry" } @@ -2045,7 +2057,7 @@ module Blame { } /** A class representing `blame_info` nodes. */ - class BlameInfo extends @blame_blame_info, AstNode { + final class BlameInfo extends @blame_blame_info, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "BlameInfo" } @@ -2062,13 +2074,13 @@ module Blame { } /** A class representing `date` tokens. */ - class Date extends @blame_token_date, Token { + final class Date extends @blame_token_date, TokenImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "Date" } } /** A class representing `file_entry` nodes. */ - class FileEntry extends @blame_file_entry, AstNode { + final class FileEntry extends @blame_file_entry, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "FileEntry" } @@ -2085,13 +2097,13 @@ module Blame { } /** A class representing `filename` tokens. */ - class Filename extends @blame_token_filename, Token { + final class Filename extends @blame_token_filename, TokenImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "Filename" } } /** A class representing `number` tokens. */ - class Number extends @blame_token_number, Token { + final class Number extends @blame_token_number, TokenImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "Number" } } @@ -2118,7 +2130,7 @@ module Blame { overlay[local] module JSON { /** The base class for all AST nodes */ - class AstNode extends @json_ast_node { + private class AstNodeImpl extends @json_ast_node { /** Gets a string representation of this element. */ string toString() { result = this.getAPrimaryQlClass() } @@ -2141,8 +2153,10 @@ module JSON { string getPrimaryQlClasses() { result = concat(this.getAPrimaryQlClass(), ",") } } + final class AstNode = AstNodeImpl; + /** A token. */ - class Token extends @json_token, AstNode { + private class TokenImpl extends @json_token, AstNodeImpl { /** Gets the value of this token. */ final string getValue() { json_tokeninfo(this, _, result) } @@ -2153,8 +2167,10 @@ module JSON { override string getAPrimaryQlClass() { result = "Token" } } + final class Token = TokenImpl; + /** A reserved word. */ - class ReservedWord extends @json_reserved_word, Token { + final class ReservedWord extends @json_reserved_word, TokenImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "ReservedWord" } } @@ -2179,10 +2195,10 @@ module JSON { ) } - class UnderscoreValue extends @json_underscore_value, AstNode { } + final class UnderscoreValue extends @json_underscore_value, AstNodeImpl { } /** A class representing `array` nodes. */ - class Array extends @json_array, AstNode { + final class Array extends @json_array, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "Array" } @@ -2194,13 +2210,13 @@ module JSON { } /** A class representing `comment` tokens. */ - class Comment extends @json_token_comment, Token { + final class Comment extends @json_token_comment, TokenImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "Comment" } } /** A class representing `document` nodes. */ - class Document extends @json_document, AstNode { + final class Document extends @json_document, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "Document" } @@ -2212,31 +2228,31 @@ module JSON { } /** A class representing `escape_sequence` tokens. */ - class EscapeSequence extends @json_token_escape_sequence, Token { + final class EscapeSequence extends @json_token_escape_sequence, TokenImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "EscapeSequence" } } /** A class representing `false` tokens. */ - class False extends @json_token_false, Token { + final class False extends @json_token_false, TokenImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "False" } } /** A class representing `null` tokens. */ - class Null extends @json_token_null, Token { + final class Null extends @json_token_null, TokenImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "Null" } } /** A class representing `number` tokens. */ - class Number extends @json_token_number, Token { + final class Number extends @json_token_number, TokenImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "Number" } } /** A class representing `object` nodes. */ - class Object extends @json_object, AstNode { + final class Object extends @json_object, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "Object" } @@ -2248,7 +2264,7 @@ module JSON { } /** A class representing `pair` nodes. */ - class Pair extends @json_pair, AstNode { + final class Pair extends @json_pair, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "Pair" } @@ -2265,7 +2281,7 @@ module JSON { } /** A class representing `string` nodes. */ - class String extends @json_string__, AstNode { + final class String extends @json_string__, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "String" } @@ -2277,13 +2293,13 @@ module JSON { } /** A class representing `string_content` tokens. */ - class StringContent extends @json_token_string_content, Token { + final class StringContent extends @json_token_string_content, TokenImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "StringContent" } } /** A class representing `true` tokens. */ - class True extends @json_token_true, Token { + final class True extends @json_token_true, TokenImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "True" } } From d985c48e845b1e8c34b5f41d5807ad3b6e8c6d1b Mon Sep 17 00:00:00 2001 From: Tom Hvitved Date: Mon, 29 Jun 2026 11:53:40 +0200 Subject: [PATCH 4/5] Unified: Regenerate `Ast.qll` --- unified/ql/lib/codeql/unified/Ast.qll | 186 +++++++++++++------------- 1 file changed, 95 insertions(+), 91 deletions(-) diff --git a/unified/ql/lib/codeql/unified/Ast.qll b/unified/ql/lib/codeql/unified/Ast.qll index 602d6ab2a424..8adb4c2e44a0 100644 --- a/unified/ql/lib/codeql/unified/Ast.qll +++ b/unified/ql/lib/codeql/unified/Ast.qll @@ -26,7 +26,7 @@ private predicate discardLocation(@location_default loc) { overlay[local] module Unified { /** The base class for all AST nodes */ - class AstNode extends @unified_ast_node { + private class AstNodeImpl extends @unified_ast_node { /** Gets a string representation of this element. */ string toString() { result = this.getAPrimaryQlClass() } @@ -49,8 +49,10 @@ module Unified { string getPrimaryQlClasses() { result = concat(this.getAPrimaryQlClass(), ",") } } + final class AstNode = AstNodeImpl; + /** A token. */ - class Token extends @unified_token, AstNode { + private class TokenImpl extends @unified_token, AstNodeImpl { /** Gets the value of this token. */ final string getValue() { unified_tokeninfo(this, _, result) } @@ -61,8 +63,10 @@ module Unified { override string getAPrimaryQlClass() { result = "Token" } } + final class Token = TokenImpl; + /** A trivia token, such as a comment, preserved from the original parse tree. */ - class TriviaToken extends @unified_trivia_token, AstNode { + final class TriviaToken extends @unified_trivia_token, AstNodeImpl { /** Gets the source text of this trivia token. */ final string getValue() { unified_trivia_tokeninfo(this, _, result) } @@ -94,7 +98,7 @@ module Unified { } /** A class representing `accessor_declaration` nodes. */ - class AccessorDeclaration extends @unified_accessor_declaration, AstNode { + final class AccessorDeclaration extends @unified_accessor_declaration, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "AccessorDeclaration" } @@ -128,13 +132,13 @@ module Unified { } /** A class representing `accessor_kind` tokens. */ - class AccessorKind extends @unified_token_accessor_kind, Token { + final class AccessorKind extends @unified_token_accessor_kind, TokenImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "AccessorKind" } } /** A class representing `argument` nodes. */ - class Argument extends @unified_argument, AstNode { + final class Argument extends @unified_argument, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "Argument" } @@ -156,7 +160,7 @@ module Unified { } /** A class representing `array_literal` nodes. */ - class ArrayLiteral extends @unified_array_literal, AstNode { + final class ArrayLiteral extends @unified_array_literal, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "ArrayLiteral" } @@ -168,7 +172,7 @@ module Unified { } /** A class representing `assign_expr` nodes. */ - class AssignExpr extends @unified_assign_expr, AstNode { + final class AssignExpr extends @unified_assign_expr, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "AssignExpr" } @@ -185,7 +189,7 @@ module Unified { } /** A class representing `associated_type_declaration` nodes. */ - class AssociatedTypeDeclaration extends @unified_associated_type_declaration, AstNode { + final class AssociatedTypeDeclaration extends @unified_associated_type_declaration, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "AssociatedTypeDeclaration" } @@ -209,7 +213,7 @@ module Unified { } /** A class representing `base_type` nodes. */ - class BaseType extends @unified_base_type, AstNode { + final class BaseType extends @unified_base_type, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "BaseType" } @@ -226,7 +230,7 @@ module Unified { } /** A class representing `binary_expr` nodes. */ - class BinaryExpr extends @unified_binary_expr, AstNode { + final class BinaryExpr extends @unified_binary_expr, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "BinaryExpr" } @@ -248,7 +252,7 @@ module Unified { } /** A class representing `block` nodes. */ - class Block extends @unified_block, AstNode { + final class Block extends @unified_block, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "Block" } @@ -260,13 +264,13 @@ module Unified { } /** A class representing `boolean_literal` tokens. */ - class BooleanLiteral extends @unified_token_boolean_literal, Token { + final class BooleanLiteral extends @unified_token_boolean_literal, TokenImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "BooleanLiteral" } } /** A class representing `bound_type_constraint` nodes. */ - class BoundTypeConstraint extends @unified_bound_type_constraint, AstNode { + final class BoundTypeConstraint extends @unified_bound_type_constraint, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "BoundTypeConstraint" } @@ -284,7 +288,7 @@ module Unified { } /** A class representing `break_expr` nodes. */ - class BreakExpr extends @unified_break_expr, AstNode { + final class BreakExpr extends @unified_break_expr, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "BreakExpr" } @@ -296,13 +300,13 @@ module Unified { } /** A class representing `builtin_expr` tokens. */ - class BuiltinExpr extends @unified_token_builtin_expr, Token { + final class BuiltinExpr extends @unified_token_builtin_expr, TokenImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "BuiltinExpr" } } /** A class representing `bulk_importing_pattern` nodes. */ - class BulkImportingPattern extends @unified_bulk_importing_pattern, AstNode { + final class BulkImportingPattern extends @unified_bulk_importing_pattern, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "BulkImportingPattern" } @@ -316,7 +320,7 @@ module Unified { } /** A class representing `call_expr` nodes. */ - class CallExpr extends @unified_call_expr, AstNode { + final class CallExpr extends @unified_call_expr, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "CallExpr" } @@ -338,7 +342,7 @@ module Unified { } /** A class representing `catch_clause` nodes. */ - class CatchClause extends @unified_catch_clause, AstNode { + final class CatchClause extends @unified_catch_clause, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "CatchClause" } @@ -364,7 +368,7 @@ module Unified { } /** A class representing `class_like_declaration` nodes. */ - class ClassLikeDeclaration extends @unified_class_like_declaration, AstNode { + final class ClassLikeDeclaration extends @unified_class_like_declaration, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "ClassLikeDeclaration" } @@ -402,7 +406,7 @@ module Unified { } /** A class representing `compound_assign_expr` nodes. */ - class CompoundAssignExpr extends @unified_compound_assign_expr, AstNode { + final class CompoundAssignExpr extends @unified_compound_assign_expr, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "CompoundAssignExpr" } @@ -424,7 +428,7 @@ module Unified { } /** A class representing `constructor_declaration` nodes. */ - class ConstructorDeclaration extends @unified_constructor_declaration, AstNode { + final class ConstructorDeclaration extends @unified_constructor_declaration, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "ConstructorDeclaration" } @@ -452,7 +456,7 @@ module Unified { } /** A class representing `constructor_pattern` nodes. */ - class ConstructorPattern extends @unified_constructor_pattern, AstNode { + final class ConstructorPattern extends @unified_constructor_pattern, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "ConstructorPattern" } @@ -474,7 +478,7 @@ module Unified { } /** A class representing `continue_expr` nodes. */ - class ContinueExpr extends @unified_continue_expr, AstNode { + final class ContinueExpr extends @unified_continue_expr, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "ContinueExpr" } @@ -486,7 +490,7 @@ module Unified { } /** A class representing `destructor_declaration` nodes. */ - class DestructorDeclaration extends @unified_destructor_declaration, AstNode { + final class DestructorDeclaration extends @unified_destructor_declaration, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "DestructorDeclaration" } @@ -504,7 +508,7 @@ module Unified { } /** A class representing `do_while_stmt` nodes. */ - class DoWhileStmt extends @unified_do_while_stmt, AstNode { + final class DoWhileStmt extends @unified_do_while_stmt, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "DoWhileStmt" } @@ -526,13 +530,13 @@ module Unified { } /** A class representing `empty_expr` tokens. */ - class EmptyExpr extends @unified_token_empty_expr, Token { + final class EmptyExpr extends @unified_token_empty_expr, TokenImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "EmptyExpr" } } /** A class representing `equality_type_constraint` nodes. */ - class EqualityTypeConstraint extends @unified_equality_type_constraint, AstNode { + final class EqualityTypeConstraint extends @unified_equality_type_constraint, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "EqualityTypeConstraint" } @@ -549,10 +553,10 @@ module Unified { } } - class Expr extends @unified_expr, AstNode { } + final class Expr extends @unified_expr, AstNodeImpl { } /** A class representing `expr_equality_pattern` nodes. */ - class ExprEqualityPattern extends @unified_expr_equality_pattern, AstNode { + final class ExprEqualityPattern extends @unified_expr_equality_pattern, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "ExprEqualityPattern" } @@ -563,24 +567,24 @@ module Unified { final override AstNode getAFieldOrChild() { unified_expr_equality_pattern_def(this, result) } } - class ExprOrPattern extends @unified_expr_or_pattern, AstNode { } + final class ExprOrPattern extends @unified_expr_or_pattern, AstNodeImpl { } - class ExprOrType extends @unified_expr_or_type, AstNode { } + final class ExprOrType extends @unified_expr_or_type, AstNodeImpl { } /** A class representing `fixity` tokens. */ - class Fixity extends @unified_token_fixity, Token { + final class Fixity extends @unified_token_fixity, TokenImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "Fixity" } } /** A class representing `float_literal` tokens. */ - class FloatLiteral extends @unified_token_float_literal, Token { + final class FloatLiteral extends @unified_token_float_literal, TokenImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "FloatLiteral" } } /** A class representing `for_each_stmt` nodes. */ - class ForEachStmt extends @unified_for_each_stmt, AstNode { + final class ForEachStmt extends @unified_for_each_stmt, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "ForEachStmt" } @@ -610,7 +614,7 @@ module Unified { } /** A class representing `function_declaration` nodes. */ - class FunctionDeclaration extends @unified_function_declaration, AstNode { + final class FunctionDeclaration extends @unified_function_declaration, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "FunctionDeclaration" } @@ -652,7 +656,7 @@ module Unified { } /** A class representing `function_expr` nodes. */ - class FunctionExpr extends @unified_function_expr, AstNode { + final class FunctionExpr extends @unified_function_expr, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "FunctionExpr" } @@ -684,7 +688,7 @@ module Unified { } /** A class representing `function_type_expr` nodes. */ - class FunctionTypeExpr extends @unified_function_type_expr, AstNode { + final class FunctionTypeExpr extends @unified_function_type_expr, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "FunctionTypeExpr" } @@ -702,7 +706,7 @@ module Unified { } /** A class representing `generic_type_expr` nodes. */ - class GenericTypeExpr extends @unified_generic_type_expr, AstNode { + final class GenericTypeExpr extends @unified_generic_type_expr, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "GenericTypeExpr" } @@ -722,7 +726,7 @@ module Unified { } /** A class representing `guard_if_stmt` nodes. */ - class GuardIfStmt extends @unified_guard_if_stmt, AstNode { + final class GuardIfStmt extends @unified_guard_if_stmt, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "GuardIfStmt" } @@ -739,13 +743,13 @@ module Unified { } /** A class representing `identifier` tokens. */ - class Identifier extends @unified_token_identifier, Token { + final class Identifier extends @unified_token_identifier, TokenImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "Identifier" } } /** A class representing `if_expr` nodes. */ - class IfExpr extends @unified_if_expr, AstNode { + final class IfExpr extends @unified_if_expr, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "IfExpr" } @@ -767,13 +771,13 @@ module Unified { } /** A class representing `ignore_pattern` tokens. */ - class IgnorePattern extends @unified_token_ignore_pattern, Token { + final class IgnorePattern extends @unified_token_ignore_pattern, TokenImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "IgnorePattern" } } /** A class representing `import_declaration` nodes. */ - class ImportDeclaration extends @unified_import_declaration, AstNode { + final class ImportDeclaration extends @unified_import_declaration, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "ImportDeclaration" } @@ -795,19 +799,19 @@ module Unified { } /** A class representing `inferred_type_expr` tokens. */ - class InferredTypeExpr extends @unified_token_inferred_type_expr, Token { + final class InferredTypeExpr extends @unified_token_inferred_type_expr, TokenImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "InferredTypeExpr" } } /** A class representing `infix_operator` tokens. */ - class InfixOperator extends @unified_token_infix_operator, Token { + final class InfixOperator extends @unified_token_infix_operator, TokenImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "InfixOperator" } } /** A class representing `initializer_declaration` nodes. */ - class InitializerDeclaration extends @unified_initializer_declaration, AstNode { + final class InitializerDeclaration extends @unified_initializer_declaration, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "InitializerDeclaration" } @@ -825,13 +829,13 @@ module Unified { } /** A class representing `int_literal` tokens. */ - class IntLiteral extends @unified_token_int_literal, Token { + final class IntLiteral extends @unified_token_int_literal, TokenImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "IntLiteral" } } /** A class representing `key_value_pair` nodes. */ - class KeyValuePair extends @unified_key_value_pair, AstNode { + final class KeyValuePair extends @unified_key_value_pair, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "KeyValuePair" } @@ -848,7 +852,7 @@ module Unified { } /** A class representing `labeled_stmt` nodes. */ - class LabeledStmt extends @unified_labeled_stmt, AstNode { + final class LabeledStmt extends @unified_labeled_stmt, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "LabeledStmt" } @@ -865,7 +869,7 @@ module Unified { } /** A class representing `map_literal` nodes. */ - class MapLiteral extends @unified_map_literal, AstNode { + final class MapLiteral extends @unified_map_literal, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "MapLiteral" } @@ -876,10 +880,10 @@ module Unified { final override AstNode getAFieldOrChild() { unified_map_literal_element(this, _, result) } } - class Member extends @unified_member, AstNode { } + final class Member extends @unified_member, AstNodeImpl { } /** A class representing `member_access_expr` nodes. */ - class MemberAccessExpr extends @unified_member_access_expr, AstNode { + final class MemberAccessExpr extends @unified_member_access_expr, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "MemberAccessExpr" } @@ -897,13 +901,13 @@ module Unified { } /** A class representing `modifier` tokens. */ - class Modifier extends @unified_token_modifier, Token { + final class Modifier extends @unified_token_modifier, TokenImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "Modifier" } } /** A class representing `name_expr` nodes. */ - class NameExpr extends @unified_name_expr, AstNode { + final class NameExpr extends @unified_name_expr, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "NameExpr" } @@ -915,7 +919,7 @@ module Unified { } /** A class representing `name_pattern` nodes. */ - class NamePattern extends @unified_name_pattern, AstNode { + final class NamePattern extends @unified_name_pattern, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "NamePattern" } @@ -932,7 +936,7 @@ module Unified { } /** A class representing `named_type_expr` nodes. */ - class NamedTypeExpr extends @unified_named_type_expr, AstNode { + final class NamedTypeExpr extends @unified_named_type_expr, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "NamedTypeExpr" } @@ -948,10 +952,10 @@ module Unified { } } - class Operator extends @unified_operator, AstNode { } + final class Operator extends @unified_operator, AstNodeImpl { } /** A class representing `operator_syntax_declaration` nodes. */ - class OperatorSyntaxDeclaration extends @unified_operator_syntax_declaration, AstNode { + final class OperatorSyntaxDeclaration extends @unified_operator_syntax_declaration, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "OperatorSyntaxDeclaration" } @@ -979,7 +983,7 @@ module Unified { } /** A class representing `or_pattern` nodes. */ - class OrPattern extends @unified_or_pattern, AstNode { + final class OrPattern extends @unified_or_pattern, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "OrPattern" } @@ -996,7 +1000,7 @@ module Unified { } /** A class representing `parameter` nodes. */ - class Parameter extends @unified_parameter, AstNode { + final class Parameter extends @unified_parameter, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "Parameter" } @@ -1025,10 +1029,10 @@ module Unified { } } - class Pattern extends @unified_pattern, AstNode { } + final class Pattern extends @unified_pattern, AstNodeImpl { } /** A class representing `pattern_element` nodes. */ - class PatternElement extends @unified_pattern_element, AstNode { + final class PatternElement extends @unified_pattern_element, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "PatternElement" } @@ -1050,7 +1054,7 @@ module Unified { } /** A class representing `pattern_guard_expr` nodes. */ - class PatternGuardExpr extends @unified_pattern_guard_expr, AstNode { + final class PatternGuardExpr extends @unified_pattern_guard_expr, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "PatternGuardExpr" } @@ -1068,25 +1072,25 @@ module Unified { } /** A class representing `postfix_operator` tokens. */ - class PostfixOperator extends @unified_token_postfix_operator, Token { + final class PostfixOperator extends @unified_token_postfix_operator, TokenImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "PostfixOperator" } } /** A class representing `prefix_operator` tokens. */ - class PrefixOperator extends @unified_token_prefix_operator, Token { + final class PrefixOperator extends @unified_token_prefix_operator, TokenImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "PrefixOperator" } } /** A class representing `regex_literal` tokens. */ - class RegexLiteral extends @unified_token_regex_literal, Token { + final class RegexLiteral extends @unified_token_regex_literal, TokenImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "RegexLiteral" } } /** A class representing `return_expr` nodes. */ - class ReturnExpr extends @unified_return_expr, AstNode { + final class ReturnExpr extends @unified_return_expr, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "ReturnExpr" } @@ -1097,22 +1101,22 @@ module Unified { final override AstNode getAFieldOrChild() { unified_return_expr_value(this, result) } } - class Stmt extends @unified_stmt, AstNode { } + final class Stmt extends @unified_stmt, AstNodeImpl { } /** A class representing `string_literal` tokens. */ - class StringLiteral extends @unified_token_string_literal, Token { + final class StringLiteral extends @unified_token_string_literal, TokenImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "StringLiteral" } } /** A class representing `super_expr` tokens. */ - class SuperExpr extends @unified_token_super_expr, Token { + final class SuperExpr extends @unified_token_super_expr, TokenImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "SuperExpr" } } /** A class representing `switch_case` nodes. */ - class SwitchCase extends @unified_switch_case, AstNode { + final class SwitchCase extends @unified_switch_case, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "SwitchCase" } @@ -1138,7 +1142,7 @@ module Unified { } /** A class representing `switch_expr` nodes. */ - class SwitchExpr extends @unified_switch_expr, AstNode { + final class SwitchExpr extends @unified_switch_expr, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "SwitchExpr" } @@ -1160,7 +1164,7 @@ module Unified { } /** A class representing `throw_expr` nodes. */ - class ThrowExpr extends @unified_throw_expr, AstNode { + final class ThrowExpr extends @unified_throw_expr, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "ThrowExpr" } @@ -1172,7 +1176,7 @@ module Unified { } /** A class representing `top_level` nodes. */ - class TopLevel extends @unified_top_level, AstNode { + final class TopLevel extends @unified_top_level, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "TopLevel" } @@ -1184,7 +1188,7 @@ module Unified { } /** A class representing `try_expr` nodes. */ - class TryExpr extends @unified_try_expr, AstNode { + final class TryExpr extends @unified_try_expr, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "TryExpr" } @@ -1206,7 +1210,7 @@ module Unified { } /** A class representing `tuple_expr` nodes. */ - class TupleExpr extends @unified_tuple_expr, AstNode { + final class TupleExpr extends @unified_tuple_expr, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "TupleExpr" } @@ -1218,7 +1222,7 @@ module Unified { } /** A class representing `tuple_pattern` nodes. */ - class TuplePattern extends @unified_tuple_pattern, AstNode { + final class TuplePattern extends @unified_tuple_pattern, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "TuplePattern" } @@ -1236,7 +1240,7 @@ module Unified { } /** A class representing `tuple_type_element` nodes. */ - class TupleTypeElement extends @unified_tuple_type_element, AstNode { + final class TupleTypeElement extends @unified_tuple_type_element, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "TupleTypeElement" } @@ -1253,7 +1257,7 @@ module Unified { } /** A class representing `tuple_type_expr` nodes. */ - class TupleTypeExpr extends @unified_tuple_type_expr, AstNode { + final class TupleTypeExpr extends @unified_tuple_type_expr, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "TupleTypeExpr" } @@ -1265,7 +1269,7 @@ module Unified { } /** A class representing `type_alias_declaration` nodes. */ - class TypeAliasDeclaration extends @unified_type_alias_declaration, AstNode { + final class TypeAliasDeclaration extends @unified_type_alias_declaration, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "TypeAliasDeclaration" } @@ -1299,7 +1303,7 @@ module Unified { } /** A class representing `type_cast_expr` nodes. */ - class TypeCastExpr extends @unified_type_cast_expr, AstNode { + final class TypeCastExpr extends @unified_type_cast_expr, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "TypeCastExpr" } @@ -1320,12 +1324,12 @@ module Unified { } } - class TypeConstraint extends @unified_type_constraint, AstNode { } + final class TypeConstraint extends @unified_type_constraint, AstNodeImpl { } - class TypeExpr extends @unified_type_expr, AstNode { } + final class TypeExpr extends @unified_type_expr, AstNodeImpl { } /** A class representing `type_parameter` nodes. */ - class TypeParameter extends @unified_type_parameter, AstNode { + final class TypeParameter extends @unified_type_parameter, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "TypeParameter" } @@ -1347,7 +1351,7 @@ module Unified { } /** A class representing `type_test_expr` nodes. */ - class TypeTestExpr extends @unified_type_test_expr, AstNode { + final class TypeTestExpr extends @unified_type_test_expr, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "TypeTestExpr" } @@ -1369,7 +1373,7 @@ module Unified { } /** A class representing `type_test_pattern` nodes. */ - class TypeTestPattern extends @unified_type_test_pattern, AstNode { + final class TypeTestPattern extends @unified_type_test_pattern, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "TypeTestPattern" } @@ -1387,7 +1391,7 @@ module Unified { } /** A class representing `unary_expr` nodes. */ - class UnaryExpr extends @unified_unary_expr, AstNode { + final class UnaryExpr extends @unified_unary_expr, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "UnaryExpr" } @@ -1404,13 +1408,13 @@ module Unified { } /** A class representing `unsupported_node` tokens. */ - class UnsupportedNode extends @unified_token_unsupported_node, Token { + final class UnsupportedNode extends @unified_token_unsupported_node, TokenImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "UnsupportedNode" } } /** A class representing `variable_declaration` nodes. */ - class VariableDeclaration extends @unified_variable_declaration, AstNode { + final class VariableDeclaration extends @unified_variable_declaration, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "VariableDeclaration" } @@ -1436,7 +1440,7 @@ module Unified { } /** A class representing `while_stmt` nodes. */ - class WhileStmt extends @unified_while_stmt, AstNode { + final class WhileStmt extends @unified_while_stmt, AstNodeImpl { /** Gets the name of the primary QL class for this element. */ final override string getAPrimaryQlClass() { result = "WhileStmt" } From f14a5678bea7af9c60057e3111a1aa645dd9c8f8 Mon Sep 17 00:00:00 2001 From: Tom Hvitved Date: Mon, 29 Jun 2026 13:32:14 +0200 Subject: [PATCH 5/5] Potential fix for pull request finding Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> --- shared/tree-sitter-extractor/src/generator/ql.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/shared/tree-sitter-extractor/src/generator/ql.rs b/shared/tree-sitter-extractor/src/generator/ql.rs index 2d091afedc93..6a78a4f95f09 100644 --- a/shared/tree-sitter-extractor/src/generator/ql.rs +++ b/shared/tree-sitter-extractor/src/generator/ql.rs @@ -60,7 +60,7 @@ impl fmt::Display for Class<'_> { write!(f, "private ")?; } if let Some(alias) = &self.alias { - write!(f, "class {} = {alias} ;", &self.name)?; + write!(f, "class {} = {alias};", &self.name)?; return Ok(()); } if self.is_abstract {