@@ -1057,9 +1057,10 @@ let rec extractObjectType ~env ~package (t : Types.type_expr) =
1057
1057
match t.desc with
1058
1058
| Tlink t1 | Tsubst t1 | Tpoly (t1 , [] ) -> extractObjectType ~env ~package t1
1059
1059
| Tobject (tObj , _ ) -> Some (env, tObj)
1060
- | Tconstr (path , _ , _ ) -> (
1060
+ | Tconstr (path , typeArgs , _ ) -> (
1061
1061
match References. digConstructor ~env ~package path with
1062
- | Some (env , {item = {decl = {type_manifest = Some t1 } } } ) ->
1062
+ | Some (env , {item = {decl = {type_manifest = Some t1 ; type_params = typeParams } } } ) ->
1063
+ let t1 = t1 |> instantiateType ~type Params ~type Args in
1063
1064
extractObjectType ~env ~package t1
1064
1065
| _ -> None )
1065
1066
| _ -> None
@@ -1069,9 +1070,10 @@ let extractFunctionType ~env ~package typ =
1069
1070
match t.desc with
1070
1071
| Tlink t1 | Tsubst t1 | Tpoly (t1 , [] ) -> loop ~env acc t1
1071
1072
| Tarrow (label , tArg , tRet , _ ) -> loop ~env ((label, tArg) :: acc) tRet
1072
- | Tconstr (path , _ , _ ) -> (
1073
+ | Tconstr (path , typeArgs , _ ) -> (
1073
1074
match References. digConstructor ~env ~package path with
1074
- | Some (env , {item = {decl = {type_manifest = Some t1 } } } ) ->
1075
+ | Some (env , {item = {decl = {type_manifest = Some t1 ; type_params = typeParams } } } ) ->
1076
+ let t1 = t1 |> instantiateType ~type Params ~type Args in
1075
1077
loop ~env acc t1
1076
1078
| _ -> (List. rev acc, t))
1077
1079
| _ -> (List. rev acc, t)
0 commit comments