Skip to content

Commit 84ca70d

Browse files
authored
Merge pull request #141 from rescript-lang/refactor_commands
Refactor commands avoiding redundancies.
2 parents ac14bf8 + 9a6d319 commit 84ca70d

File tree

14 files changed

+1081
-1152
lines changed

14 files changed

+1081
-1152
lines changed

analysis/.depend

Lines changed: 12 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,21 @@
11
src/BuildSystem.cmx : src/ModuleResolution.cmx src/Log.cmx src/Infix.cmx \
22
src/Files.cmx
33
src/Cli.cmx : src/Commands.cmx
4-
src/Commands.cmx : src/Utils.cmx src/Uri2.cmx src/TopTypes.cmx src/State.cmx \
5-
src/SharedTypes.cmx src/Shared.cmx src/References.cmx src/Protocol.cmx \
4+
src/Commands.cmx : src/Utils.cmx src/Uri2.cmx src/SharedTypes.cmx \
5+
src/Shared.cmx src/References.cmx src/Protocol.cmx src/ProcessCmt.cmx \
66
src/NewCompletions.cmx src/Hover.cmx src/Files.cmx
77
src/Files.cmx :
88
src/FindFiles.cmx : src/Utils.cmx src/SharedTypes.cmx \
99
src/ModuleResolution.cmx src/Log.cmx src/vendor/Json.cmx src/Infix.cmx \
1010
src/Files.cmx src/BuildSystem.cmx
1111
src/Hover.cmx : src/Utils.cmx src/SharedTypes.cmx src/Shared.cmx \
12-
src/References.cmx src/Query.cmx
12+
src/References.cmx src/ProcessCmt.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
1616
src/NewCompletions.cmx : src/Utils.cmx src/Uri2.cmx src/TopTypes.cmx \
17-
src/State.cmx src/SharedTypes.cmx src/Shared.cmx src/Query.cmx \
18-
src/Protocol.cmx src/PartialParser.cmx src/Log.cmx src/Infix.cmx \
19-
src/Hover.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
2019
src/Packages.cmx : src/Uri2.cmx src/TopTypes.cmx src/SharedTypes.cmx \
2120
src/Log.cmx src/vendor/Json.cmx src/Infix.cmx src/FindFiles.cmx \
2221
src/Files.cmx src/BuildSystem.cmx
@@ -25,26 +24,18 @@ src/PrepareUtils.cmx :
2524
src/PrintType.cmx : src/vendor/res_outcome_printer/res_outcome_printer.cmx \
2625
src/vendor/res_outcome_printer/res_doc.cmx
2726
src/ProcessAttributes.cmx : src/SharedTypes.cmx src/PrepareUtils.cmx
28-
src/ProcessCmt.cmx : src/Utils.cmx src/SharedTypes.cmx \
29-
src/ProcessAttributes.cmx src/Infix.cmx
30-
src/ProcessExtra.cmx : src/Utils.cmx src/SharedTypes.cmx src/Shared.cmx \
31-
src/Query.cmx src/ProcessCmt.cmx src/ProcessAttributes.cmx src/Log.cmx
32-
src/Process_406.cmx : src/SharedTypes.cmx src/Shared.cmx \
33-
src/ProcessExtra.cmx src/ProcessCmt.cmx src/PrintType.cmx \
34-
src/Process_406.cmi
35-
src/Process_406.cmi : src/Uri2.cmx src/SharedTypes.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
3631
src/Protocol.cmx : src/vendor/Json.cmx
37-
src/Query.cmx : src/SharedTypes.cmx src/Log.cmx src/Infix.cmx
38-
src/References.cmx : src/Utils.cmx src/Uri2.cmx src/SharedTypes.cmx \
39-
src/Query.cmx src/Log.cmx src/Infix.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
4034
src/Shared.cmx : src/PrintType.cmx src/Files.cmx
4135
src/SharedTypes.cmx : src/Utils.cmx src/Uri2.cmx src/Shared.cmx \
4236
src/Infix.cmx
43-
src/State.cmx : src/Utils.cmx src/Uri2.cmx src/TopTypes.cmx \
44-
src/SharedTypes.cmx src/Process_406.cmx src/Packages.cmx src/Log.cmx \
45-
src/Infix.cmx src/FindFiles.cmx src/Files.cmx src/BuildSystem.cmx
4637
src/TopTypes.cmx : src/Uri2.cmx src/SharedTypes.cmx
47-
src/Uri2.cmx :
38+
src/Uri2.cmx : src/Files.cmx
4839
src/Utils.cmx : src/Protocol.cmx
4940
src/vendor/Json.cmx :
5041
src/vendor/res_outcome_printer/res_comment.cmx : \

analysis/src/Commands.ml

Lines changed: 25 additions & 68 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,15 @@
1-
let dumpLocations state ~package ~file ~extra =
1+
let dumpLocations ~package ~file ~extra =
22
let locations =
33
extra.SharedTypes.locations
44
|> List.filter (fun (l, _) -> not l.Location.loc_ghost)
55
in
66
locations
77
|> List.map (fun ((location : Location.t), loc) ->
8-
let hoverText =
9-
Hover.newHover ~file
10-
~getModule:(State.fileForModule state ~package)
11-
loc
12-
in
8+
let hoverText = Hover.newHover ~package ~file loc in
139
let hover =
1410
match hoverText with None -> "" | Some s -> String.escaped s
1511
in
16-
let uriLocOpt =
17-
References.definitionForLoc ~pathsForModule:package.pathsForModule
18-
~file ~getUri:(State.fileForUri state)
19-
~getModule:(State.fileForModule state ~package)
20-
loc
21-
in
12+
let uriLocOpt = References.definitionForLoc ~package ~file loc in
2213
let def =
2314
match uriLocOpt with
2415
| None -> Protocol.null
@@ -32,41 +23,35 @@ let dumpLocations state ~package ~file ~extra =
3223

3324
let dump files =
3425
Shared.cacheTypeToString := true;
35-
let state = TopTypes.empty () in
3626
files
3727
|> List.iter (fun path ->
38-
let filePath = Files.maybeConcat (Unix.getcwd ()) path in
39-
let uri = Uri2.fromPath filePath in
28+
let uri = Uri2.fromLocalPath path in
4029
let result =
41-
match State.getFullFromCmt ~state ~uri with
30+
match ProcessCmt.getFullFromCmt ~uri with
4231
| Error message ->
4332
prerr_endline message;
4433
"[]"
45-
| Ok (package, {file; extra}) ->
46-
dumpLocations state ~package ~file ~extra
34+
| Ok (package, {file; extra}) -> dumpLocations ~package ~file ~extra
4735
in
4836
print_endline result)
4937

5038
let complete ~path ~line ~col ~currentFile =
51-
let state = TopTypes.empty () in
52-
let filePath = Files.maybeConcat (Unix.getcwd ()) path in
53-
let uri = Uri2.fromPath filePath in
39+
let uri = Uri2.fromLocalPath path in
5440
let result =
55-
match State.getFullFromCmt ~state ~uri with
41+
match ProcessCmt.getFullFromCmt ~uri with
5642
| Error message ->
5743
prerr_endline message;
5844
"[]"
5945
| Ok (package, full) ->
6046
let maybeText = Files.readFile currentFile in
6147
NewCompletions.computeCompletions ~full ~maybeText ~package
62-
~pos:(line, col) ~state
48+
~pos:(line, col)
6349
|> List.map Protocol.stringifyCompletionItem
6450
|> Protocol.array
6551
in
6652
print_endline result
6753

68-
let hover state ~file ~line ~col ~extra ~package =
69-
let open TopTypes in
54+
let hover ~file ~line ~col ~extra ~package =
7055
let locations =
7156
extra.SharedTypes.locations
7257
|> List.filter (fun (l, _) -> not l.Location.loc_ghost)
@@ -80,12 +65,7 @@ let hover state ~file ~line ~col ~extra ~package =
8065
| SharedTypes.LModule _ | TopLevelModule _ -> true
8166
| TypeDefinition _ | Typed _ | Constant _ | Explanation _ -> false
8267
in
83-
let uriLocOpt =
84-
References.definitionForLoc ~pathsForModule:package.pathsForModule ~file
85-
~getUri:(State.fileForUri state)
86-
~getModule:(State.fileForModule state ~package)
87-
loc
88-
in
68+
let uriLocOpt = References.definitionForLoc ~package ~file loc in
8969
let skipZero =
9070
match uriLocOpt with
9171
| None -> false
@@ -98,27 +78,21 @@ let hover state ~file ~line ~col ~extra ~package =
9878
in
9979
if skipZero then Protocol.null
10080
else
101-
let hoverText =
102-
Hover.newHover ~file ~getModule:(State.fileForModule state ~package) loc
103-
in
81+
let hoverText = Hover.newHover ~file ~package loc in
10482
match hoverText with
10583
| None -> Protocol.null
10684
| Some s -> Protocol.stringifyHover {contents = s})
10785

10886
let hover ~path ~line ~col =
109-
let state = TopTypes.empty () in
110-
let filePath = Files.maybeConcat (Unix.getcwd ()) path in
111-
let uri = Uri2.fromPath filePath in
87+
let uri = Uri2.fromLocalPath path in
11288
let result =
113-
match State.getFullFromCmt ~state ~uri with
89+
match ProcessCmt.getFullFromCmt ~uri with
11490
| Error message -> Protocol.stringifyHover {contents = message}
115-
| Ok (package, {file; extra}) ->
116-
hover state ~file ~line ~col ~extra ~package
91+
| Ok (package, {file; extra}) -> hover ~file ~line ~col ~extra ~package
11792
in
11893
print_endline result
11994

120-
let definition state ~file ~line ~col ~extra ~package =
121-
let open TopTypes in
95+
let definition ~file ~line ~col ~extra ~package =
12296
let locations =
12397
extra.SharedTypes.locations
12498
|> List.filter (fun (l, _) -> not l.Location.loc_ghost)
@@ -133,12 +107,7 @@ let definition state ~file ~line ~col ~extra ~package =
133107
| SharedTypes.LModule _ | TopLevelModule _ -> true
134108
| TypeDefinition _ | Typed _ | Constant _ | Explanation _ -> false
135109
in
136-
let uriLocOpt =
137-
References.definitionForLoc ~pathsForModule:package.pathsForModule ~file
138-
~getUri:(State.fileForUri state)
139-
~getModule:(State.fileForModule state ~package)
140-
loc
141-
in
110+
let uriLocOpt = References.definitionForLoc ~package ~file loc in
142111
match uriLocOpt with
143112
| None -> Protocol.null
144113
| Some (uri2, loc) ->
@@ -155,19 +124,15 @@ let definition state ~file ~line ~col ~extra ~package =
155124
{uri = Uri2.toString uri2; range = Utils.cmtLocToRange loc})
156125

157126
let definition ~path ~line ~col =
158-
let state = TopTypes.empty () in
159-
let filePath = Files.maybeConcat (Unix.getcwd ()) path in
160-
let uri = Uri2.fromPath filePath in
127+
let uri = Uri2.fromLocalPath path in
161128
let result =
162-
match State.getFullFromCmt ~state ~uri with
129+
match ProcessCmt.getFullFromCmt ~uri with
163130
| Error _message -> Protocol.null
164-
| Ok (package, {file; extra}) ->
165-
definition state ~file ~line ~col ~extra ~package
131+
| Ok (package, {file; extra}) -> definition ~file ~line ~col ~extra ~package
166132
in
167133
print_endline result
168134

169-
let references state ~file ~line ~col ~extra ~package =
170-
let open TopTypes in
135+
let references ~file ~line ~col ~extra ~package =
171136
let locations =
172137
extra.SharedTypes.locations
173138
|> List.filter (fun (l, _) -> not l.Location.loc_ghost)
@@ -178,12 +143,7 @@ let references state ~file ~line ~col ~extra ~package =
178143
| None -> Protocol.null
179144
| Some (_, loc) ->
180145
let allReferences =
181-
References.allReferencesForLoc ~pathsForModule:package.pathsForModule
182-
~file ~extra ~allModules:package.localModules
183-
~getUri:(State.fileForUri state)
184-
~getModule:(State.fileForModule state ~package)
185-
~getExtra:(State.extraForModule state ~package)
186-
loc
146+
References.allReferencesForLoc ~package ~file ~extra loc
187147
in
188148
let allLocs =
189149
allReferences
@@ -202,14 +162,11 @@ let references state ~file ~line ~col ~extra ~package =
202162
"[\n" ^ (allLocs |> String.concat ",\n") ^ "\n]"
203163

204164
let references ~path ~line ~col =
205-
let state = TopTypes.empty () in
206-
let filePath = Files.maybeConcat (Unix.getcwd ()) path in
207-
let uri = Uri2.fromPath filePath in
165+
let uri = Uri2.fromLocalPath path in
208166
let result =
209-
match State.getFullFromCmt ~state ~uri with
167+
match ProcessCmt.getFullFromCmt ~uri with
210168
| Error _message -> Protocol.null
211-
| Ok (package, {file; extra}) ->
212-
references state ~file ~line ~col ~extra ~package
169+
| Ok (package, {file; extra}) -> references ~file ~line ~col ~extra ~package
213170
in
214171
print_endline result
215172

analysis/src/Hover.ml

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,15 @@
1-
let digConstructor ~env ~getModule path =
2-
match Query.resolveFromCompilerPath ~env ~getModule path with
1+
let digConstructor ~env ~package path =
2+
match ProcessCmt.resolveFromCompilerPath ~env ~package path with
33
| `Not_found -> None
44
| `Stamp stamp -> (
5-
match Hashtbl.find_opt env.file.stamps.types stamp with
5+
match Hashtbl.find_opt env.qFile.stamps.types stamp with
66
| None -> None
77
| Some t -> Some (env, t))
88
| `Exported (env, name) -> (
9-
match Hashtbl.find_opt env.exported.types name with
9+
match Hashtbl.find_opt env.qExported.types name with
1010
| None -> None
1111
| Some stamp -> (
12-
match Hashtbl.find_opt env.file.stamps.types stamp with
12+
match Hashtbl.find_opt env.qFile.stamps.types stamp with
1313
| None -> None
1414
| Some t -> Some (env, t)))
1515
| _ -> None
@@ -47,7 +47,7 @@ let showModule ~docstring ~(file : SharedTypes.file) ~name
4747
showModuleTopLevel ~docstring ~name topLevel
4848
| Some {item = Ident _} -> Some "Unable to resolve module reference"
4949

50-
let newHover ~(file : SharedTypes.file) ~getModule loc =
50+
let newHover ~(file : SharedTypes.file) ~package loc =
5151
match loc with
5252
| SharedTypes.Explanation text -> Some text
5353
| TypeDefinition (name, decl, _stamp) ->
@@ -58,7 +58,7 @@ let newHover ~(file : SharedTypes.file) ~getModule loc =
5858
match Hashtbl.find_opt file.stamps.modules stamp with
5959
| None -> None
6060
| Some md -> (
61-
match References.resolveModuleReference ~file ~getModule md with
61+
match References.resolveModuleReference ~file ~package md with
6262
| None -> None
6363
| Some (file, declared) ->
6464
let name, docstring =
@@ -68,20 +68,20 @@ let newHover ~(file : SharedTypes.file) ~getModule loc =
6868
in
6969
showModule ~docstring ~name ~file declared))
7070
| LModule (GlobalReference (moduleName, path, tip)) -> (
71-
match getModule moduleName with
71+
match ProcessCmt.fileForModule ~package moduleName with
7272
| None -> None
7373
| Some file -> (
74-
let env = Query.fileEnv file in
75-
match Query.resolvePath ~env ~path ~getModule with
74+
let env = ProcessCmt.fileEnv file in
75+
match ProcessCmt.resolvePath ~env ~path ~package with
7676
| None -> None
7777
| Some (env, name) -> (
78-
match Query.exportedForTip ~env name tip with
78+
match ProcessCmt.exportedForTip ~env name tip with
7979
| None -> None
8080
| Some stamp -> (
8181
match Hashtbl.find_opt file.stamps.modules stamp with
8282
| None -> None
8383
| Some md -> (
84-
match References.resolveModuleReference ~file ~getModule md with
84+
match References.resolveModuleReference ~file ~package md with
8585
| None -> None
8686
| Some (file, declared) ->
8787
let name, docstring =
@@ -92,7 +92,7 @@ let newHover ~(file : SharedTypes.file) ~getModule loc =
9292
showModule ~docstring ~name ~file declared)))))
9393
| LModule NotFound -> None
9494
| TopLevelModule name -> (
95-
match getModule name with
95+
match ProcessCmt.fileForModule ~package name with
9696
| None -> None
9797
| Some file ->
9898
showModule ~docstring:file.contents.docstring ~name:file.moduleName ~file
@@ -113,11 +113,11 @@ let newHover ~(file : SharedTypes.file) ~getModule loc =
113113
let fromType ~docstring typ =
114114
let typeString = codeBlock (typ |> Shared.typeToString) in
115115
let extraTypeInfo =
116-
let env = Query.fileEnv file in
116+
let env = ProcessCmt.fileEnv file in
117117
match typ |> Shared.digConstructor with
118118
| None -> None
119119
| Some path -> (
120-
match digConstructor ~env ~getModule path with
120+
match digConstructor ~env ~package path with
121121
| None -> None
122122
| Some (_env, {docstring; name = {txt}; item = {decl}}) ->
123123
let isUncurriedInternal =
@@ -135,7 +135,7 @@ let newHover ~(file : SharedTypes.file) ~getModule loc =
135135
(typeString, docstring)
136136
in
137137
let parts =
138-
match References.definedForLoc ~file ~getModule locKind with
138+
match References.definedForLoc ~file ~package locKind with
139139
| None ->
140140
let typeString, docstring = t |> fromType ~docstring:[] in
141141
typeString :: docstring

0 commit comments

Comments
 (0)