@@ -3,7 +3,6 @@ mod language;
3
3
mod ql;
4
4
mod ql_gen;
5
5
6
- use clap;
7
6
use language:: Language ;
8
7
use std:: collections:: BTreeMap as Map ;
9
8
use std:: collections:: BTreeSet as Set ;
@@ -33,22 +32,22 @@ fn make_field_type<'a>(
33
32
. map ( |t| nodes. get ( t) . unwrap ( ) . dbscheme_name . as_str ( ) )
34
33
. collect ( ) ;
35
34
(
36
- ql:: Type :: AtType ( & dbscheme_union) ,
35
+ ql:: Type :: At ( dbscheme_union) ,
37
36
Some ( dbscheme:: Entry :: Union ( dbscheme:: Union {
38
37
name : dbscheme_union,
39
38
members,
40
39
} ) ) ,
41
40
)
42
41
}
43
42
node_types:: FieldTypeInfo :: Single ( t) => {
44
- let dbscheme_name = & nodes. get ( & t) . unwrap ( ) . dbscheme_name ;
45
- ( ql:: Type :: AtType ( dbscheme_name) , None )
43
+ let dbscheme_name = & nodes. get ( t) . unwrap ( ) . dbscheme_name ;
44
+ ( ql:: Type :: At ( dbscheme_name) , None )
46
45
}
47
46
node_types:: FieldTypeInfo :: ReservedWordInt ( int_mapping) => {
48
47
// The field will be an `int` in the db, and we add a case split to
49
48
// create other db types for each integer value.
50
49
let mut branches: Vec < ( usize , & ' a str ) > = Vec :: new ( ) ;
51
- for ( _ , ( value, name) ) in int_mapping {
50
+ for ( value, name) in int_mapping. values ( ) {
52
51
branches. push ( ( * value, name) ) ;
53
52
}
54
53
let case = dbscheme:: Entry :: Case ( dbscheme:: Case {
@@ -74,12 +73,12 @@ fn add_field_for_table_storage<'a>(
74
73
let parent_name = & nodes. get ( & field. parent ) . unwrap ( ) . dbscheme_name ;
75
74
// This field can appear zero or multiple times, so put
76
75
// it in an auxiliary table.
77
- let ( field_ql_type, field_type_entry) = make_field_type ( parent_name, & field, nodes) ;
76
+ let ( field_ql_type, field_type_entry) = make_field_type ( parent_name, field, nodes) ;
78
77
let parent_column = dbscheme:: Column {
79
78
unique : !has_index,
80
79
db_type : dbscheme:: DbColumnType :: Int ,
81
- name : & parent_name,
82
- ql_type : ql:: Type :: AtType ( & parent_name) ,
80
+ name : parent_name,
81
+ ql_type : ql:: Type :: At ( parent_name) ,
83
82
ql_type_is_ref : true ,
84
83
} ;
85
84
let index_column = dbscheme:: Column {
@@ -97,7 +96,7 @@ fn add_field_for_table_storage<'a>(
97
96
ql_type_is_ref : true ,
98
97
} ;
99
98
let field_table = dbscheme:: Table {
100
- name : & table_name,
99
+ name : table_name,
101
100
columns : if has_index {
102
101
vec ! [ parent_column, index_column, field_column]
103
102
} else {
@@ -106,7 +105,7 @@ fn add_field_for_table_storage<'a>(
106
105
// In addition to the field being unique, the combination of
107
106
// parent+index is unique, so add a keyset for them.
108
107
keysets : if has_index {
109
- Some ( vec ! [ & parent_name, "index" ] )
108
+ Some ( vec ! [ parent_name, "index" ] )
110
109
} else {
111
110
None
112
111
} ,
@@ -122,7 +121,7 @@ fn add_field_for_column_storage<'a>(
122
121
) -> ( dbscheme:: Column < ' a > , Option < dbscheme:: Entry < ' a > > ) {
123
122
// This field must appear exactly once, so we add it as
124
123
// a column to the main table for the node type.
125
- let ( field_ql_type, field_type_entry) = make_field_type ( parent_name, & field, nodes) ;
124
+ let ( field_ql_type, field_type_entry) = make_field_type ( parent_name, field, nodes) ;
126
125
(
127
126
dbscheme:: Column {
128
127
unique : false ,
@@ -142,9 +141,9 @@ fn add_field_for_column_storage<'a>(
142
141
/// 2. A set of names of the members of the `<lang>_ast_node` union.
143
142
/// 3. A map where the keys are the dbscheme names for token kinds, and the
144
143
/// values are their integer representations.
145
- fn convert_nodes < ' a > (
146
- nodes : & ' a node_types:: NodeTypeMap ,
147
- ) -> ( Vec < dbscheme:: Entry < ' a > > , Set < & ' a str > , Map < & ' a str , usize > ) {
144
+ fn convert_nodes (
145
+ nodes : & node_types:: NodeTypeMap ,
146
+ ) -> ( Vec < dbscheme:: Entry > , Set < & str > , Map < & str , usize > ) {
148
147
let mut entries: Vec < dbscheme:: Entry > = Vec :: new ( ) ;
149
148
let mut ast_node_members: Set < & str > = Set :: new ( ) ;
150
149
let token_kinds: Map < & str , usize > = nodes
@@ -156,7 +155,7 @@ fn convert_nodes<'a>(
156
155
_ => None ,
157
156
} )
158
157
. collect ( ) ;
159
- for ( _ , node) in nodes {
158
+ for node in nodes. values ( ) {
160
159
match & node. kind {
161
160
node_types:: EntryKind :: Union { members : n_members } => {
162
161
// It's a tree-sitter supertype node, for which we create a union
@@ -173,12 +172,12 @@ fn convert_nodes<'a>(
173
172
node_types:: EntryKind :: Table { name, fields } => {
174
173
// It's a product type, defined by a table.
175
174
let mut main_table = dbscheme:: Table {
176
- name : & name ,
175
+ name,
177
176
columns : vec ! [ dbscheme:: Column {
178
177
db_type: dbscheme:: DbColumnType :: Int ,
179
178
name: "id" ,
180
179
unique: true ,
181
- ql_type: ql:: Type :: AtType ( & node. dbscheme_name) ,
180
+ ql_type: ql:: Type :: At ( & node. dbscheme_name) ,
182
181
ql_type_is_ref: false ,
183
182
} ] ,
184
183
keysets : None ,
@@ -238,7 +237,7 @@ fn convert_nodes<'a>(
238
237
unique : false ,
239
238
db_type : dbscheme:: DbColumnType :: Int ,
240
239
name : "loc" ,
241
- ql_type : ql:: Type :: AtType ( "location" ) ,
240
+ ql_type : ql:: Type :: At ( "location" ) ,
242
241
ql_type_is_ref : true ,
243
242
} ) ;
244
243
@@ -264,14 +263,14 @@ fn create_ast_node_parent_table<'a>(name: &'a str, ast_node_name: &'a str) -> db
264
263
db_type: dbscheme:: DbColumnType :: Int ,
265
264
name: "child" ,
266
265
unique: false ,
267
- ql_type: ql:: Type :: AtType ( ast_node_name) ,
266
+ ql_type: ql:: Type :: At ( ast_node_name) ,
268
267
ql_type_is_ref: true ,
269
268
} ,
270
269
dbscheme:: Column {
271
270
db_type: dbscheme:: DbColumnType :: Int ,
272
271
name: "parent" ,
273
272
unique: false ,
274
- ql_type: ql:: Type :: AtType ( name) ,
273
+ ql_type: ql:: Type :: At ( name) ,
275
274
ql_type_is_ref: true ,
276
275
} ,
277
276
dbscheme:: Column {
@@ -295,7 +294,7 @@ fn create_tokeninfo<'a>(name: &'a str, type_name: &'a str) -> dbscheme::Table<'a
295
294
db_type: dbscheme:: DbColumnType :: Int ,
296
295
name: "id" ,
297
296
unique: true ,
298
- ql_type: ql:: Type :: AtType ( type_name) ,
297
+ ql_type: ql:: Type :: At ( type_name) ,
299
298
ql_type_is_ref: false ,
300
299
} ,
301
300
dbscheme:: Column {
@@ -316,7 +315,7 @@ fn create_tokeninfo<'a>(name: &'a str, type_name: &'a str) -> dbscheme::Table<'a
316
315
unique: false ,
317
316
db_type: dbscheme:: DbColumnType :: Int ,
318
317
name: "loc" ,
319
- ql_type: ql:: Type :: AtType ( "location" ) ,
318
+ ql_type: ql:: Type :: At ( "location" ) ,
320
319
ql_type_is_ref: true ,
321
320
} ,
322
321
] ,
@@ -329,9 +328,9 @@ fn create_token_case<'a>(name: &'a str, token_kinds: Map<&'a str, usize>) -> dbs
329
328
. map ( |( & name, kind_id) | ( * kind_id, name) )
330
329
. collect ( ) ;
331
330
dbscheme:: Case {
332
- name : name ,
331
+ name,
333
332
column : "kind" ,
334
- branches : branches ,
333
+ branches,
335
334
}
336
335
}
337
336
@@ -351,7 +350,7 @@ fn create_files_table<'a>() -> dbscheme::Entry<'a> {
351
350
unique: true ,
352
351
db_type: dbscheme:: DbColumnType :: Int ,
353
352
name: "id" ,
354
- ql_type: ql:: Type :: AtType ( "file" ) ,
353
+ ql_type: ql:: Type :: At ( "file" ) ,
355
354
ql_type_is_ref: false ,
356
355
} ,
357
356
dbscheme:: Column {
@@ -373,7 +372,7 @@ fn create_folders_table<'a>() -> dbscheme::Entry<'a> {
373
372
unique: true ,
374
373
db_type: dbscheme:: DbColumnType :: Int ,
375
374
name: "id" ,
376
- ql_type: ql:: Type :: AtType ( "folder" ) ,
375
+ ql_type: ql:: Type :: At ( "folder" ) ,
377
376
ql_type_is_ref: false ,
378
377
} ,
379
378
dbscheme:: Column {
@@ -396,14 +395,14 @@ fn create_locations_default_table<'a>() -> dbscheme::Entry<'a> {
396
395
unique: true ,
397
396
db_type: dbscheme:: DbColumnType :: Int ,
398
397
name: "id" ,
399
- ql_type: ql:: Type :: AtType ( "location_default" ) ,
398
+ ql_type: ql:: Type :: At ( "location_default" ) ,
400
399
ql_type_is_ref: false ,
401
400
} ,
402
401
dbscheme:: Column {
403
402
unique: false ,
404
403
db_type: dbscheme:: DbColumnType :: Int ,
405
404
name: "file" ,
406
- ql_type: ql:: Type :: AtType ( "file" ) ,
405
+ ql_type: ql:: Type :: At ( "file" ) ,
407
406
ql_type_is_ref: true ,
408
407
} ,
409
408
dbscheme:: Column {
@@ -453,14 +452,14 @@ fn create_containerparent_table<'a>() -> dbscheme::Entry<'a> {
453
452
unique: false ,
454
453
db_type: dbscheme:: DbColumnType :: Int ,
455
454
name: "parent" ,
456
- ql_type: ql:: Type :: AtType ( "container" ) ,
455
+ ql_type: ql:: Type :: At ( "container" ) ,
457
456
ql_type_is_ref: true ,
458
457
} ,
459
458
dbscheme:: Column {
460
459
unique: true ,
461
460
db_type: dbscheme:: DbColumnType :: Int ,
462
461
name: "child" ,
463
- ql_type: ql:: Type :: AtType ( "container" ) ,
462
+ ql_type: ql:: Type :: At ( "container" ) ,
464
463
ql_type_is_ref: true ,
465
464
} ,
466
465
] ,
@@ -491,7 +490,7 @@ fn create_diagnostics<'a>() -> (dbscheme::Case<'a>, dbscheme::Table<'a>) {
491
490
unique: true ,
492
491
db_type: dbscheme:: DbColumnType :: Int ,
493
492
name: "id" ,
494
- ql_type: ql:: Type :: AtType ( "diagnostic" ) ,
493
+ ql_type: ql:: Type :: At ( "diagnostic" ) ,
495
494
ql_type_is_ref: false ,
496
495
} ,
497
496
dbscheme:: Column {
@@ -526,7 +525,7 @@ fn create_diagnostics<'a>() -> (dbscheme::Case<'a>, dbscheme::Table<'a>) {
526
525
unique: false ,
527
526
db_type: dbscheme:: DbColumnType :: Int ,
528
527
name: "location" ,
529
- ql_type: ql:: Type :: AtType ( "location_default" ) ,
528
+ ql_type: ql:: Type :: At ( "location_default" ) ,
530
529
ql_type_is_ref: true ,
531
530
} ,
532
531
] ,
@@ -625,7 +624,7 @@ fn main() -> std::io::Result<()> {
625
624
let token_name = format ! ( "{}_token" , & prefix) ;
626
625
let tokeninfo_name = format ! ( "{}_tokeninfo" , & prefix) ;
627
626
let reserved_word_name = format ! ( "{}_reserved_word" , & prefix) ;
628
- let nodes = node_types:: read_node_types_str ( & prefix, & language. node_types ) ?;
627
+ let nodes = node_types:: read_node_types_str ( & prefix, language. node_types ) ?;
629
628
let ( dbscheme_entries, mut ast_node_members, token_kinds) = convert_nodes ( & nodes) ;
630
629
ast_node_members. insert ( & token_name) ;
631
630
dbscheme:: write ( & mut dbscheme_writer, & dbscheme_entries) ?;
0 commit comments