@@ -745,8 +745,7 @@ let rec extractRecordType ~env ~package (t : Types.type_expr) =
745
745
746
746
let rec extractObjectType ~env ~package (t : Types.type_expr ) =
747
747
match t.desc with
748
- | Tlink t1 | Tsubst t1 | Tpoly (t1 , [] ) ->
749
- extractObjectType ~env ~package t1
748
+ | Tlink t1 | Tsubst t1 | Tpoly (t1 , [] ) -> extractObjectType ~env ~package t1
750
749
| Tobject (tObj , _ ) -> Some (env, tObj)
751
750
| Tconstr (path , _ , _ ) -> (
752
751
match References. digConstructor ~env ~package path with
@@ -1164,30 +1163,28 @@ let processCompletable ~findItems ~full ~package ~rawOpens
1164
1163
| Tvar None -> []
1165
1164
| _ -> []
1166
1165
in
1167
- let envRef = ref (QueryEnv. fromFile full.file) in
1168
- let getObjectFields (t : Types.type_expr ) =
1169
- match t |> extractObjectType ~env: envRef.contents ~package with
1170
- | Some (env , tObj ) ->
1171
- envRef := env;
1172
- getFields tObj
1173
- | None -> []
1174
- in
1175
- let fields =
1176
- match [lhs] |> findItems ~exact: true with
1177
- | {SharedTypes. item = Value typ } :: _ -> getObjectFields typ
1178
- | _ -> []
1166
+ let getObjectFields ~env (t : Types.type_expr ) =
1167
+ match t |> extractObjectType ~env ~package with
1168
+ | Some (env , tObj ) -> (env, getFields tObj)
1169
+ | None -> (env, [] )
1179
1170
in
1180
- let rec resolvePath fields path =
1171
+ let rec resolvePath ~ env fields path =
1181
1172
match path with
1182
1173
| name :: restPath -> (
1183
1174
match fields |> List. find_opt (fun (n , _ ) -> n = name) with
1184
1175
| Some (_ , fieldType ) ->
1185
- let innerFields = getObjectFields fieldType in
1186
- resolvePath innerFields restPath
1176
+ let env, innerFields = getObjectFields ~env fieldType in
1177
+ resolvePath ~env innerFields restPath
1187
1178
| None -> [] )
1188
1179
| [] -> fields
1189
1180
in
1190
- let labels = resolvePath fields path in
1181
+ let env0 = QueryEnv. fromFile full.file in
1182
+ let env, fields =
1183
+ match [lhs] |> findItems ~exact: true with
1184
+ | {SharedTypes. item = Value typ } :: _ -> getObjectFields ~env: env0 typ
1185
+ | _ -> (env0, [] )
1186
+ in
1187
+ let labels = resolvePath ~env fields path in
1191
1188
let mkLabel_ name typString =
1192
1189
mkItem ~name ~kind: 4 ~deprecated: None ~detail: typString ~docstring: []
1193
1190
in
0 commit comments