Skip to content

Commit 19e0787

Browse files
committed
get rid off two redundant variant members for completionType
1 parent 109f74a commit 19e0787

File tree

3 files changed

+24
-20
lines changed

3 files changed

+24
-20
lines changed

analysis/src/CompletionBackEnd.ml

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -583,11 +583,14 @@ let completionsGetTypeEnv = function
583583
| {Completion.kind = Field ({typ}, _); env} :: _ -> Some (typ, env)
584584
| _ -> None
585585

586-
let completionsGetCompletionType = function
586+
let completionsGetCompletionType ~full = function
587587
| {Completion.kind = Value typ; env} :: _ -> Some (TypeExpr typ, env)
588588
| {Completion.kind = ObjLabel typ; env} :: _ -> Some (TypeExpr typ, env)
589589
| {Completion.kind = Field ({typ}, _); env} :: _ -> Some (TypeExpr typ, env)
590-
| {Completion.kind = Type typ; env} :: _ -> Some (ResolvedType typ, env)
590+
| {Completion.kind = Type typ; env} :: _ -> (
591+
match TypeUtils.extractTypeFromResolvedType typ ~env ~full with
592+
| None -> None
593+
| Some extractedType -> Some (ExtractedType extractedType, env))
591594
| {Completion.kind = ExtractedType typ; env} :: _ ->
592595
Some (ExtractedType typ, env)
593596
| _ -> None
@@ -1330,7 +1333,7 @@ let rec processCompletable ~debug ~full ~scope ~env ~pos ~forHover
13301333
contextPath
13311334
|> getCompletionsForContextPath ~full ~opens ~rawOpens ~allFiles ~pos ~env
13321335
~exact:true ~scope
1333-
|> completionsGetCompletionType
1336+
|> completionsGetCompletionType ~full
13341337
with
13351338
| None -> []
13361339
| Some (typ, env) -> (

analysis/src/SharedTypes.ml

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -322,8 +322,6 @@ type extractedType =
322322

323323
type completionType =
324324
| TypeExpr of Types.type_expr
325-
| InlineRecord of field list
326-
| ResolvedType of Type.t
327325
| ExtractedType of extractedType
328326

329327
module Completion = struct

analysis/src/TypeUtils.ml

Lines changed: 18 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -242,23 +242,23 @@ let rec resolveTypeForPipeCompletion ~env ~package ~lhsLoc ~full
242242
in
243243
digToRelevantType ~env ~package t)
244244

245+
let extractTypeFromResolvedType (typ : Type.t) ~env ~full =
246+
match typ.kind with
247+
| Tuple items -> Some (Tuple (env, items, Ctype.newty (Ttuple items)))
248+
| Record fields -> Some (Trecord {env; fields; name = `Str typ.name})
249+
| Variant constructors ->
250+
Some
251+
(Tvariant
252+
{env; constructors; variantName = typ.name; variantDecl = typ.decl})
253+
| Abstract _ | Open -> (
254+
match typ.decl.type_manifest with
255+
| None -> None
256+
| Some t -> t |> extractType ~env ~package:full.package)
257+
245258
let extractTypeFromCompletionType (t : completionType) ~env ~full =
246259
match t with
247260
| ExtractedType extractedType -> Some extractedType
248261
| TypeExpr t -> t |> extractType ~env ~package:full.package
249-
| InlineRecord fields -> Some (TinlineRecord {env; fields})
250-
| ResolvedType typ -> (
251-
match typ.kind with
252-
| Tuple items -> Some (Tuple (env, items, Ctype.newty (Ttuple items)))
253-
| Record fields -> Some (Trecord {env; fields; name = `Str typ.name})
254-
| Variant constructors ->
255-
Some
256-
(Tvariant
257-
{env; constructors; variantName = typ.name; variantDecl = typ.decl})
258-
| Abstract _ | Open -> (
259-
match typ.decl.type_manifest with
260-
| None -> None
261-
| Some t -> t |> extractType ~env ~package:full.package))
262262

263263
(** This moves through a nested path via a set of instructions, trying to resolve the type at the end of the path. *)
264264
let rec resolveNested (typ : completionType) ~env ~full ~nested =
@@ -292,7 +292,9 @@ let rec resolveNested (typ : completionType) ~env ~full ~nested =
292292
Some (Completable.RecordField {seenFields}) )
293293
| NRecordBody {seenFields}, Some (TinlineRecord {env; fields}) ->
294294
Some
295-
(InlineRecord fields, env, Some (Completable.RecordField {seenFields}))
295+
( ExtractedType (TinlineRecord {fields; env}),
296+
env,
297+
Some (Completable.RecordField {seenFields}) )
296298
| ( NVariantPayload {constructorName = "Some"; itemNum = 0},
297299
Some (Toption (env, typ)) ) ->
298300
TypeExpr typ |> resolveNested ~env ~full ~nested
@@ -308,7 +310,8 @@ let rec resolveNested (typ : completionType) ~env ~full ~nested =
308310
| None -> None
309311
| Some (typ, _) -> TypeExpr typ |> resolveNested ~env ~full ~nested)
310312
| Some {args = InlineRecord fields} when itemNum = 0 ->
311-
InlineRecord fields |> resolveNested ~env ~full ~nested
313+
ExtractedType (TinlineRecord {env; fields})
314+
|> resolveNested ~env ~full ~nested
312315
| _ -> None)
313316
| ( NPolyvariantPayload {constructorName; itemNum},
314317
Some (Tpolyvariant {env; constructors}) ) -> (

0 commit comments

Comments
 (0)