@@ -109,10 +109,46 @@ fn integrated_completion_benchmark() {
109109 vfs. file_id ( & path) . unwrap_or_else ( || panic ! ( "can't find virtual file for {path}" ) )
110110 } ;
111111
112+ // kick off parsing and index population
113+
114+ let completion_offset = {
115+ let _it = stdx:: timeit ( "change" ) ;
116+ let mut text = host. analysis ( ) . file_text ( file_id) . unwrap ( ) . to_string ( ) ;
117+ let completion_offset =
118+ patch ( & mut text, "db.struct_data(self.id)" , "sel;\n db.struct_data(self.id)" )
119+ + "sel" . len ( ) ;
120+ let mut change = Change :: new ( ) ;
121+ change. change_file ( file_id, Some ( Arc :: from ( text) ) ) ;
122+ host. apply_change ( change) ;
123+ completion_offset
124+ } ;
125+
112126 {
113- let _it = stdx :: timeit ( "initial" ) ;
127+ let _span = profile :: cpu_span ( ) ;
114128 let analysis = host. analysis ( ) ;
115- analysis. highlight_as_html ( file_id, false ) . unwrap ( ) ;
129+ let config = CompletionConfig {
130+ enable_postfix_completions : true ,
131+ enable_imports_on_the_fly : true ,
132+ enable_self_on_the_fly : true ,
133+ enable_private_editable : true ,
134+ full_function_signatures : false ,
135+ callable : Some ( CallableSnippets :: FillArguments ) ,
136+ snippet_cap : SnippetCap :: new ( true ) ,
137+ insert_use : InsertUseConfig {
138+ granularity : ImportGranularity :: Crate ,
139+ prefix_kind : hir:: PrefixKind :: ByCrate ,
140+ enforce_granularity : true ,
141+ group : true ,
142+ skip_glob_imports : true ,
143+ } ,
144+ snippets : Vec :: new ( ) ,
145+ prefer_no_std : false ,
146+ prefer_prelude : true ,
147+ limit : None ,
148+ } ;
149+ let position =
150+ FilePosition { file_id, offset : TextSize :: try_from ( completion_offset) . unwrap ( ) } ;
151+ analysis. completions ( & config, position, None ) . unwrap ( ) ;
116152 }
117153
118154 profile:: init_from ( "*>5" ) ;
@@ -122,8 +158,8 @@ fn integrated_completion_benchmark() {
122158 let _it = stdx:: timeit ( "change" ) ;
123159 let mut text = host. analysis ( ) . file_text ( file_id) . unwrap ( ) . to_string ( ) ;
124160 let completion_offset =
125- patch ( & mut text, "db .struct_data(self.id)" , "sel;\n db.struct_data(self.id)" )
126- + "sel" . len ( ) ;
161+ patch ( & mut text, "sel; \n db .struct_data(self.id)" , "; sel;\n db.struct_data(self.id)" )
162+ + "; sel" . len ( ) ;
127163 let mut change = Change :: new ( ) ;
128164 change. change_file ( file_id, Some ( Arc :: from ( text) ) ) ;
129165 host. apply_change ( change) ;
0 commit comments