@@ -83,13 +83,13 @@ pub enum Storage {
83
83
84
84
pub fn read_node_types ( prefix : & str , node_types_path : & Path ) -> std:: io:: Result < NodeTypeMap > {
85
85
let file = fs:: File :: open ( node_types_path) ?;
86
- let node_types = serde_json:: from_reader ( file) ?;
87
- Ok ( convert_nodes ( & prefix, & node_types) )
86
+ let node_types: Vec < NodeInfo > = serde_json:: from_reader ( file) ?;
87
+ Ok ( convert_nodes ( prefix, & node_types) )
88
88
}
89
89
90
90
pub fn read_node_types_str ( prefix : & str , node_types_json : & str ) -> std:: io:: Result < NodeTypeMap > {
91
- let node_types = serde_json:: from_str ( node_types_json) ?;
92
- Ok ( convert_nodes ( & prefix, & node_types) )
91
+ let node_types: Vec < NodeInfo > = serde_json:: from_str ( node_types_json) ?;
92
+ Ok ( convert_nodes ( prefix, & node_types) )
93
93
}
94
94
95
95
fn convert_type ( node_type : & NodeType ) -> TypeName {
@@ -99,31 +99,31 @@ fn convert_type(node_type: &NodeType) -> TypeName {
99
99
}
100
100
}
101
101
102
- fn convert_types ( node_types : & Vec < NodeType > ) -> Set < TypeName > {
103
- let iter = node_types. iter ( ) . map ( convert_type) . collect ( ) ;
104
- std:: collections:: BTreeSet :: from ( iter)
102
+ fn convert_types ( node_types : & [ NodeType ] ) -> Set < TypeName > {
103
+ node_types. iter ( ) . map ( convert_type) . collect ( )
105
104
}
106
105
107
- pub fn convert_nodes ( prefix : & str , nodes : & Vec < NodeInfo > ) -> NodeTypeMap {
106
+ pub fn convert_nodes ( prefix : & str , nodes : & [ NodeInfo ] ) -> NodeTypeMap {
108
107
let mut entries = NodeTypeMap :: new ( ) ;
109
108
let mut token_kinds = Set :: new ( ) ;
110
109
111
110
// First, find all the token kinds
112
111
for node in nodes {
113
- if node. subtypes . is_none ( ) {
114
- if node. fields . as_ref ( ) . map_or ( 0 , |x| x. len ( ) ) == 0 && node. children . is_none ( ) {
115
- let type_name = TypeName {
116
- kind : node. kind . clone ( ) ,
117
- named : node. named ,
118
- } ;
119
- token_kinds. insert ( type_name) ;
120
- }
112
+ if node. subtypes . is_none ( )
113
+ && node. fields . as_ref ( ) . map_or ( 0 , |x| x. len ( ) ) == 0
114
+ && node. children . is_none ( )
115
+ {
116
+ let type_name = TypeName {
117
+ kind : node. kind . clone ( ) ,
118
+ named : node. named ,
119
+ } ;
120
+ token_kinds. insert ( type_name) ;
121
121
}
122
122
}
123
123
124
124
for node in nodes {
125
125
let flattened_name = & node_type_name ( & node. kind , node. named ) ;
126
- let dbscheme_name = escape_name ( & flattened_name) ;
126
+ let dbscheme_name = escape_name ( flattened_name) ;
127
127
let ql_class_name = dbscheme_name_to_class_name ( & dbscheme_name) ;
128
128
let dbscheme_name = format ! ( "{}_{}" , prefix, & dbscheme_name) ;
129
129
if let Some ( subtypes) = & node. subtypes {
@@ -138,7 +138,7 @@ pub fn convert_nodes(prefix: &str, nodes: &Vec<NodeInfo>) -> NodeTypeMap {
138
138
dbscheme_name,
139
139
ql_class_name,
140
140
kind : EntryKind :: Union {
141
- members : convert_types ( & subtypes) ,
141
+ members : convert_types ( subtypes) ,
142
142
} ,
143
143
} ,
144
144
) ;
@@ -160,7 +160,7 @@ pub fn convert_nodes(prefix: &str, nodes: &Vec<NodeInfo>) -> NodeTypeMap {
160
160
if let Some ( node_fields) = & node. fields {
161
161
for ( field_name, field_info) in node_fields {
162
162
add_field (
163
- & prefix,
163
+ prefix,
164
164
& type_name,
165
165
Some ( field_name. to_string ( ) ) ,
166
166
field_info,
@@ -172,7 +172,7 @@ pub fn convert_nodes(prefix: &str, nodes: &Vec<NodeInfo>) -> NodeTypeMap {
172
172
if let Some ( children) = & node. children {
173
173
// Treat children as if they were a field called 'child'.
174
174
add_field (
175
- & prefix,
175
+ prefix,
176
176
& type_name,
177
177
None ,
178
178
children,
@@ -253,13 +253,11 @@ fn add_field(
253
253
// All possible types for this field are reserved words. The db
254
254
// representation will be an `int` with a `case @foo.field = ...` to
255
255
// enumerate the possible values.
256
- let mut counter = 0 ;
257
256
let mut field_token_ints: BTreeMap < String , ( usize , String ) > = BTreeMap :: new ( ) ;
258
- for t in converted_types {
257
+ for ( counter , t ) in converted_types. into_iter ( ) . enumerate ( ) {
259
258
let dbscheme_variant_name =
260
259
escape_name ( & format ! ( "{}_{}_{}" , & prefix, parent_flattened_name, t. kind) ) ;
261
260
field_token_ints. insert ( t. kind . to_owned ( ) , ( counter, dbscheme_variant_name) ) ;
262
- counter += 1 ;
263
261
}
264
262
FieldTypeInfo :: ReservedWordInt ( field_token_ints)
265
263
} else if field_info. types . len ( ) == 1 {
@@ -330,7 +328,7 @@ fn node_type_name(kind: &str, named: bool) -> String {
330
328
}
331
329
}
332
330
333
- const RESERVED_KEYWORDS : [ & ' static str ; 14 ] = [
331
+ const RESERVED_KEYWORDS : [ & str ; 14 ] = [
334
332
"boolean" , "case" , "date" , "float" , "int" , "key" , "of" , "order" , "ref" , "string" , "subtype" ,
335
333
"type" , "unique" , "varchar" ,
336
334
] ;
0 commit comments