Module Js_parser.Comment_attachment

module Ast = Flow_ast
val id : ('a -> 'a) -> 'a -> 'b -> ('a -> 'b) -> 'b
val map_loc : ('a -> 'b -> 'b) -> ('a * 'b) -> 'a * 'b
val map_opt : ('a -> 'a) -> 'a option -> 'a option
val id_list_last : ('a -> 'a) -> 'a0 list -> 'a1 list
class +'a trailing_comments_remover : after_pos:Loc.position -> object ... end
type trailing_and_remover_result = {
  1. trailing : Loc.t Flow_ast.Comment.t list;
  2. remove_trailing : 'a. 'a -> (Loc.t trailing_comments_remover -> 'a -> 'a) -> 'a;
}
val trailing_and_remover_after_last_loc : Parser_env.env -> trailing_and_remover_result
val trailing_and_remover_after_last_line : Parser_env.env -> trailing_and_remover_result
val trailing_and_remover : Parser_env.env -> trailing_and_remover_result
val id_remove_trailing : Parser_env.env -> (Loc.t * Loc.t Js_parser__Flow_ast.Identifier.t') -> Loc.t * Loc.t Js_parser__Flow_ast.Identifier.t'
val type_params_remove_trailing : Parser_env.env -> (Loc.t * (Loc.t, Loc.t) Js_parser__Flow_ast.Type.TypeParams.t') option -> (Loc.t * (Loc.t, Loc.t) Js_parser__Flow_ast.Type.TypeParams.t') option
val type_remove_trailing : Parser_env.env -> (Loc.t * (Loc.t, Loc.t) Js_parser__Flow_ast.Type.t') -> Loc.t * (Loc.t, Loc.t) Js_parser__Flow_ast.Type.t'
val component_type_params_remove_trailing : Parser_env.env -> (Loc.t * (Loc.t, Loc.t) Js_parser__Flow_ast.Type.Component.Params.t') -> Loc.t * (Loc.t, Loc.t) Js_parser__Flow_ast.Type.Component.Params.t'
val predicate_remove_trailing : Parser_env.env -> (Loc.t * (Loc.t, Loc.t) Js_parser__Flow_ast.Type.Predicate.t') option -> (Loc.t * (Loc.t, Loc.t) Js_parser__Flow_ast.Type.Predicate.t') option
val statement_add_comments : (Loc.t, Loc.t) Flow_ast.Statement.t -> (Loc.t, unit) Flow_ast.Syntax.t option -> (Loc.t, Loc.t) Flow_ast.Statement.t
class +'a comment_bounds_collector : loc:Loc.t -> object ... end
val comment_bounds : Loc.t -> 'a -> (Loc.t comment_bounds_collector -> 'b -> 'c) -> (Loc.t * Js_parser__Flow_ast.Comment.t') option * (Loc.t * Js_parser__Flow_ast.Comment.t') option
val expand_loc_with_comment_bounds : Loc.t -> ((Loc.t * 'a) option * (Loc.t * 'b) option) -> Loc.t
val comment_bounds_without_trailing_line_comment : ('a * ('b * Ast.Comment.t') option) -> 'c * ('b * Ast.Comment.t') option
val collect_without_trailing_line_comment : < comment_bounds : 'a * ('b * Ast.Comment.t') option.. > -> 'a * ('b * Ast.Comment.t') option
val statement_comment_bounds : (Loc.t, Loc.t) Flow_ast.Statement.t -> Loc.t Flow_ast.Comment.t option * Loc.t Flow_ast.Comment.t option
val expression_comment_bounds : (Loc.t * (Loc.t, Loc.t) Js_parser.Flow_ast_mapper.Ast.Expression.t') -> (Loc.t * Js_parser__Flow_ast.Comment.t') option * (Loc.t * Js_parser__Flow_ast.Comment.t') option
val type_comment_bounds : (Loc.t * (Loc.t, Loc.t) Js_parser__Flow_ast.Type.t') -> (Loc.t * Js_parser__Flow_ast.Comment.t') option * (Loc.t * Js_parser__Flow_ast.Comment.t') option
val block_comment_bounds : (Loc.t * (Loc.t, Loc.t) Js_parser.Flow_ast_mapper.Ast.Statement.Block.t) -> (Loc.t * Js_parser__Flow_ast.Comment.t') option * (Loc.t * Js_parser__Flow_ast.Comment.t') option
val object_property_comment_bounds : (Loc.t, Loc.t) Ast.Expression.Object.property -> (Loc.t * Js_parser__Flow_ast.Comment.t') option * (Loc.t * Ast.Comment.t') option
val object_type_property_comment_bounds : (Loc.t, Loc.t) Ast.Type.Object.property -> (Loc.t * Js_parser__Flow_ast.Comment.t') option * (Loc.t * Ast.Comment.t') option
val object_pattern_property_comment_bounds : Loc.t -> (Loc.t, Loc.t) Js_parser.Flow_ast_mapper.Ast.Pattern.Object.property -> (Loc.t * Js_parser__Flow_ast.Comment.t') option * (Loc.t * Ast.Comment.t') option
val switch_case_comment_bounds : (Loc.t * (Loc.t, Loc.t) Js_parser.Flow_ast_mapper.Ast.Statement.Switch.Case.t') -> (Loc.t * Js_parser__Flow_ast.Comment.t') option * (Loc.t * Js_parser__Flow_ast.Comment.t') option
val function_param_comment_bounds : (Loc.t * (Loc.t, Loc.t) Js_parser__Flow_ast.Function.Param.t') -> (Loc.t * Js_parser__Flow_ast.Comment.t') option * (Loc.t * Ast.Comment.t') option
val function_rest_param_comment_bounds : (Loc.t * (Loc.t, Loc.t) Js_parser__Flow_ast.Function.RestParam.t') -> (Loc.t * Js_parser__Flow_ast.Comment.t') option * (Loc.t * Ast.Comment.t') option
val function_this_param_comment_bounds : (Loc.t * (Loc.t, Loc.t) Js_parser__Flow_ast.Function.ThisParam.t') -> (Loc.t * Js_parser__Flow_ast.Comment.t') option * (Loc.t * Ast.Comment.t') option
val function_type_param_comment_bounds : (Loc.t * (Loc.t, Loc.t) Js_parser.Flow_ast_mapper.Ast.Type.Function.Param.t') -> (Loc.t * Js_parser__Flow_ast.Comment.t') option * (Loc.t * Ast.Comment.t') option
val function_type_rest_param_comment_bounds : (Loc.t * (Loc.t, Loc.t) Js_parser.Flow_ast_mapper.Ast.Type.Function.RestParam.t') -> (Loc.t * Js_parser__Flow_ast.Comment.t') option * (Loc.t * Ast.Comment.t') option
val function_type_this_param_comment_bounds : (Loc.t * (Loc.t, Loc.t) Js_parser.Flow_ast_mapper.Ast.Type.Function.ThisParam.t') -> (Loc.t * Js_parser__Flow_ast.Comment.t') option * (Loc.t * Ast.Comment.t') option
val component_param_comment_bounds : (Loc.t * (Loc.t, Loc.t) Js_parser__Flow_ast.Statement.ComponentDeclaration.Param.t') -> (Loc.t * Js_parser__Flow_ast.Comment.t') option * (Loc.t * Ast.Comment.t') option
val component_rest_param_comment_bounds : (Loc.t * (Loc.t, Loc.t) Js_parser__Flow_ast.Statement.ComponentDeclaration.RestParam.t') -> (Loc.t * Js_parser__Flow_ast.Comment.t') option * (Loc.t * Ast.Comment.t') option
val component_type_param_comment_bounds : (Loc.t * (Loc.t, Loc.t) Js_parser__Flow_ast.Type.Component.Param.t') -> (Loc.t * Js_parser__Flow_ast.Comment.t') option * (Loc.t * Ast.Comment.t') option
val component_type_rest_param_comment_bounds : (Loc.t * (Loc.t, Loc.t) Js_parser__Flow_ast.Type.Component.RestParam.t') -> (Loc.t * Js_parser__Flow_ast.Comment.t') option * (Loc.t * Ast.Comment.t') option
val array_element_comment_bounds : Loc.t -> (Loc.t, Loc.t) Js_parser.Flow_ast_mapper.Ast.Expression.Array.element -> (Loc.t * Js_parser__Flow_ast.Comment.t') option * (Loc.t * Ast.Comment.t') option
val array_pattern_element_comment_bounds : Loc.t -> (Loc.t, Loc.t) Js_parser.Flow_ast_mapper.Ast.Pattern.Array.element -> (Loc.t * Js_parser__Flow_ast.Comment.t') option * (Loc.t * Ast.Comment.t') option
val expression_or_spread_comment_bounds : Loc.t -> (Loc.t, Loc.t) Js_parser.Flow_ast_mapper.Ast.Expression.expression_or_spread -> (Loc.t * Js_parser__Flow_ast.Comment.t') option * (Loc.t * Ast.Comment.t') option
val call_type_arg_comment_bounds : Loc.t -> (Loc.t, Loc.t) Js_parser.Flow_ast_mapper.Ast.Expression.CallTypeArg.t -> (Loc.t * Js_parser__Flow_ast.Comment.t') option * (Loc.t * Ast.Comment.t') option
val type_param_comment_bounds : (Loc.t * (Loc.t, Loc.t) Js_parser__Flow_ast.Type.TypeParam.t') -> (Loc.t * Js_parser__Flow_ast.Comment.t') option * (Loc.t * Ast.Comment.t') option
val function_body_comment_bounds : (Loc.t, Loc.t) Ast.Function.body -> (Loc.t * Js_parser__Flow_ast.Comment.t') option * (Loc.t * Js_parser__Flow_ast.Comment.t') option
val if_alternate_statement_comment_bounds : Loc.t -> (Loc.t, Loc.t) Js_parser.Flow_ast_mapper.Ast.Statement.If.Alternate.t' -> (Loc.t * Js_parser__Flow_ast.Comment.t') option * (Loc.t * Js_parser__Flow_ast.Comment.t') option
val member_property_comment_bounds : Loc.t -> (Loc.t, Loc.t) Js_parser.Flow_ast_mapper.Ast.Expression.Member.property -> (Loc.t * Js_parser__Flow_ast.Comment.t') option * (Loc.t * Js_parser__Flow_ast.Comment.t') option