@@ -11,6 +11,7 @@ pub fn create_ast_node_class<'a>(ast_node: &'a str, node_info_table: &'a str) ->
1111 ) ) ,
1212 name : "toString" ,
1313 overridden : false ,
14+ is_final : false ,
1415 return_type : Some ( ql:: Type :: String ) ,
1516 formal_parameters : vec ! [ ] ,
1617 body : ql:: Expression :: Equals (
@@ -26,6 +27,7 @@ pub fn create_ast_node_class<'a>(ast_node: &'a str, node_info_table: &'a str) ->
2627 name : "getLocation" ,
2728 qldoc : Some ( String :: from ( "Gets the location of this element." ) ) ,
2829 overridden : false ,
30+ is_final : true ,
2931 return_type : Some ( ql:: Type :: Normal ( "L::Location" ) ) ,
3032 formal_parameters : vec ! [ ] ,
3133 body : ql:: Expression :: Pred (
@@ -48,6 +50,7 @@ pub fn create_ast_node_class<'a>(ast_node: &'a str, node_info_table: &'a str) ->
4850 qldoc : Some ( String :: from ( "Gets the parent of this element." ) ) ,
4951 name : "getParent" ,
5052 overridden : false ,
53+ is_final : true ,
5154 return_type : Some ( ql:: Type :: Normal ( "AstNode" ) ) ,
5255 formal_parameters : vec ! [ ] ,
5356 body : ql:: Expression :: Pred (
@@ -66,6 +69,7 @@ pub fn create_ast_node_class<'a>(ast_node: &'a str, node_info_table: &'a str) ->
6669 ) ) ,
6770 name : "getParentIndex" ,
6871 overridden : false ,
72+ is_final : true ,
6973 return_type : Some ( ql:: Type :: Int ) ,
7074 formal_parameters : vec ! [ ] ,
7175 body : ql:: Expression :: Pred (
@@ -84,6 +88,7 @@ pub fn create_ast_node_class<'a>(ast_node: &'a str, node_info_table: &'a str) ->
8488 ) ) ,
8589 name : "getAPrimaryQlClass" ,
8690 overridden : false ,
91+ is_final : false ,
8792 return_type : Some ( ql:: Type :: String ) ,
8893 formal_parameters : vec ! [ ] ,
8994 body : ql:: Expression :: Equals (
@@ -99,6 +104,7 @@ pub fn create_ast_node_class<'a>(ast_node: &'a str, node_info_table: &'a str) ->
99104 ) ,
100105 name : "getPrimaryQlClasses" ,
101106 overridden : false ,
107+ is_final : false ,
102108 return_type : Some ( ql:: Type :: String ) ,
103109 formal_parameters : vec ! [ ] ,
104110 body : ql:: Expression :: Equals (
@@ -140,6 +146,7 @@ pub fn create_token_class<'a>(token_type: &'a str, tokeninfo: &'a str) -> ql::Cl
140146 qldoc : Some ( String :: from ( "Gets the value of this token." ) ) ,
141147 name : "getValue" ,
142148 overridden : false ,
149+ is_final : true ,
143150 return_type : Some ( ql:: Type :: String ) ,
144151 formal_parameters : vec ! [ ] ,
145152 body : create_get_field_expr_for_column_storage ( "result" , tokeninfo, 1 , tokeninfo_arity) ,
@@ -150,6 +157,7 @@ pub fn create_token_class<'a>(token_type: &'a str, tokeninfo: &'a str) -> ql::Cl
150157 ) ) ,
151158 name : "toString" ,
152159 overridden : true ,
160+ is_final : true ,
153161 return_type : Some ( ql:: Type :: String ) ,
154162 formal_parameters : vec ! [ ] ,
155163 body : ql:: Expression :: Equals (
@@ -173,15 +181,15 @@ pub fn create_token_class<'a>(token_type: &'a str, tokeninfo: &'a str) -> ql::Cl
173181 get_value,
174182 //get_location,
175183 to_string,
176- create_get_a_primary_ql_class( "Token" ) ,
184+ create_get_a_primary_ql_class( "Token" , false ) ,
177185 ] ,
178186 }
179187}
180188
181189// Creates the `ReservedWord` class.
182190pub fn create_reserved_word_class ( db_name : & str ) -> ql:: Class {
183191 let class_name = "ReservedWord" ;
184- let get_a_primary_ql_class = create_get_a_primary_ql_class ( class_name) ;
192+ let get_a_primary_ql_class = create_get_a_primary_ql_class ( class_name, true ) ;
185193 ql:: Class {
186194 qldoc : Some ( String :: from ( "A reserved word." ) ) ,
187195 name : class_name,
@@ -205,6 +213,7 @@ fn create_none_predicate<'a>(
205213 qldoc,
206214 name,
207215 overridden,
216+ is_final : false ,
208217 return_type,
209218 formal_parameters : Vec :: new ( ) ,
210219 body : ql:: Expression :: Pred ( "none" , vec ! [ ] ) ,
@@ -213,13 +222,14 @@ fn create_none_predicate<'a>(
213222
214223/// Creates an overridden `getAPrimaryQlClass` predicate that returns the given
215224/// name.
216- fn create_get_a_primary_ql_class ( class_name : & str ) -> ql:: Predicate {
225+ fn create_get_a_primary_ql_class ( class_name : & str , is_final : bool ) -> ql:: Predicate {
217226 ql:: Predicate {
218227 qldoc : Some ( String :: from (
219228 "Gets the name of the primary QL class for this element." ,
220229 ) ) ,
221230 name : "getAPrimaryQlClass" ,
222231 overridden : true ,
232+ is_final,
223233 return_type : Some ( ql:: Type :: String ) ,
224234 formal_parameters : vec ! [ ] ,
225235 body : ql:: Expression :: Equals (
@@ -428,6 +438,7 @@ fn create_field_getters<'a>(
428438 qldoc : Some ( qldoc) ,
429439 name : & field. getter_name ,
430440 overridden : false ,
441+ is_final : true ,
431442 return_type,
432443 formal_parameters,
433444 body,
@@ -452,7 +463,8 @@ pub fn convert_nodes(nodes: &node_types::NodeTypeMap) -> Vec<ql::TopLevel> {
452463 match & node. kind {
453464 node_types:: EntryKind :: Token { kind_id : _ } => {
454465 if type_name. named {
455- let get_a_primary_ql_class = create_get_a_primary_ql_class ( & node. ql_class_name ) ;
466+ let get_a_primary_ql_class =
467+ create_get_a_primary_ql_class ( & node. ql_class_name , true ) ;
456468 let mut supertypes: BTreeSet < ql:: Type > = BTreeSet :: new ( ) ;
457469 supertypes. insert ( ql:: Type :: At ( & node. dbscheme_name ) ) ;
458470 supertypes. insert ( ql:: Type :: Normal ( "Token" ) ) ;
@@ -511,7 +523,7 @@ pub fn convert_nodes(nodes: &node_types::NodeTypeMap) -> Vec<ql::TopLevel> {
511523 . into_iter ( )
512524 . collect ( ) ,
513525 characteristic_predicate : None ,
514- predicates : vec ! [ create_get_a_primary_ql_class( main_class_name) ] ,
526+ predicates : vec ! [ create_get_a_primary_ql_class( main_class_name, true ) ] ,
515527 } ;
516528
517529 let mut main_table_column_index: usize = 0 ;
@@ -539,6 +551,7 @@ pub fn convert_nodes(nodes: &node_types::NodeTypeMap) -> Vec<ql::TopLevel> {
539551 qldoc : Some ( String :: from ( "Gets a field or child node of this node." ) ) ,
540552 name : "getAFieldOrChild" ,
541553 overridden : true ,
554+ is_final : true ,
542555 return_type : Some ( ql:: Type :: Normal ( "AstNode" ) ) ,
543556 formal_parameters : vec ! [ ] ,
544557 body : ql:: Expression :: Or ( get_child_exprs) ,
0 commit comments