@@ -14,13 +14,12 @@ mod case_conv;
1414
1515use std:: fmt;
1616
17- use base_db:: CrateId ;
1817use hir_def:: {
1918 data:: adt:: VariantData ,
2019 hir:: { Pat , PatId } ,
2120 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 ,
2423} ;
2524use hir_expand:: {
2625 name:: { AsName , Name } ,
@@ -44,13 +43,9 @@ mod allow {
4443 pub ( super ) const NON_CAMEL_CASE_TYPES : & str = "non_camel_case_types" ;
4544}
4645
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 > {
5247 let _p = profile:: span ( "validate_module_item" ) ;
53- let mut validator = DeclValidator :: new ( db, krate ) ;
48+ let mut validator = DeclValidator :: new ( db) ;
5449 validator. validate_item ( owner) ;
5550 validator. sink
5651}
@@ -120,7 +115,6 @@ pub struct IncorrectCase {
120115
121116pub ( super ) struct DeclValidator < ' a > {
122117 db : & ' a dyn HirDatabase ,
123- krate : CrateId ,
124118 pub ( super ) sink : Vec < IncorrectCase > ,
125119}
126120
@@ -132,8 +126,8 @@ struct Replacement {
132126}
133127
134128impl < ' 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 ( ) }
137131 }
138132
139133 pub ( super ) fn validate_item ( & mut self , item : ModuleDefId ) {
@@ -206,17 +200,7 @@ impl<'a> DeclValidator<'a> {
206200 return ;
207201 }
208202
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 ( ) ) ;
220204
221205 // Check whether non-snake case identifiers are allowed for this function.
222206 if self . allowed ( func. into ( ) , allow:: NON_SNAKE_CASE , false ) {
@@ -231,6 +215,8 @@ impl<'a> DeclValidator<'a> {
231215 expected_case : CaseType :: LowerSnakeCase ,
232216 } ) ;
233217
218+ let body = self . db . body ( func. into ( ) ) ;
219+
234220 // Check the patterns inside the function body.
235221 // This includes function parameters.
236222 let pats_replacements = body
@@ -707,4 +693,16 @@ impl<'a> DeclValidator<'a> {
707693
708694 self . sink . push ( diagnostic) ;
709695 }
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+ }
710708}
0 commit comments