@@ -1455,6 +1455,34 @@ let getOpens ~debug ~rawOpens ~package ~env =
1455
1455
(* Last open takes priority *)
1456
1456
List. rev resolvedOpens
1457
1457
1458
+ let getArgs ~env (t : Types.type_expr ) ~full =
1459
+ let rec getArgsLoop ~env (t : Types.type_expr ) ~full ~currentArgumentPosition
1460
+ =
1461
+ match t.desc with
1462
+ | Tlink t1 | Tsubst t1 | Tpoly (t1 , [] ) ->
1463
+ getArgsLoop ~full ~env ~current ArgumentPosition t1
1464
+ | Tarrow ((Labelled l | Optional l ), tArg , tRet , _ ) ->
1465
+ (SharedTypes.Completable. Labelled l, tArg)
1466
+ :: getArgsLoop ~full ~env ~current ArgumentPosition tRet
1467
+ | Tarrow (Nolabel, tArg , tRet , _ ) ->
1468
+ (Unlabelled {argumentPosition = currentArgumentPosition}, tArg)
1469
+ :: getArgsLoop ~full ~env
1470
+ ~current ArgumentPosition:(currentArgumentPosition + 1 )
1471
+ tRet
1472
+ | Tconstr (path , typeArgs , _ ) -> (
1473
+ match References. digConstructor ~env ~package: full.package path with
1474
+ | Some
1475
+ ( env,
1476
+ {
1477
+ item = {decl = {type_manifest = Some t1; type_params = typeParams}};
1478
+ } ) ->
1479
+ let t1 = t1 |> instantiateType ~type Params ~type Args in
1480
+ getArgsLoop ~full ~env ~current ArgumentPosition t1
1481
+ | _ -> [] )
1482
+ | _ -> []
1483
+ in
1484
+ t |> getArgsLoop ~env ~full ~current ArgumentPosition:0
1485
+
1458
1486
let processCompletable ~debug ~full ~scope ~env ~pos ~forHover
1459
1487
(completable : Completable.t ) =
1460
1488
let package = full.package in
@@ -1830,29 +1858,11 @@ Note: The `@react.component` decorator requires the react-jsx config to be set i
1830
1858
if debug then
1831
1859
Printf. printf " Found type for function %s\n "
1832
1860
(typ |> Shared. typeToString);
1833
- let rec getLabels ~env (t : Types.type_expr ) =
1834
- match t.desc with
1835
- | Tlink t1 | Tsubst t1 | Tpoly (t1 , [] ) -> getLabels ~env t1
1836
- | Tarrow ((Labelled l | Optional l ), tArg , tRet , _ ) ->
1837
- (l, tArg) :: getLabels ~env tRet
1838
- | Tarrow (Nolabel, _ , tRet , _ ) -> getLabels ~env tRet
1839
- | Tconstr (path , typeArgs , _ ) -> (
1840
- match References. digConstructor ~env ~package path with
1841
- | Some
1842
- ( env,
1843
- {
1844
- item =
1845
- {
1846
- decl =
1847
- {type_manifest = Some t1; type_params = typeParams};
1848
- };
1849
- } ) ->
1850
- let t1 = t1 |> instantiateType ~type Params ~type Args in
1851
- getLabels ~env t1
1852
- | _ -> [] )
1853
- | _ -> []
1854
- in
1855
- typ |> getLabels ~env
1861
+ typ |> getArgs ~full ~env
1862
+ |> List. filter_map (fun arg ->
1863
+ match arg with
1864
+ | SharedTypes.Completable. Labelled name , a -> Some (name, a)
1865
+ | _ -> None )
1856
1866
| None -> []
1857
1867
in
1858
1868
let mkLabel (name , typ ) =
0 commit comments