@@ -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+
245258let 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. *)
264264let 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