Jsx_parser.JSX
module Parse: Parser_common.PARSER
let tag_component_trailing_comments:
Js_parser__Parser_env.env =>
list(Flow_ast.Comment.t(Loc.t));
let spread_attribute:
Parser_env.env =>
(Loc.t, Flow_ast.JSX.SpreadAttribute.t'(Loc.t, Loc.t));
let expression_container_contents:
Parser_env.env =>
Flow_ast.JSX.ExpressionContainer.expression(Loc.t, Loc.t);
let expression_container:
Parser_env.env =>
(Loc.t, Flow_ast.JSX.ExpressionContainer.t(Loc.t, Loc.t));
let expression_container_or_spread_child:
Parser_env.env =>
(Loc.t, Flow_ast.JSX.child'(Loc.t, Loc.t));
let identifier: Parser_env.env => (Loc.t, Flow_ast.JSX.Identifier.t'(Loc.t));
let name: Parser_env.env => Flow_ast.JSX.name(Loc.t, Loc.t);
let names_are_equal:
Flow_ast.JSX.name('a, 'b) =>
Flow_ast.JSX.name('c, 'd) =>
bool;
let loc_of_name: Flow_ast.JSX.name('a, 'b) => 'c;
let attribute:
Parser_env.env =>
(Loc.t, Flow_ast.JSX.Attribute.t'(Loc.t, Loc.t));
let opening_element:
Parser_env.env =>
(Loc.t, result([> `Element(Flow_ast.JSX.Opening.t'(Loc.t, Loc.t))
| `Fragment ],
[> `Element(Flow_ast.JSX.Opening.t'(Loc.t, Loc.t))
| `Fragment ]));
let closing_element:
Parser_env.env =>
(Loc.t, [> `Element(Flow_ast.JSX.Closing.t'(Loc.t, Loc.t)) | `Fragment ]);
let child_is_unpaired:
Flow_ast.JSX.name('a, 'b) =>
('c, Flow_ast.JSX.child'('d, 'e)) =>
bool;
let child:
parent_opening_name:option(Flow_ast.JSX.name(Loc.t, Loc.t)) =>
Parser_env.env =>
Flow_ast.JSX.child(Loc.t, Loc.t);
let element:
parent_opening_name:option(Flow_ast.JSX.name(Loc.t, Loc.t)) =>
Parser_env.env =>
(Loc.t, [ `Element(Flow_ast.JSX.element(Loc.t, Loc.t))
| `Fragment(Flow_ast.JSX.fragment(Loc.t, Loc.t)) ]);
let element_or_fragment:
parent_opening_name:option(Flow_ast.JSX.name(Loc.t, Loc.t)) =>
Parser_env.env =>
(Loc.t, [ `Element(Flow_ast.JSX.element(Loc.t, Loc.t))
| `Fragment(Flow_ast.JSX.fragment(Loc.t, Loc.t)) ]);