From 8ecbaabf04aebbc45d22cb54085e63357d982d22 Mon Sep 17 00:00:00 2001 From: Sam Goldman Date: Fri, 19 Jun 2015 22:23:08 -1000 Subject: [PATCH] Revert "Allow declaration files to declare generator functions" This reverts commit cce04ece9de0ef9ecac1a55f00041996e88203da. --- src/parser/parser_flow.ml | 9 --------- src/parser/spider_monkey_ast.ml | 1 - src/typing/type_inference_js.ml | 5 ++--- tests/generators/generators.exp | 32 ++++++++------------------------ tests/generators/generators.js | 9 --------- 5 files changed, 10 insertions(+), 46 deletions(-) diff --git a/src/parser/parser_flow.ml b/src/parser/parser_flow.ml index d5eaebfa238..283cd884d15 100644 --- a/src/parser/parser_flow.ml +++ b/src/parser/parser_flow.ml @@ -481,12 +481,10 @@ end = struct match param_list_or_type env with | ParamList (rest, params) -> Expect.token env T_ARROW; - let generator = false in let returnType = _type env in let end_loc = fst returnType in Loc.btwn start_loc end_loc, Type.(Function Function.({ params; - generator; returnType; rest; typeParameters = None; @@ -498,12 +496,10 @@ end = struct let typeParameters = type_parameter_declaration env in let rest, params = function_param_list env in Expect.token env T_ARROW; - let generator = false in let returnType = _type env in let end_loc = fst returnType in Loc.btwn start_loc end_loc, Type.(Function Function.({ params; - generator; returnType; rest; typeParameters; @@ -514,12 +510,10 @@ end = struct let typeParameters = type_parameter_declaration env in let rest, params = function_param_list env in Expect.token env T_COLON; - let generator = false in let returnType = _type env in let loc = Loc.btwn start_loc (fst returnType) in loc, Type.Function.({ params; - generator; returnType; rest; typeParameters; @@ -2859,9 +2853,7 @@ end = struct })) in let declare_function env start_loc = - let async = Declaration.async env in Expect.token env T_FUNCTION; - let generator = Declaration.generator env async in let id = Parse.identifier env in let start_sig_loc = Peek.loc env in let typeParameters = Type.type_parameter_declaration env in @@ -2872,7 +2864,6 @@ end = struct let loc = Loc.btwn start_sig_loc end_loc in let value = loc, Ast.Type.(Function {Function. params; - generator; returnType; rest; typeParameters; diff --git a/src/parser/spider_monkey_ast.ml b/src/parser/spider_monkey_ast.ml index 01bb6c54195..fcbf0e81c48 100644 --- a/src/parser/spider_monkey_ast.ml +++ b/src/parser/spider_monkey_ast.ml @@ -125,7 +125,6 @@ and Type : sig type t = { params: Param.t list; - generator: bool; returnType: Type.t; rest: Param.t option; typeParameters: Type.ParameterDeclaration.t option; diff --git a/src/typing/type_inference_js.ml b/src/typing/type_inference_js.ml index bebd3d08653..1955a0559c9 100644 --- a/src/typing/type_inference_js.ml +++ b/src/typing/type_inference_js.ml @@ -771,7 +771,7 @@ let rec convert cx map = Ast.Type.(function mk_nominal_type_ cx reason map (c, params) ) - | loc, Function { Function.params; generator; returnType; rest; typeParameters } -> + | loc, Function { Function.params; returnType; rest; typeParameters } -> let typeparams, map_ = mk_type_param_declarations cx ~map typeParameters in let map = SMap.fold SMap.add map_ map in @@ -796,7 +796,6 @@ let rec convert cx map = Ast.Type.(function ((snd name).Ast.Identifier.name) :: rev_pnames | None -> rev_tlist, rev_pnames ) in - let ret = convert cx map returnType in let ft = FunT ( mk_reason "function type" loc, @@ -806,7 +805,7 @@ let rec convert cx map = Ast.Type.(function this_t = Flow_js.mk_tvar cx (mk_reason "this" loc); params_tlist = (List.rev rev_params_tlist); params_names = Some (List.rev rev_params_names); - return_t = ret; + return_t = convert cx map returnType; closure_t = 0 }) in diff --git a/tests/generators/generators.exp b/tests/generators/generators.exp index d2a9c1c67a5..db2a300178a 100644 --- a/tests/generators/generators.exp +++ b/tests/generators/generators.exp @@ -27,34 +27,18 @@ generators.js:21:10,11: string This type is incompatible with generators.js:28:22,28: boolean -generators.js:31:37,42: number -This type is incompatible with -generators.js:32:30,35: string - -generators.js:33:17,30: call of method next -Error: -generators.js:33:29,29: number -This type is incompatible with -generators.js:31:53,59: boolean - -generators.js:33:17,36: property value -Error: -generators.js:31:45,50: string -This type is incompatible with -generators.js:37:16,22: boolean - -generators.js:69:3,16: yield* delegate +generators.js:60:3,16: yield* delegate Error: -generators.js:71:32,33: string +generators.js:62:32,33: string This type is incompatible with -generators.js:67:12,17: number +generators.js:58:12,17: number -generators.js:75:11,12: string +generators.js:66:11,12: string This type is incompatible with -generators.js:81:8,13: number +generators.js:72:8,13: number -generators.js:98:45,50: number +generators.js:89:45,50: number This type is incompatible with -generators.js:102:8,13: string +generators.js:93:8,13: string -Found 12 errors +Found 9 errors diff --git a/tests/generators/generators.js b/tests/generators/generators.js index da016f95006..12fc4cc81ed 100644 --- a/tests/generators/generators.js +++ b/tests/generators/generators.js @@ -28,15 +28,6 @@ if (typeof infer_stmt_next === "undefined") { (infer_stmt_next : boolean) // error: string ~> boolean } -declare function *decl(): Generator; -for (var x of decl()) { (x : string) } // error: number ~> string -var decl_next = decl().next(0).value; // error: number ~> boolean -if (typeof decl_next === "undefined") { -} else if (typeof decl_next === "number") { -} else { - (decl_next : boolean) // error: string ~> boolean -} - function *widen_next() { var x = yield 0; if (typeof x === "number") {