File tree Expand file tree Collapse file tree 5 files changed +30
-16
lines changed Expand file tree Collapse file tree 5 files changed +30
-16
lines changed Original file line number Diff line number Diff line change @@ -773,7 +773,7 @@ let getItems ~full ~package ~rawOpens ~allFiles ~pos ~parts =
773
773
in
774
774
(* TODO complete the namespaced name too *)
775
775
let localModuleNames =
776
- allFiles
776
+ allFiles |> FileSet. elements
777
777
|> Utils. filterMap (fun name ->
778
778
if Utils. startsWith name suffix && not (String. contains name '-' )
779
779
then Some {(emptyDeclared name) with item = FileModule name}
@@ -1148,7 +1148,9 @@ let computeCompletions ~uri ~textOpt ~pos =
1148
1148
| Some full ->
1149
1149
let rawOpens = PartialParser. findOpens text offset in
1150
1150
let package = full.package in
1151
- let allFiles = package.projectFiles @ package.dependenciesFiles in
1151
+ let allFiles =
1152
+ FileSet. union package.projectFiles package.dependenciesFiles
1153
+ in
1152
1154
let findItems ~exact parts =
1153
1155
let items =
1154
1156
getItems ~full ~package ~raw Opens ~all Files ~pos ~parts
Original file line number Diff line number Diff line change @@ -84,8 +84,12 @@ let newBsPackage rootPath =
84
84
Log. log (" Opens from bsconfig: " ^ (opens |> String. concat " " ));
85
85
{
86
86
SharedTypes. rootPath;
87
- projectFiles = projectFilesAndPaths |> List. map fst;
88
- dependenciesFiles = dependenciesFilesAndPaths |> List. map fst;
87
+ projectFiles =
88
+ projectFilesAndPaths |> List. map fst
89
+ |> SharedTypes.FileSet. of_list;
90
+ dependenciesFiles =
91
+ dependenciesFilesAndPaths |> List. map fst
92
+ |> SharedTypes.FileSet. of_list;
89
93
pathsForModule;
90
94
opens;
91
95
namespace;
Original file line number Diff line number Diff line change @@ -734,12 +734,12 @@ struct
734
734
else [] ))
735
735
736
736
let addFileReference moduleName loc =
737
- Hashtbl. replace extra.fileReferences moduleName
738
- (loc
739
- ::
740
- ( if Hashtbl. mem extra.fileReferences moduleName then
741
- Hashtbl. find extra.fileReferences moduleName
742
- else [] ))
737
+ let newLocs =
738
+ match Hashtbl. find_opt extra.fileReferences moduleName with
739
+ | Some oldLocs -> LocationSet. add loc oldLocs
740
+ | None -> LocationSet. singleton loc
741
+ in
742
+ Hashtbl. replace extra.fileReferences moduleName newLocs
743
743
744
744
let env = QueryEnv. fromFile Collector. file
745
745
Original file line number Diff line number Diff line change @@ -426,7 +426,7 @@ let forLocalStamp ~full:{file; extra; package} stamp tip =
426
426
maybeLog (" Now checking path " ^ pathToString path);
427
427
let thisModuleName = file.moduleName in
428
428
let externals =
429
- package.projectFiles
429
+ package.projectFiles |> FileSet. elements
430
430
|> List. filter (fun name -> name <> file.moduleName)
431
431
|> Utils. filterMap (fun name ->
432
432
match ProcessCmt. fileForModule ~package name with
@@ -460,7 +460,7 @@ let allReferencesForLocItem ~full:({file; package} as full) locItem =
460
460
match locItem.locType with
461
461
| TopLevelModule moduleName ->
462
462
let otherModulesReferences =
463
- package.projectFiles
463
+ package.projectFiles |> FileSet. elements
464
464
|> Utils. filterMap (fun name ->
465
465
match ProcessCmt. fileForModule ~package name with
466
466
| None -> None
@@ -469,7 +469,7 @@ let allReferencesForLocItem ~full:({file; package} as full) locItem =
469
469
match Hashtbl. find_opt full.extra.fileReferences moduleName with
470
470
| None -> []
471
471
| Some locs ->
472
- locs
472
+ locs |> LocationSet. elements
473
473
|> List. map (fun loc ->
474
474
(Uri2. fromPath loc.Location. loc_start.pos_fname, [loc])))
475
475
|> List. flatten
Original file line number Diff line number Diff line change @@ -200,10 +200,16 @@ type openTracker = {
200
200
mutable used : (path * tip * Location .t ) list ;
201
201
}
202
202
203
+ module LocationSet = Set. Make (struct
204
+ include Location
205
+
206
+ let compare loc1 loc2 = compare loc2 loc1 (* polymorphic compare should be OK *)
207
+ end )
208
+
203
209
type extra = {
204
210
internalReferences : (int , Location .t list ) Hashtbl .t ;
205
211
externalReferences : (string , (path * tip * Location .t ) list ) Hashtbl .t ;
206
- fileReferences : (string , Location .t list ) Hashtbl .t ;
212
+ fileReferences : (string , LocationSet .t ) Hashtbl .t ;
207
213
mutable locItems : locItem list ;
208
214
(* This is the "open location", like the location...
209
215
or maybe the >> location of the open ident maybe *)
@@ -213,10 +219,12 @@ type extra = {
213
219
214
220
type file = string
215
221
222
+ module FileSet = Set. Make (String )
223
+
216
224
type package = {
217
225
rootPath : filePath ;
218
- projectFiles : file list ;
219
- dependenciesFiles : file list ;
226
+ projectFiles : FileSet .t ;
227
+ dependenciesFiles : FileSet .t ;
220
228
pathsForModule : (file , paths ) Hashtbl .t ;
221
229
namespace : string option ;
222
230
opens : string list ;
You can’t perform that action at this time.
0 commit comments