Skip to content

Commit d0af709

Browse files
committed
Split ProcessCmt to ProcessExtra and ResolvePath.
1 parent 1dffd99 commit d0af709

File tree

7 files changed

+612
-595
lines changed

7 files changed

+612
-595
lines changed

analysis/src/Cmt.ml

+9-67
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,13 @@
11
open SharedTypes
22

3+
let fullForCmt ~moduleName ~package ~uri cmt =
4+
match Shared.tryReadCmt cmt with
5+
| None -> None
6+
| Some infos ->
7+
let file = ProcessCmt.fileForCmtInfos ~moduleName ~uri infos in
8+
let extra = ProcessExtra.getExtra ~file ~infos in
9+
Some {file; extra; package}
10+
311
let fullFromUri ~uri =
412
let path = Uri2.toPath uri in
513
match Packages.getPackage ~uri with
@@ -11,7 +19,7 @@ let fullFromUri ~uri =
1119
match Hashtbl.find_opt package.pathsForModule moduleName with
1220
| Some paths ->
1321
let cmt = getCmtPath ~uri paths in
14-
ProcessCmt.fullForCmt ~moduleName ~package ~uri cmt
22+
fullForCmt ~moduleName ~package ~uri cmt
1523
| None ->
1624
prerr_endline ("can't find module " ^ moduleName);
1725
None)
@@ -26,69 +34,3 @@ let fullFromModule ~package ~moduleName =
2634
let fullFromPath ~path =
2735
let uri = Uri2.fromPath path in
2836
fullFromUri ~uri
29-
30-
let resolveModuleFromCompilerPath ~env ~package path =
31-
match ProcessCmt.fromCompilerPath ~env path with
32-
| `Global (moduleName, path) -> (
33-
match ProcessCmt.fileForModule ~package moduleName with
34-
| None -> None
35-
| Some file -> (
36-
let env = QueryEnv.fromFile file in
37-
match ProcessCmt.resolvePath ~env ~package ~path with
38-
| None -> None
39-
| Some (env, name) -> (
40-
match Exported.find env.exported Exported.Module name with
41-
| None -> None
42-
| Some stamp -> (
43-
match Stamps.findModule env.file.stamps stamp with
44-
| None -> None
45-
| Some declared -> Some (env, Some declared)))))
46-
| `Stamp stamp -> (
47-
match Stamps.findModule env.file.stamps stamp with
48-
| None -> None
49-
| Some declared -> Some (env, Some declared))
50-
| `GlobalMod moduleName -> (
51-
match ProcessCmt.fileForModule ~package moduleName with
52-
| None -> None
53-
| Some file ->
54-
let env = QueryEnv.fromFile file in
55-
Some (env, None))
56-
| `Not_found -> None
57-
| `Exported (env, name) -> (
58-
match Exported.find env.exported Exported.Module name with
59-
| None -> None
60-
| Some stamp -> (
61-
match Stamps.findModule env.file.stamps stamp with
62-
| None -> None
63-
| Some declared -> Some (env, Some declared)))
64-
65-
let resolveFromCompilerPath ~env ~package path =
66-
match ProcessCmt.fromCompilerPath ~env path with
67-
| `Global (moduleName, path) -> (
68-
let res =
69-
match ProcessCmt.fileForModule ~package moduleName with
70-
| None -> None
71-
| Some file ->
72-
let env = QueryEnv.fromFile file in
73-
ProcessCmt.resolvePath ~env ~package ~path
74-
in
75-
match res with
76-
| None -> `Not_found
77-
| Some (env, name) -> `Exported (env, name))
78-
| `Stamp stamp -> `Stamp stamp
79-
| `GlobalMod _ -> `Not_found
80-
| `Not_found -> `Not_found
81-
| `Exported (env, name) -> `Exported (env, name)
82-
83-
let rec getSourceUri ~(env : QueryEnv.t) ~package path =
84-
match path with
85-
| File (uri, _moduleName) -> uri
86-
| NotVisible -> env.file.uri
87-
| IncludedModule (path, inner) -> (
88-
Log.log "INCLUDED MODULE";
89-
match resolveModuleFromCompilerPath ~env ~package path with
90-
| None ->
91-
Log.log "NOT FOUND";
92-
getSourceUri ~env ~package inner
93-
| Some (env, _declared) -> env.file.uri)
94-
| ExportedModule (_, inner) -> getSourceUri ~env ~package inner

analysis/src/CompletionBackEnd.ml

+8-8
Original file line numberDiff line numberDiff line change
@@ -516,20 +516,20 @@ let resolveOpens ~env ~previous opens ~package =
516516
previous (* TODO: warn? *)
517517
| Some file -> (
518518
match
519-
ProcessCmt.resolvePath ~env:(QueryEnv.fromFile file) ~package
519+
ResolvePath.resolvePath ~env:(QueryEnv.fromFile file) ~package
520520
~path
521521
with
522522
| None ->
523523
Log.log ("Could not resolve in " ^ name);
524524
previous
525525
| Some (env, _placeholder) -> previous @ [env])))
526526
| env :: rest -> (
527-
match ProcessCmt.resolvePath ~env ~package ~path with
527+
match ResolvePath.resolvePath ~env ~package ~path with
528528
| None -> loop rest
529529
| Some (env, _placeholder) -> previous @ [env])
530530
in
531531
Log.log ("resolving open " ^ pathToString path);
532-
match ProcessCmt.resolvePath ~env ~package ~path with
532+
match ResolvePath.resolvePath ~env ~package ~path with
533533
| None ->
534534
Log.log "Not local";
535535
loop previous
@@ -652,7 +652,7 @@ let resolvePathFromStamps ~(env : QueryEnv.t) ~package ~scope ~moduleName ~path
652652
| None -> None
653653
| Some declared -> (
654654
(* Log.log("found it"); *)
655-
match ProcessCmt.findInModule ~env declared.item path with
655+
match ResolvePath.findInModule ~env declared.item path with
656656
| None -> None
657657
| Some res -> (
658658
match res with
@@ -661,15 +661,15 @@ let resolvePathFromStamps ~(env : QueryEnv.t) ~package ~scope ~moduleName ~path
661661
match ProcessCmt.fileForModule ~package moduleName with
662662
| None -> None
663663
| Some file ->
664-
ProcessCmt.resolvePath ~env:(QueryEnv.fromFile file) ~path:fullPath
664+
ResolvePath.resolvePath ~env:(QueryEnv.fromFile file) ~path:fullPath
665665
~package)))
666666

667667
let resolveModuleWithOpens ~opens ~package ~moduleName =
668668
let rec loop opens =
669669
match opens with
670670
| (env : QueryEnv.t) :: rest -> (
671671
Log.log ("Looking for env in " ^ Uri2.toString env.file.uri);
672-
match ProcessCmt.resolvePath ~env ~package ~path:[moduleName; ""] with
672+
match ResolvePath.resolvePath ~env ~package ~path:[moduleName; ""] with
673673
| Some (env, _) -> Some env
674674
| None -> loop rest)
675675
| [] -> None
@@ -692,11 +692,11 @@ let getEnvWithOpens ~scope ~(env : QueryEnv.t) ~package
692692
| Some x -> Some x
693693
| None -> (
694694
match resolveModuleWithOpens ~opens ~package ~moduleName with
695-
| Some env -> ProcessCmt.resolvePath ~env ~package ~path
695+
| Some env -> ResolvePath.resolvePath ~env ~package ~path
696696
| None -> (
697697
match resolveFileModule ~moduleName ~package with
698698
| None -> None
699-
| Some env -> ProcessCmt.resolvePath ~env ~package ~path))
699+
| Some env -> ResolvePath.resolvePath ~env ~package ~path))
700700

701701
let detail name (kind : Completion.kind) =
702702
match kind with

analysis/src/Hover.ml

+1-1
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ let newHover ~full:{file; package} locItem =
6060
| None -> None
6161
| Some file -> (
6262
let env = QueryEnv.fromFile file in
63-
match ProcessCmt.resolvePath ~env ~path ~package with
63+
match ResolvePath.resolvePath ~env ~path ~package with
6464
| None -> None
6565
| Some (env, name) -> (
6666
match References.exportedForTip ~env name tip with

0 commit comments

Comments
 (0)