@@ -14,13 +14,12 @@ mod case_conv;
14
14
15
15
use std:: fmt;
16
16
17
- use base_db:: CrateId ;
18
17
use hir_def:: {
19
18
data:: adt:: VariantData ,
20
19
hir:: { Pat , PatId } ,
21
20
src:: HasSource ,
22
- AdtId , AttrDefId , ConstId , EnumId , FunctionId , ItemContainerId , Lookup , ModuleDefId , StaticId ,
23
- StructId ,
21
+ AdtId , AttrDefId , ConstId , DefWithBodyId , EnumId , FunctionId , ItemContainerId , Lookup ,
22
+ ModuleDefId , StaticId , StructId ,
24
23
} ;
25
24
use hir_expand:: {
26
25
name:: { AsName , Name } ,
@@ -44,13 +43,9 @@ mod allow {
44
43
pub ( super ) const NON_CAMEL_CASE_TYPES : & str = "non_camel_case_types" ;
45
44
}
46
45
47
- pub fn incorrect_case (
48
- db : & dyn HirDatabase ,
49
- krate : CrateId ,
50
- owner : ModuleDefId ,
51
- ) -> Vec < IncorrectCase > {
46
+ pub fn incorrect_case ( db : & dyn HirDatabase , owner : ModuleDefId ) -> Vec < IncorrectCase > {
52
47
let _p = profile:: span ( "validate_module_item" ) ;
53
- let mut validator = DeclValidator :: new ( db, krate ) ;
48
+ let mut validator = DeclValidator :: new ( db) ;
54
49
validator. validate_item ( owner) ;
55
50
validator. sink
56
51
}
@@ -120,7 +115,6 @@ pub struct IncorrectCase {
120
115
121
116
pub ( super ) struct DeclValidator < ' a > {
122
117
db : & ' a dyn HirDatabase ,
123
- krate : CrateId ,
124
118
pub ( super ) sink : Vec < IncorrectCase > ,
125
119
}
126
120
@@ -132,8 +126,8 @@ struct Replacement {
132
126
}
133
127
134
128
impl < ' a > DeclValidator < ' a > {
135
- pub ( super ) fn new ( db : & ' a dyn HirDatabase , krate : CrateId ) -> DeclValidator < ' a > {
136
- DeclValidator { db, krate , sink : Vec :: new ( ) }
129
+ pub ( super ) fn new ( db : & ' a dyn HirDatabase ) -> DeclValidator < ' a > {
130
+ DeclValidator { db, sink : Vec :: new ( ) }
137
131
}
138
132
139
133
pub ( super ) fn validate_item ( & mut self , item : ModuleDefId ) {
@@ -206,17 +200,7 @@ impl<'a> DeclValidator<'a> {
206
200
return ;
207
201
}
208
202
209
- let body = self . db . body ( func. into ( ) ) ;
210
-
211
- // Recursively validate inner scope items, such as static variables and constants.
212
- for ( _, block_def_map) in body. blocks ( self . db . upcast ( ) ) {
213
- for ( _, module) in block_def_map. modules ( ) {
214
- for def_id in module. scope . declarations ( ) {
215
- let mut validator = DeclValidator :: new ( self . db , self . krate ) ;
216
- validator. validate_item ( def_id) ;
217
- }
218
- }
219
- }
203
+ self . validate_body_inner_items ( func. into ( ) ) ;
220
204
221
205
// Check whether non-snake case identifiers are allowed for this function.
222
206
if self . allowed ( func. into ( ) , allow:: NON_SNAKE_CASE , false ) {
@@ -231,6 +215,8 @@ impl<'a> DeclValidator<'a> {
231
215
expected_case : CaseType :: LowerSnakeCase ,
232
216
} ) ;
233
217
218
+ let body = self . db . body ( func. into ( ) ) ;
219
+
234
220
// Check the patterns inside the function body.
235
221
// This includes function parameters.
236
222
let pats_replacements = body
@@ -707,4 +693,16 @@ impl<'a> DeclValidator<'a> {
707
693
708
694
self . sink . push ( diagnostic) ;
709
695
}
696
+
697
+ /// Recursively validates inner scope items, such as static variables and constants.
698
+ fn validate_body_inner_items ( & mut self , body_id : DefWithBodyId ) {
699
+ let body = self . db . body ( body_id) ;
700
+ for ( _, block_def_map) in body. blocks ( self . db . upcast ( ) ) {
701
+ for ( _, module) in block_def_map. modules ( ) {
702
+ for def_id in module. scope . declarations ( ) {
703
+ self . validate_item ( def_id) ;
704
+ }
705
+ }
706
+ }
707
+ }
710
708
}
0 commit comments