@@ -242,23 +242,23 @@ let rec resolveTypeForPipeCompletion ~env ~package ~lhsLoc ~full
242
242
in
243
243
digToRelevantType ~env ~package t)
244
244
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
+
245
258
let extractTypeFromCompletionType (t : completionType ) ~env ~full =
246
259
match t with
247
260
| ExtractedType extractedType -> Some extractedType
248
261
| 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))
262
262
263
263
(* * This moves through a nested path via a set of instructions, trying to resolve the type at the end of the path. *)
264
264
let rec resolveNested (typ : completionType ) ~env ~full ~nested =
@@ -292,7 +292,9 @@ let rec resolveNested (typ : completionType) ~env ~full ~nested =
292
292
Some (Completable. RecordField {seenFields}) )
293
293
| NRecordBody {seenFields} , Some (TinlineRecord {env; fields} ) ->
294
294
Some
295
- (InlineRecord fields, env, Some (Completable. RecordField {seenFields}))
295
+ ( ExtractedType (TinlineRecord {fields; env}),
296
+ env,
297
+ Some (Completable. RecordField {seenFields}) )
296
298
| ( NVariantPayload {constructorName = " Some" ; itemNum = 0 },
297
299
Some (Toption (env, typ)) ) ->
298
300
TypeExpr typ |> resolveNested ~env ~full ~nested
@@ -308,7 +310,8 @@ let rec resolveNested (typ : completionType) ~env ~full ~nested =
308
310
| None -> None
309
311
| Some (typ , _ ) -> TypeExpr typ |> resolveNested ~env ~full ~nested )
310
312
| Some {args = InlineRecord fields } when itemNum = 0 ->
311
- InlineRecord fields |> resolveNested ~env ~full ~nested
313
+ ExtractedType (TinlineRecord {env; fields})
314
+ |> resolveNested ~env ~full ~nested
312
315
| _ -> None )
313
316
| ( NPolyvariantPayload {constructorName; itemNum},
314
317
Some (Tpolyvariant {env; constructors}) ) -> (
0 commit comments