Module Js_parser.Parser_flow

module Sedlexing = Flow_sedlexing;
module Ast = Flow_ast;
let filter_duplicate_errors: list((Loc.t, Parse_error.t)) => list((Loc.t, Parse_error.t));
let check_for_duplicate_exports: Parser_env.env => list((Loc.t, Ast.Statement.t'(Loc.t, Loc.t))) => unit;
let do_parse: Parser_env.env => (Parser_env.env => 'a) => bool => ('b, list((Loc.t, Parse_error.t)));
let parse_program: bool => ?token_sink:option((Parser_env.token_sink_result => unit)) => ?parse_options:option(Parser_env.parse_options) => option(File_key.t) => string => (Flow_ast.Program.t(Loc.t, Loc.t), list((Loc.t, Parse_error.t)));
let program: ?fail:bool => ?token_sink:option((Parser_env.token_sink_result => unit)) => ?parse_options:option(Parser_env.parse_options) => string => (Flow_ast.Program.t(Loc.t, Loc.t), list((Loc.t, Parse_error.t)));
let program_file: ?fail:bool => ?token_sink:option((Parser_env.token_sink_result => unit)) => ?parse_options:option(Parser_env.parse_options) => string => option(File_key.t) => (Flow_ast.Program.t(Loc.t, Loc.t), list((Loc.t, Parse_error.t)));
let parse_annot: ?parse_options:option(Parser_env.parse_options) => option(File_key.t) => string => (Flow_ast.Type.annotation(Loc.t, Loc.t), list((Loc.t, Parse_error.t)));
let package_json_file: ?fail:bool => ?token_sink:option((Parser_env.token_sink_result => unit)) => ?parse_options:option(Parser_env.parse_options) => string => option(File_key.t) => ((Loc.t, Flow_ast.Expression.Object.t(Loc.t, Loc.t)), list((Loc.t, Parse_error.t)));
let json_file: ?fail:bool => ?token_sink:option((Parser_env.token_sink_result => unit)) => ?parse_options:option(Parser_env.parse_options) => string => option(File_key.t) => (Flow_ast.Expression.t(Loc.t, Loc.t), list((Loc.t, Parse_error.t)));
let jsx_pragma_expression: string => option(File_key.t) => (Flow_ast.Expression.t(Loc.t, Loc.t), list((Loc.t, Parse_error.t)));
let string_is_valid_identifier_name: string => bool;