@@ -1497,25 +1497,25 @@ let rec __flow cx ((l: Type.t), (u: Type.use_t)) trace =
14971497 prep_try_intersection cx trace reason unresolved (resolved @ [t]) u r rep
14981498
14991499 (* ************************)
1500- (* Resolving rest params *)
1500+ (* Resolving spread args *)
15011501 (* ************************)
15021502
15031503 | AnyT _,
1504- ResolveRestT (reason_op, {
1504+ ResolveSpreadT (reason_op, {
15051505 rrt_id = _;
15061506 rrt_resolved;
15071507 rrt_unresolved;
15081508 rrt_resolve_to;
15091509 rrt_tout;
15101510 }) ->
15111511
1512- let rrt_resolved = ResolvedAnyRestParam ::rrt_resolved in
1512+ let rrt_resolved = ResolvedAnySpreadArg ::rrt_resolved in
15131513 resolve_spread_list_rec
15141514 cx ~trace ~reason_op
15151515 (rrt_resolved, rrt_unresolved) rrt_resolve_to rrt_tout
15161516
15171517 | ArrT (_, arrtype),
1518- ResolveRestT (reason_op, {
1518+ ResolveSpreadT (reason_op, {
15191519 rrt_id;
15201520 rrt_resolved;
15211521 rrt_unresolved;
@@ -1539,22 +1539,22 @@ let rec __flow cx ((l: Type.t), (u: Type.use_t)) trace =
15391539 * for (let x = 1; x < 3; x++) { foo = [...foo, x]; }
15401540 *
15411541 * where every time you spread foo, you flow another type into foo. So
1542- * each time `l ~> ResolveRestT ` is processed, it might produce a new
1543- * `l ~> ResolveRestT ` with a new `l`.
1542+ * each time `l ~> ResolveSpreadT ` is processed, it might produce a new
1543+ * `l ~> ResolveSpreadT ` with a new `l`.
15441544 *
15451545 * Here is how we avoid this:
15461546 *
1547- * 1. We use ConstFoldExpansion to detect when we see a ResolveRestT
1547+ * 1. We use ConstFoldExpansion to detect when we see a ResolveSpreadT
15481548 * upper bound multiple times
1549- * 2. When a ResolveRestT upper bound multiple times, we change it into
1550- * a ResolveRestT upper bound that resolves to a more general type.
1549+ * 2. When a ResolveSpreadT upper bound multiple times, we change it into
1550+ * a ResolveSpreadT upper bound that resolves to a more general type.
15511551 * This should prevent more distinct lower bounds from flowing in
15521552 * 3. rec_flow caches (l,u) pairs.
15531553 *)
15541554 if ConstFoldExpansion. push_unless_loop id (reason_of_t elemt)
15551555 then begin
15561556 (* We haven't seen this ArrT yet, so no need to worry about loops *)
1557- let rrt_resolved = ResolvedRestParam (arrtype)::rrt_resolved in
1557+ let rrt_resolved = ResolvedSpreadArg (arrtype)::rrt_resolved in
15581558 resolve_spread_list_rec
15591559 cx ~trace ~reason_op (rrt_resolved, rrt_unresolved) rrt_resolve_to rrt_tout;
15601560 ConstFoldExpansion. pop id
@@ -1568,7 +1568,7 @@ let rec __flow cx ((l: Type.t), (u: Type.use_t)) trace =
15681568 * an array. The rrt_id is the same so that we avoid creating many
15691569 * distinct upper bounds, which would sabotage the (l,u) pair
15701570 * caching that rec_flow does. *)
1571- rec_flow cx trace (l, ResolveRestT (reason_op, {
1571+ rec_flow cx trace (l, ResolveSpreadT (reason_op, {
15721572 rrt_id;
15731573 rrt_resolved;
15741574 rrt_unresolved;
@@ -8794,16 +8794,16 @@ and resolve_spread_list_rec
87948794 | resolved , [] ->
87958795 finish_resolve_spread_list
87968796 cx ?trace ~reason_op (List. rev resolved) resolve_to tout
8797- | resolved , UnresolvedParam (next )::unresolved ->
8797+ | resolved , UnresolvedArg (next )::unresolved ->
87988798 resolve_spread_list_rec
87998799 cx
88008800 ?trace
88018801 ~reason_op
8802- (ResolvedParam (next)::resolved, unresolved)
8802+ (ResolvedArg (next)::resolved, unresolved)
88038803 resolve_to
88048804 tout
8805- | resolved , UnresolvedRestParam (next )::unresolved ->
8806- flow_opt cx ?trace (next, ResolveRestT (reason_op, {
8805+ | resolved , UnresolvedSpreadArg (next )::unresolved ->
8806+ flow_opt cx ?trace (next, ResolveSpreadT (reason_op, {
88078807 rrt_id = mk_id() ;
88088808 rrt_resolved = resolved;
88098809 rrt_unresolved = unresolved;
@@ -8815,37 +8815,37 @@ and resolve_spread_list_rec
88158815 * to resolve to. *)
88168816and finish_resolve_spread_list =
88178817 (* Turn tuple rest params into single params *)
8818- let flatten_rest_params list =
8818+ let flatten_spread_args list =
88198819 list
88208820 |> List. fold_left (fun acc param -> match param with
8821- | ResolvedRestParam (arrtype ) ->
8821+ | ResolvedSpreadArg (arrtype ) ->
88228822 begin match arrtype with
88238823 | ArrayAT (_, Some tuple_types)
88248824 | TupleAT (_ , tuple_types ) ->
88258825 List. fold_left
8826- (fun acc elem -> ResolvedParam (elem)::acc)
8826+ (fun acc elem -> ResolvedArg (elem)::acc)
88278827 acc
88288828 tuple_types
88298829 | ArrayAT (_, None )
88308830 | ROArrayAT (_ ) -> param::acc
88318831 end
8832- | ResolvedParam _ -> param::acc
8833- | ResolvedAnyRestParam -> failwith " Should not be hit"
8832+ | ResolvedArg _ -> param::acc
8833+ | ResolvedAnySpreadArg -> failwith " Should not be hit"
88348834 ) []
88358835 |> List. rev
88368836
88378837 in
88388838
8839- let rest_resolved_to_any = List. exists (function
8840- | ResolvedAnyRestParam -> true
8841- | ResolvedParam _ | ResolvedRestParam _ -> false )
8839+ let spread_resolved_to_any = List. exists (function
8840+ | ResolvedAnySpreadArg -> true
8841+ | ResolvedArg _ | ResolvedSpreadArg _ -> false )
88428842
88438843 in
88448844
88458845 let finish_array cx ?trace ~reason_op ~resolve_to resolved tout =
88468846 (* Did `any` flow to one of the rest parameters? If so, we need to resolve
88478847 * to a type that is both a subtype and supertype of the desired type. *)
8848- let result = if rest_resolved_to_any resolved
8848+ let result = if spread_resolved_to_any resolved
88498849 then match resolve_to with
88508850 (* Array<any> is a good enough any type for arrays *)
88518851 | `Array -> ArrT (reason_op, ArrayAT (AnyT. why reason_op, None ))
@@ -8858,7 +8858,7 @@ and finish_resolve_spread_list =
88588858 | `Tuple -> AnyT. why reason_op
88598859 else begin
88608860 (* Spreads that resolve to tuples are flattened *)
8861- let elems = flatten_rest_params resolved in
8861+ let elems = flatten_spread_args resolved in
88628862
88638863 let tuple_types = match resolve_to with
88648864 | `Literal
@@ -8868,9 +8868,9 @@ and finish_resolve_spread_list =
88688868 |> List. fold_left (fun acc elem ->
88698869 match (acc, elem) with
88708870 | None , _ -> None
8871- | _ , ResolvedRestParam _ -> None
8872- | Some tuple_types , ResolvedParam t -> Some (t::tuple_types)
8873- | _ , ResolvedAnyRestParam -> failwith " Should not be hit"
8871+ | _ , ResolvedSpreadArg _ -> None
8872+ | Some tuple_types , ResolvedArg t -> Some (t::tuple_types)
8873+ | _ , ResolvedAnySpreadArg -> failwith " Should not be hit"
88748874 ) (Some [] )
88758875 |> Option. map ~f: List. rev
88768876 | `Array -> None in
@@ -8879,12 +8879,12 @@ and finish_resolve_spread_list =
88798879 * every element in the array *)
88808880 let tset = List. fold_left (fun tset elem ->
88818881 let elemt = match elem with
8882- | ResolvedRestParam (
8882+ | ResolvedSpreadArg (
88838883 (ArrayAT (elemt,_) | TupleAT (elemt,_) | ROArrayAT elemt )
88848884 ) ->
88858885 elemt
8886- | ResolvedParam elemt -> elemt
8887- | ResolvedAnyRestParam -> failwith " Should not be hit"
8886+ | ResolvedArg elemt -> elemt
8887+ | ResolvedAnySpreadArg -> failwith " Should not be hit"
88888888 in
88898889
88908890 TypeExSet. add elemt tset
0 commit comments