Skip to content

Commit 4de18d5

Browse files
committed
Refactor: all types in SharedTypes.
1 parent cb19b8e commit 4de18d5

File tree

7 files changed

+56
-62
lines changed

7 files changed

+56
-62
lines changed

analysis/.depend

Lines changed: 11 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -13,28 +13,26 @@ src/Hover.cmx : src/Utils.cmx src/SharedTypes.cmx src/Shared.cmx \
1313
src/Infix.cmx : src/Log.cmx src/Files.cmx
1414
src/Log.cmx :
1515
src/ModuleResolution.cmx : src/Infix.cmx src/Files.cmx
16-
src/NewCompletions.cmx : src/Utils.cmx src/Uri2.cmx src/TopTypes.cmx \
17-
src/SharedTypes.cmx src/Shared.cmx src/Protocol.cmx src/ProcessCmt.cmx \
18-
src/PartialParser.cmx src/Log.cmx src/Infix.cmx src/Hover.cmx
19-
src/Packages.cmx : src/Uri2.cmx src/TopTypes.cmx src/SharedTypes.cmx \
20-
src/Log.cmx src/vendor/Json.cmx src/Infix.cmx src/FindFiles.cmx \
21-
src/Files.cmx src/BuildSystem.cmx
16+
src/NewCompletions.cmx : src/Utils.cmx src/Uri2.cmx src/SharedTypes.cmx \
17+
src/Shared.cmx src/Protocol.cmx src/ProcessCmt.cmx src/PartialParser.cmx \
18+
src/Log.cmx src/Infix.cmx src/Hover.cmx
19+
src/Packages.cmx : src/Uri2.cmx src/SharedTypes.cmx src/Log.cmx \
20+
src/vendor/Json.cmx src/Infix.cmx src/FindFiles.cmx src/Files.cmx \
21+
src/BuildSystem.cmx
2222
src/PartialParser.cmx : src/SharedTypes.cmx
2323
src/PrepareUtils.cmx :
2424
src/PrintType.cmx : src/vendor/res_outcome_printer/res_outcome_printer.cmx \
2525
src/vendor/res_outcome_printer/res_doc.cmx
2626
src/ProcessAttributes.cmx : src/SharedTypes.cmx src/PrepareUtils.cmx
27-
src/ProcessCmt.cmx : src/Utils.cmx src/Uri2.cmx src/TopTypes.cmx \
28-
src/SharedTypes.cmx src/Shared.cmx src/ProcessAttributes.cmx \
29-
src/Packages.cmx src/Log.cmx src/Infix.cmx src/FindFiles.cmx \
30-
src/Files.cmx src/BuildSystem.cmx
27+
src/ProcessCmt.cmx : src/Utils.cmx src/Uri2.cmx src/SharedTypes.cmx \
28+
src/Shared.cmx src/ProcessAttributes.cmx src/Packages.cmx src/Log.cmx \
29+
src/Infix.cmx src/FindFiles.cmx src/Files.cmx src/BuildSystem.cmx
3130
src/Protocol.cmx : src/vendor/Json.cmx
32-
src/References.cmx : src/Utils.cmx src/Uri2.cmx src/TopTypes.cmx \
33-
src/SharedTypes.cmx src/ProcessCmt.cmx src/Log.cmx src/Infix.cmx
31+
src/References.cmx : src/Utils.cmx src/Uri2.cmx src/SharedTypes.cmx \
32+
src/ProcessCmt.cmx src/Log.cmx src/Infix.cmx
3433
src/Shared.cmx : src/PrintType.cmx src/Files.cmx
3534
src/SharedTypes.cmx : src/Utils.cmx src/Uri2.cmx src/Shared.cmx \
3635
src/Infix.cmx
37-
src/TopTypes.cmx : src/Uri2.cmx src/SharedTypes.cmx
3836
src/Uri2.cmx : src/Files.cmx
3937
src/Utils.cmx : src/Protocol.cmx
4038
src/vendor/Json.cmx :

analysis/src/NewCompletions.ml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -278,7 +278,7 @@ let attributeCompletions ~(env : ProcessCmt.queryEnv) ~suffix =
278278
(* TODO filter out things that are defined after the current position *)
279279
let resolveRawOpens ~env ~rawOpens ~package =
280280
(* TODO Stdlib instead of Pervasives *)
281-
let packageOpens = "Pervasives" :: package.TopTypes.opens in
281+
let packageOpens = "Pervasives" :: package.opens in
282282
Log.log ("Package opens " ^ String.concat " " packageOpens);
283283
let opens =
284284
resolveOpens ~env
@@ -296,7 +296,7 @@ let getItems ~full ~package ~rawOpens ~allModules ~pos ~parts =
296296
^ " "
297297
^ String.concat " ... " (rawOpens |> List.map pathToString));
298298
let env = ProcessCmt.fileEnv full.file in
299-
let packageOpens = "Pervasives" :: package.TopTypes.opens in
299+
let packageOpens = "Pervasives" :: package.opens in
300300
Log.log ("Package opens " ^ String.concat " " packageOpens);
301301
let resolvedOpens = resolveRawOpens ~env ~rawOpens ~package in
302302
Log.log
@@ -523,7 +523,7 @@ let processCompletable ~findItems ~package ~rawOpens
523523
in
524524
let removePackageOpens modulePath =
525525
match modulePath with
526-
| toplevel :: rest when package.TopTypes.opens |> List.mem toplevel ->
526+
| toplevel :: rest when package.opens |> List.mem toplevel ->
527527
rest
528528
| _ -> modulePath
529529
in
@@ -649,7 +649,7 @@ let computeCompletions ~full ~maybeText ~package ~pos =
649649
| Some completable ->
650650
let rawOpens = PartialParser.findOpens text offset in
651651
let allModules =
652-
package.TopTypes.localModules @ package.dependencyModules
652+
package.localModules @ package.dependencyModules
653653
in
654654
let findItems ~exact parts =
655655
let items =

analysis/src/Packages.ml

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
open Infix
2-
open TopTypes
32

43
(* Creates the `pathsForModule` hashtbl, which maps a `moduleName` to it's `paths` (the ml/re, mli/rei, cmt, and cmti files) *)
54
let makePathsForModule (localModules : (string * SharedTypes.paths) list)
@@ -29,7 +28,8 @@ let newBsPackage rootPath =
2928
match compiledBase with
3029
| None ->
3130
Error
32-
"Please run the build first so that the editor can analyze the project's artifacts."
31+
"Please run the build first so that the editor can analyze the \
32+
project's artifacts."
3333
| Some compiledBase ->
3434
Ok
3535
(let namespace = FindFiles.getNamespace config in
@@ -92,7 +92,7 @@ let newBsPackage rootPath =
9292
Hashtbl.create (List.length localModules)
9393
in
9494
{
95-
rootPath;
95+
SharedTypes.rootPath;
9696
localModules = localModules |> List.map fst;
9797
dependencyModules = dependencyModules |> List.map fst;
9898
pathsForModule;
@@ -112,6 +112,7 @@ let findRoot ~uri packagesByRoot =
112112
loop (Filename.dirname path)
113113

114114
let getPackage ~uri =
115+
let open SharedTypes in
115116
if Hashtbl.mem state.rootForUri uri then
116117
Ok (Hashtbl.find state.packagesByRoot (Hashtbl.find state.rootForUri uri))
117118
else

analysis/src/ProcessCmt.ml

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1132,13 +1132,13 @@ let extraForCmt ~file ({cmt_annots} : Cmt_format.cmt_infos) =
11321132
| Partial_interface _ | Interface _ -> forItems ~file [] [||]
11331133
| _ -> forItems ~file [] [||]
11341134

1135-
let fullForCmt ~moduleName ~uri cmt =
1135+
let fullForCmt ~moduleName ~package ~uri cmt =
11361136
match Shared.tryReadCmt cmt with
11371137
| Error e -> Error e
11381138
| Ok infos ->
11391139
let file = forCmt ~moduleName ~uri infos in
11401140
let extra = extraForCmt ~file infos in
1141-
Ok {SharedTypes.file; extra}
1141+
Ok {file; extra; package}
11421142

11431143
open SharedTypes
11441144

@@ -1166,7 +1166,7 @@ let getFullFromCmt ~uri =
11661166
match Hashtbl.find_opt package.pathsForModule moduleName with
11671167
| Some paths -> (
11681168
let cmt = SharedTypes.getCmt ~interface:(Utils.endsWith path "i") paths in
1169-
match fullForCmt ~moduleName ~uri cmt with
1169+
match fullForCmt ~moduleName ~package ~uri cmt with
11701170
| Error message ->
11711171
prerr_endline message;
11721172
None
@@ -1184,15 +1184,15 @@ let fileForUri uri =
11841184
| Some (_package, full) -> Some full
11851185

11861186
let extraForModule ~package modname =
1187-
if Hashtbl.mem package.TopTypes.pathsForModule modname then
1187+
if Hashtbl.mem package.pathsForModule modname then
11881188
let paths = Hashtbl.find package.pathsForModule modname in
11891189
match SharedTypes.getSrc paths with
11901190
| None -> None
11911191
| Some src -> getFullFromCmt ~uri:(Uri2.fromPath src)
11921192
else None
11931193

11941194
let docsForCmt ~moduleName cmt src state =
1195-
if Hashtbl.mem state.TopTypes.cmtCache cmt then
1195+
if Hashtbl.mem state.cmtCache cmt then
11961196
let mtime, docs = Hashtbl.find state.cmtCache cmt in
11971197
(* TODO: I should really throttle this mtime checking to like every 50 ms or so *)
11981198
match Files.getMtime cmt with
@@ -1213,15 +1213,15 @@ let docsForCmt ~moduleName cmt src state =
12131213
| Some changed -> newDocsForCmt ~moduleName state.cmtCache changed cmt src
12141214

12151215
let docsForModule modname ~package =
1216-
if Hashtbl.mem package.TopTypes.pathsForModule modname then (
1216+
if Hashtbl.mem package.pathsForModule modname then (
12171217
let paths = Hashtbl.find package.pathsForModule modname in
12181218
(* TODO: do better *)
12191219
let cmt = SharedTypes.getCmt paths in
12201220
let src = SharedTypes.getSrc paths in
12211221
Log.log ("FINDING docs for module " ^ SharedTypes.showPaths paths);
12221222
let open Infix in
12231223
Log.log ("FINDING " ^ cmt ^ " src " ^ (src |? ""));
1224-
match docsForCmt ~moduleName:modname cmt src TopTypes.state with
1224+
match docsForCmt ~moduleName:modname cmt src state with
12251225
| None -> None
12261226
| Some docs -> Some (docs, src))
12271227
else (

analysis/src/References.ml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -159,7 +159,7 @@ let declaredForExportedTip ~(stamps : stamps) ~(exported : exported) name tip =
159159
Hashtbl.find_opt stamps.modules stamp |?>> fun x -> {x with item = ()}
160160

161161
let alternateDeclared ~file ~package declared tip =
162-
match Hashtbl.find_opt package.TopTypes.pathsForModule file.moduleName with
162+
match Hashtbl.find_opt package.pathsForModule file.moduleName with
163163
| None -> None
164164
| Some paths -> (
165165
maybeLog ("paths for " ^ file.moduleName);

analysis/src/SharedTypes.ml

Lines changed: 29 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -204,7 +204,21 @@ type extra = {
204204
}
205205
(** These are the bits of info that we need to make in-app stuff awesome *)
206206

207-
type full = {extra : extra; file : file}
207+
type moduleName = string
208+
209+
(* Here are the things that will be different between jbuilder things *)
210+
type package = {
211+
rootPath : filePath;
212+
(* Depend on bsb having already run *)
213+
localModules : moduleName list;
214+
interModuleDependencies : (moduleName, moduleName list) Hashtbl.t;
215+
dependencyModules : moduleName list;
216+
pathsForModule : (moduleName, paths) Hashtbl.t;
217+
namespace : string option;
218+
opens : string list;
219+
}
220+
221+
type full = {extra : extra; file : file; package : package}
208222

209223
let initExtra () =
210224
{
@@ -214,6 +228,20 @@ let initExtra () =
214228
opens = Hashtbl.create 10;
215229
}
216230

231+
type state = {
232+
packagesByRoot : (string, package) Hashtbl.t;
233+
rootForUri : (Uri2.t, string) Hashtbl.t;
234+
cmtCache : (filePath, float * file) Hashtbl.t;
235+
}
236+
237+
(* There's only one state, so it can as well be global *)
238+
let state =
239+
{
240+
packagesByRoot = Hashtbl.create 1;
241+
rootForUri = Hashtbl.create 30;
242+
cmtCache = Hashtbl.create 30;
243+
}
244+
217245
let hashList h = Hashtbl.fold (fun a b c -> (a, b) :: c) h []
218246

219247
let locKindToString = function

analysis/src/TopTypes.ml

Lines changed: 0 additions & 33 deletions
This file was deleted.

0 commit comments

Comments
 (0)