@@ -50,8 +50,7 @@ use crate::completion::resolver::FunctionLoaderFn;
5050use crate :: completion:: source:: comment_position:: position_to_byte_offset;
5151use crate :: completion:: source:: throws_analysis:: { self , ThrowsContext } ;
5252use crate :: completion:: use_edit:: { analyze_use_block, build_use_edit} ;
53- use crate :: types:: ClassInfo ;
54- use crate :: types:: FunctionInfo ;
53+ use crate :: types:: { ClassInfo , FunctionLoader } ;
5554
5655/// Detect whether the cursor is immediately after a `/**` trigger and,
5756/// if so, generate a full docblock completion item.
@@ -64,7 +63,7 @@ pub fn try_generate_docblock(
6463 use_map : & HashMap < String , String > ,
6564 file_namespace : & Option < String > ,
6665 class_loader : & dyn Fn ( & str ) -> Option < Arc < ClassInfo > > ,
67- function_loader : Option < & dyn Fn ( & str ) -> Option < FunctionInfo > > ,
66+ function_loader : FunctionLoader < ' _ > ,
6867) -> Option < CompletionResponse > {
6968 let ( trigger_range, indent) = detect_docblock_trigger ( content, position) ?;
7069
@@ -151,7 +150,7 @@ pub fn try_generate_docblock_on_enter(
151150 use_map : & HashMap < String , String > ,
152151 file_namespace : & Option < String > ,
153152 class_loader : & dyn Fn ( & str ) -> Option < Arc < ClassInfo > > ,
154- function_loader : Option < & dyn Fn ( & str ) -> Option < FunctionInfo > > ,
153+ function_loader : FunctionLoader < ' _ > ,
155154) -> Option < Vec < TextEdit > > {
156155 // Detect the empty docblock range and indentation.
157156 let ( block_range, _block_indent, after_block) = detect_empty_docblock ( content, position) ?;
@@ -1139,7 +1138,7 @@ fn build_docblock_plain(
11391138 _use_map : & HashMap < String , String > ,
11401139 _file_namespace : & Option < String > ,
11411140 class_loader : & dyn Fn ( & str ) -> Option < Arc < ClassInfo > > ,
1142- function_loader : Option < & dyn Fn ( & str ) -> Option < FunctionInfo > > ,
1141+ function_loader : FunctionLoader < ' _ > ,
11431142) -> String {
11441143 match context {
11451144 DocblockContext :: FunctionOrMethod => build_function_plain (
@@ -1178,7 +1177,7 @@ fn build_docblock_snippet(
11781177 _use_map : & HashMap < String , String > ,
11791178 _file_namespace : & Option < String > ,
11801179 class_loader : & dyn Fn ( & str ) -> Option < Arc < ClassInfo > > ,
1181- function_loader : Option < & dyn Fn ( & str ) -> Option < FunctionInfo > > ,
1180+ function_loader : FunctionLoader < ' _ > ,
11821181) -> String {
11831182 match context {
11841183 DocblockContext :: FunctionOrMethod => build_function_snippet (
@@ -1215,7 +1214,7 @@ fn build_function_snippet(
12151214 _use_map : & HashMap < String , String > ,
12161215 _file_namespace : & Option < String > ,
12171216 class_loader : & dyn Fn ( & str ) -> Option < Arc < ClassInfo > > ,
1218- function_loader : Option < & dyn Fn ( & str ) -> Option < FunctionInfo > > ,
1217+ function_loader : FunctionLoader < ' _ > ,
12191218) -> String {
12201219 let throws_ctx = ThrowsContext {
12211220 class_loader,
@@ -1317,7 +1316,7 @@ fn build_function_plain(
13171316 _use_map : & HashMap < String , String > ,
13181317 _file_namespace : & Option < String > ,
13191318 class_loader : & dyn Fn ( & str ) -> Option < Arc < ClassInfo > > ,
1320- function_loader : Option < & dyn Fn ( & str ) -> Option < FunctionInfo > > ,
1319+ function_loader : FunctionLoader < ' _ > ,
13211320) -> String {
13221321 let throws_ctx = ThrowsContext {
13231322 class_loader,
@@ -1726,7 +1725,7 @@ fn build_throws_import_edits(
17261725 file_namespace : & Option < String > ,
17271726 context : & DocblockContext ,
17281727 class_loader : & dyn Fn ( & str ) -> Option < Arc < ClassInfo > > ,
1729- function_loader : Option < & dyn Fn ( & str ) -> Option < FunctionInfo > > ,
1728+ function_loader : FunctionLoader < ' _ > ,
17301729) -> Vec < TextEdit > {
17311730 if !matches ! ( context, DocblockContext :: FunctionOrMethod ) {
17321731 return Vec :: new ( ) ;
0 commit comments