@@ -109,10 +109,46 @@ fn integrated_completion_benchmark() {
109
109
vfs. file_id ( & path) . unwrap_or_else ( || panic ! ( "can't find virtual file for {path}" ) )
110
110
} ;
111
111
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
+
112
126
{
113
- let _it = stdx :: timeit ( "initial" ) ;
127
+ let _span = profile :: cpu_span ( ) ;
114
128
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 ( ) ;
116
152
}
117
153
118
154
profile:: init_from ( "*>5" ) ;
@@ -122,8 +158,8 @@ fn integrated_completion_benchmark() {
122
158
let _it = stdx:: timeit ( "change" ) ;
123
159
let mut text = host. analysis ( ) . file_text ( file_id) . unwrap ( ) . to_string ( ) ;
124
160
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 ( ) ;
127
163
let mut change = Change :: new ( ) ;
128
164
change. change_file ( file_id, Some ( Arc :: from ( text) ) ) ;
129
165
host. apply_change ( change) ;
0 commit comments