Skip to content

Commit 5684294

Browse files
committed
cleanup
1 parent 46e0dcb commit 5684294

File tree

3 files changed

+21
-79
lines changed

3 files changed

+21
-79
lines changed

analysis/src/CompletionBackEnd.ml

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -637,7 +637,7 @@ let completionsGetCompletionType ~full = function
637637
| {Completion.kind = ObjLabel typ; env} :: _
638638
| {Completion.kind = Field ({typ}, _); env} :: _ ->
639639
typ
640-
|> TypeUtils.extractType2 ~env ~package:full.package
640+
|> TypeUtils.extractType ~env ~package:full.package
641641
|> Option.map (fun (typ, _) -> (typ, env))
642642
| {Completion.kind = Type typ; env} :: _ -> (
643643
match TypeUtils.extractTypeFromResolvedType typ ~env ~full with
@@ -1314,7 +1314,7 @@ let rec completeTypedValue ?(typeArgContext : typeArgContext option) ~rawOpens
13141314
let innerType =
13151315
match t with
13161316
| ExtractedType t -> Some (t, None)
1317-
| TypeExpr t -> t |> TypeUtils.extractType2 ~env ~package:full.package
1317+
| TypeExpr t -> t |> TypeUtils.extractType ~env ~package:full.package
13181318
in
13191319
let expandedCompletions =
13201320
match innerType with
@@ -1357,10 +1357,10 @@ let rec completeTypedValue ?(typeArgContext : typeArgContext option) ~rawOpens
13571357
| Tresult {env; okType; errorType} ->
13581358
if Debug.verbose () then print_endline "[complete_typed_value]--> Tresult";
13591359
let okInnerType =
1360-
okType |> TypeUtils.extractType2 ~env ~package:full.package
1360+
okType |> TypeUtils.extractType ~env ~package:full.package
13611361
in
13621362
let errorInnerType =
1363-
errorType |> TypeUtils.extractType2 ~env ~package:full.package
1363+
errorType |> TypeUtils.extractType ~env ~package:full.package
13641364
in
13651365
let expandedOkCompletions =
13661366
match okInnerType with
@@ -1566,7 +1566,7 @@ let rec completeTypedValue ?(typeArgContext : typeArgContext option) ~rawOpens
15661566
"(" ^ if shouldPrintAsUncurried then ". " else "" ^ argsText ^ ")"
15671567
in
15681568
let isAsync =
1569-
match TypeUtils.extractType2 ~env ~package:full.package returnType with
1569+
match TypeUtils.extractType ~env ~package:full.package returnType with
15701570
| Some (Tpromise _, _) -> true
15711571
| _ -> false
15721572
in
@@ -1839,7 +1839,7 @@ let rec processCompletable ~debug ~full ~scope ~env ~pos ~forHover completable =
18391839
| Some (typ, env) -> (
18401840
match
18411841
typ
1842-
|> TypeUtils.extractType2 ~env ~package:full.package
1842+
|> TypeUtils.extractType ~env ~package:full.package
18431843
|> Utils.Option.flatMap (fun (typ, typeArgContext) ->
18441844
typ |> TypeUtils.resolveNested ?typeArgContext ~env ~full ~nested)
18451845
with
@@ -1960,7 +1960,7 @@ let rec processCompletable ~debug ~full ~scope ~env ~pos ~forHover completable =
19601960
|> List.map (fun (c : Completion.t) ->
19611961
match c.kind with
19621962
| Value typExpr -> (
1963-
match typExpr |> TypeUtils.extractType2 ~env:c.env ~package with
1963+
match typExpr |> TypeUtils.extractType ~env:c.env ~package with
19641964
| Some (Tvariant v, _) ->
19651965
withExhaustiveItem c
19661966
~cases:

analysis/src/TypeUtils.ml

Lines changed: 13 additions & 71 deletions
Original file line numberDiff line numberDiff line change
@@ -266,70 +266,7 @@ let rec extractFunctionType2 ?typeArgContext ~env ~package typ =
266266
in
267267
loop ?typeArgContext ~env [] typ
268268

269-
(** Pulls out a type we can complete from a type expr. *)
270-
let rec extractType ~env ~package (t : Types.type_expr) =
271-
match t.desc with
272-
| Tlink t1 | Tsubst t1 | Tpoly (t1, []) -> extractType ~env ~package t1
273-
| Tconstr (Path.Pident {name = "option"}, [payloadTypeExpr], _) ->
274-
Some (Toption (env, TypeExpr payloadTypeExpr))
275-
| Tconstr (Path.Pident {name = "promise"}, [payloadTypeExpr], _) ->
276-
Some (Tpromise (env, payloadTypeExpr))
277-
| Tconstr (Path.Pident {name = "array"}, [payloadTypeExpr], _) ->
278-
Some (Tarray (env, TypeExpr payloadTypeExpr))
279-
| Tconstr (Path.Pident {name = "result"}, [okType; errorType], _) ->
280-
Some (Tresult {env; okType; errorType})
281-
| Tconstr (Path.Pident {name = "bool"}, [], _) -> Some (Tbool env)
282-
| Tconstr (Path.Pident {name = "string"}, [], _) -> Some (Tstring env)
283-
| Tconstr (Path.Pident {name = "exn"}, [], _) -> Some (Texn env)
284-
| Tconstr (Pident {name = "function$"}, [t; _], _) -> (
285-
(* Uncurried functions. *)
286-
match extractFunctionType t ~env ~package with
287-
| args, tRet when args <> [] ->
288-
Some (Tfunction {env; args; typ = t; uncurried = true; returnType = tRet})
289-
| _args, _tRet -> None)
290-
| Tconstr (path, typeArgs, _) -> (
291-
match References.digConstructor ~env ~package path with
292-
| Some (env, {item = {decl = {type_manifest = Some t1; type_params}}}) ->
293-
t1
294-
|> instantiateType ~typeParams:type_params ~typeArgs
295-
|> extractType ~env ~package
296-
| Some (env, {name; item = {decl; kind = Type.Variant constructors}}) ->
297-
Some
298-
(Tvariant
299-
{env; constructors; variantName = name.txt; variantDecl = decl})
300-
| Some (env, {item = {kind = Record fields}}) ->
301-
Some (Trecord {env; fields; definition = `TypeExpr t})
302-
| Some (env, {item = {name = "t"}}) -> Some (TtypeT {env; path})
303-
| None -> None
304-
| _ -> None)
305-
| Ttuple expressions -> Some (Tuple (env, expressions, t))
306-
| Tvariant {row_fields} ->
307-
let constructors =
308-
row_fields
309-
|> List.map (fun (label, field) ->
310-
{
311-
name = label;
312-
displayName = Utils.printMaybeExoticIdent ~allowUident:true label;
313-
args =
314-
(* Multiple arguments are represented as a Ttuple, while a single argument is just the type expression itself. *)
315-
(match field with
316-
| Types.Rpresent (Some typeExpr) -> (
317-
match typeExpr.desc with
318-
| Ttuple args -> args
319-
| _ -> [typeExpr])
320-
| _ -> []);
321-
})
322-
in
323-
Some (Tpolyvariant {env; constructors; typeExpr = t})
324-
| Tarrow _ -> (
325-
match extractFunctionType t ~env ~package with
326-
| args, tRet when args <> [] ->
327-
Some
328-
(Tfunction {env; args; typ = t; uncurried = false; returnType = tRet})
329-
| _args, _tRet -> None)
330-
| _ -> None
331-
332-
let rec extractType2 ?(printOpeningDebug = true)
269+
let rec extractType ?(printOpeningDebug = true)
333270
?(typeArgContext : typeArgContext option)
334271
?(typeArgContextFromTypeManifest : typeArgContext option) ~env ~package
335272
(t : Types.type_expr) =
@@ -346,7 +283,6 @@ let rec extractType2 ?(printOpeningDebug = true)
346283
if Debug.verbose () && printOpeningDebug then
347284
Printf.printf "[extract_type]--> %s"
348285
(debugLogTypeArgContext typeArgContext));
349-
let extractType = extractType2 in
350286
let instantiateType = instantiateType2 in
351287
match t.desc with
352288
| Tlink t1 | Tsubst t1 | Tpoly (t1, []) ->
@@ -604,14 +540,14 @@ let extractTypeFromResolvedType (typ : Type.t) ~env ~full =
604540
| Abstract _ | Open -> (
605541
match typ.decl.type_manifest with
606542
| None -> None
607-
| Some t -> t |> extractType ~env ~package:full.package)
543+
| Some t -> t |> extractType ~env ~package:full.package |> getExtractedType)
608544

609545
(** The context we just came from as we resolve the nested structure. *)
610546
type ctx = Rfield of string (** A record field of name *)
611547

612548
let rec resolveNested ?typeArgContext ~env ~full ~nested ?ctx
613549
(typ : completionType) =
614-
let extractType = extractType2 ?typeArgContext in
550+
let extractType = extractType ?typeArgContext in
615551
if Debug.verbose () then
616552
Printf.printf
617553
"[nested]--> running nested in env: %s. Has type arg ctx: %b\n"
@@ -826,7 +762,8 @@ let rec resolveNestedPatternPath (typ : innerType) ~env ~full ~nested =
826762
if Debug.verbose () then print_endline "[nested_pattern_path]";
827763
let t =
828764
match typ with
829-
| TypeExpr t -> t |> extractType ~env ~package:full.package
765+
| TypeExpr t ->
766+
t |> extractType ~env ~package:full.package |> getExtractedType
830767
| ExtractedType t -> Some t
831768
in
832769
match nested with
@@ -884,6 +821,7 @@ let rec resolveNestedPatternPath (typ : innerType) ~env ~full ~nested =
884821
| Some typ ->
885822
typ
886823
|> extractType ~env ~package:full.package
824+
|> getExtractedType
887825
|> Utils.Option.flatMap (fun typ ->
888826
ExtractedType typ
889827
|> resolveNestedPatternPath ~env ~full ~nested))
@@ -893,6 +831,7 @@ let rec resolveNestedPatternPath (typ : innerType) ~env ~full ~nested =
893831
| Some typ ->
894832
typ
895833
|> extractType ~env ~package:full.package
834+
|> getExtractedType
896835
|> Utils.Option.flatMap (fun typ ->
897836
ExtractedType typ
898837
|> resolveNestedPatternPath ~env ~full ~nested))
@@ -1026,7 +965,8 @@ module Codegen = struct
1026965
let extractedType =
1027966
match innerType with
1028967
| ExtractedType t -> Some t
1029-
| TypeExpr t -> extractType t ~env ~package:full.package
968+
| TypeExpr t ->
969+
extractType t ~env ~package:full.package |> getExtractedType
1030970
in
1031971
let expandedBranches =
1032972
match extractedType with
@@ -1045,9 +985,11 @@ module Codegen = struct
1045985
|> List.map (fun (pat : Parsetree.pattern) ->
1046986
mkConstructPat ~payload:pat "Some")))
1047987
| Tresult {okType; errorType} ->
1048-
let extractedOkType = okType |> extractType ~env ~package:full.package in
988+
let extractedOkType =
989+
okType |> extractType ~env ~package:full.package |> getExtractedType
990+
in
1049991
let extractedErrorType =
1050-
errorType |> extractType ~env ~package:full.package
992+
errorType |> extractType ~env ~package:full.package |> getExtractedType
1051993
in
1052994
let expandedOkBranches =
1053995
match extractedOkType with

analysis/src/Xform.ml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -298,7 +298,7 @@ module ExhaustiveSwitch = struct
298298
match typ with
299299
| ExtractedType t -> Some t
300300
| TypeExpr t ->
301-
TypeUtils.extractType2 t ~env ~package:full.package
301+
TypeUtils.extractType t ~env ~package:full.package
302302
|> TypeUtils.getExtractedType
303303
in
304304
extractedType

0 commit comments

Comments
 (0)