Back to Flow

Flow OCaml to Rust Port Status

rust_port/rust_port_status.md

0.312.1147.7 KB
Original Source

Flow OCaml to Rust Port Status

This file tracks the progress of porting OCaml files from flow/src/ to Rust.

File Guidelines

  • Only checklist. No judgement. No percentage
  • For the mapping where the OCaml and Rust name differ, state the Rust name
  • Functions with TODO or stub don't count.

Source Files (~/fbsource/fbcode/flow/src)

  • analysis/
    • tests/
      • analysis_tests.ml → irrelevant since it's just a collector of the other tests
      • scope_builder_test.ml → flow_analysis/src/scope_builder_tests.rs
      • ssa_builder_test.ml → flow_analysis/src/ssa_builder_tests.rs
      • test_utils.ml → flow_analysis/src/test_utils.rs
    • env_builder/
      • tests/
        • env_builder_refinement_test.ml → flow_env_builder_resolver/src/env_builder_refinement_test.rs
        • env_builder_tests.ml → irrelevant (OUnit runner for find_provider_test)
        • find_provider_test.ml → flow_env_builder/src/find_provider_test.rs
        • name_def_test.ml → flow_env_builder_resolver/src/name_def_test.rs
      • dependency_sigs.ml → flow_env_builder_resolver/src/dependency_sigs.rs
        • Context trait
        • Flow trait
      • env_api.ml → flow_env_builder/src/env_api.rs
      • eq_test.ml → flow_env_builder/src/eq_test.rs
      • find_providers.ml → flow_env_builder/src/find_providers.rs
      • invalidation_api.ml → flow_env_builder/src/invalidation_api.rs
      • name_def.ml → flow_env_builder/src/name_def.rs
      • name_def_ordering.ml → flow_env_builder_resolver/src/name_def_ordering.rs
      • name_def_types.ml → flow_env_builder/src/name_def_types.rs
      • name_resolver.ml → flow_env_builder_resolver/src/name_resolver.rs
      • nonvoid_return.ml → flow_env_builder/src/nonvoid_return.rs
      • pattern_helper.ml → flow_env_builder/src/pattern_helper.rs
      • provider_api.ml → flow_env_builder/src/provider_api.rs
      • refinement_key.ml → flow_env_builder/src/refinement_key.rs
      • selector.ml → flow_env_builder/src/selector.rs
      • ssa_val.ml → flow_env_builder/src/ssa_val.rs
    • bindings.ml → flow_analysis/src/bindings.rs
      • add
      • allow_forward_ref
      • allow_redeclaration
      • empty
      • exists
      • push
      • singleton
      • to_assoc
      • to_map
    • hoister.ml → flow_analysis/src/hoister.rs
    • property_assignment.ml → flow_analysis/src/property_assignment.rs
    • scope_api.ml → flow_analysis/src/scope_api.rs
    • scope_api_sig.ml → unnecessary in rust
    • scope_builder.ml → flow_analysis/src/scope_builder.rs
    • scope_builder_sig.ml → unnecessary in rust
    • ssa_api.ml → flow_analysis/src/ssa_api.rs
      • Values type
      • WriteLoc type
      • write_locs_of_read_loc
      • print_values
    • ssa_builder.ml → flow_analysis/src/ssa_builder.rs
      • program
      • program_with_scope
      • program_with_scope_and_jsx_pragma
      • AbruptCompletion type
      • SsaBuilder struct with full AstVisitor implementation
  • codemods/
    • utils/
      • codemod_annotator.ml → flow_codemods/src/utils/codemod_annotator.rs
        • Queries module → queries
        • ty_or_type_ast type → TyOrTypeAst
        • NSpecSet type → NSpecSet
        • HardCodedImportMap module → HardCodedImportMap
        • validate_ty
        • get_ty
        • get_validated_ty
        • Make functor → Make / Mapper
      • codemod_ast_mapper.ml → flow_codemods/src/utils/codemod_ast_mapper.rs
        • name type → Name
        • mapper class → CodemodAstMapper
        • log
      • codemod_ast_reducer.ml → flow_codemods/src/utils/codemod_ast_reducer.rs
        • name type → Name
        • reducer class → CodemodAstReducer
        • log
      • codemod_context.ml → flow_codemods/src/utils/codemod_context.rs
        • Typed.ttyped::TypedCodemodContext
        • Typed.errortyped::Error
        • Typed.file
        • Typed.ty_at_loc
        • Typed.file_sig
        • Typed.metadata
        • Typed.context
        • Typed.typed_ast
        • Typed.lint_severities
        • Typed.flowfixme_ast
        • Untyped.tuntyped::UntypedCodemodContext
        • Untyped.file
        • UntypedFlowInit.tuntyped_flow_init::UntypedFlowInitCodemodContext
        • UntypedFlowInit.file
      • codemod_printer.ml → flow_codemods/src/utils/codemod_printer.rs
        • print_results
        • print_ast_file_dry
        • print_ast_file_real
        • print_asts
      • codemod_report.ml → flow_codemods/src/utils/codemod_report.rs
        • reporter_options type → ReporterOptions
        • reporter type → Reporter
        • t type → CodemodReport
        • unit_reporter
        • S module type → CodemodReportS
      • codemod_runner.ml → flow_codemods/src/utils/codemod_runner.rs
        • log_input_files
        • get_target_filename_set
        • extract_flowlibs_or_exit
        • unit_result type → UnitResult
        • result_list type → ResultList
        • abstract_visitor type → AbstractVisitor
        • SIMPLE_TYPED_RUNNER_CONFIGSimpleTypedRunnerConfig
        • UNTYPED_RUNNER_CONFIGUntypedRunnerConfig
        • UNTYPED_FLOW_INIT_RUNNER_CONFIGUntypedFlowInitRunnerConfig
        • STEP_RUNNERStepRunner
        • RUNNABLERunnable
        • merge_targets
        • merge_job
        • post_check
        • mk_check
        • mk_next_for_check
        • TYPED_RUNNER_WITH_PREPASS_CONFIGTypedRunnerWithPrepassConfig
        • TYPED_RUNNER_CONFIGTypedRunnerConfig
        • SimpleTypedRunner
        • SimpleTypedTwoPassRunner
        • TypedRunnerWithPrepass
        • TypedRunner
        • untyped_runner_job
        • untyped_digest
        • UntypedRunner
        • UntypedFlowInitRunner
        • RepeatRunner
        • MakeSimpleTypedRunner
        • MakeSimpleTypedTwoPassRunner
        • MakeTypedRunnerWithPrepass
        • MakeUntypedFlowInitRunner
        • MakeUntypedRunner
      • codemod_utils.ml → flow_codemods/src/utils/codemod_utils.rs
        • abstract_codemod_runner type → AbstractCodemodRunner
        • codemod_runner type → CodemodRunner
        • job_config type → JobConfig
        • save_ast_diff
        • make_visitor
        • initialize_logs
        • MakeMain.mainMakeMain::main
    • annotate_exports.ml → flow_codemods/src/annotate_exports.rs
      • SignatureVerification module → signature_verification
      • SignatureVerificationErrorStats module/type → signature_verification_error_stats::SignatureVerificationErrorStats
      • Codemod_exports_annotator — functor instantiation; in Rust used inline as codemod_annotator::Mapper<'_, '_, SignatureVerificationErrorStats>
      • Acc — functor instantiation; in Rust used inline as flow_services_code_action::insert_type_utils::Acc<SignatureVerificationErrorStats>
      • mapperAnnotateExportsMapper
    • annotate_literal_declarations.ml → flow_codemods/src/annotate_literal_declarations.rs
      • Stats module/type → stats::Stats
      • Codemod_exports_annotator — functor instantiation; in Rust used inline as codemod_annotator::Mapper<'_, '_, Stats>
      • Acc — functor instantiation; in Rust used inline as flow_services_code_action::insert_type_utils::Acc<Stats>
      • mapperAnnotateLiteralDeclarationsMapper
    • annotate_optional_properties.ml → flow_codemods/src/annotate_optional_properties.rs
      • prop_data type → PropData
      • PropDataSet
      • prop_accesses
      • data_of_prop_missing_error
      • ErrorStats module/type → error_stats::ErrorStats
      • Codemod_lti_annotator — functor instantiation; in Rust used inline as codemod_annotator::Mapper<'_, '_, ErrorStats>
      • Acc — functor instantiation; in Rust used inline as flow_services_code_action::insert_type_utils::Acc<ErrorStats>
      • mapperAnnotateOptionalPropertiesMapper
    • remove_react_import.ml → flow_codemods/src/remove_react_import.rs
      • RemoveReactImportStats module/type → remove_react_import_stats::RemoveReactImportStats
      • Acc
      • react_import_def_loc_opt_of_stmt
      • has_unaccounted_react_value_usage_visitorHasUnaccountedReactValueUsageVisitor
      • mapperRemoveReactImportMapper
  • commands/
    • config/
      • flowConfig.ml → flow_config/src/flowconfig.rs
        • file_watcher type → FileWatcher
        • lazy_mode type → LazyMode
        • config type → FlowConfig (pub fields)
        • warning type → Warning
        • error type → Error
        • config_result type — Rust uses Result<(FlowConfig, Vec<Warning>, String), Error> directly
        • getget
        • get_hash — not needed separately; get returns the hash as the third tuple element
        • get_with_hash — same as get in Rust (always returns config + warnings + hash)
        • get_with_ignored_versionget_with_ignored_version
        • empty_config
        • init
        • write
        • Getter functions below are intentionally omitted: in OCaml, config is an abstract type requiring accessor functions. In Rust, FlowConfig and Opts have public fields, so callers access config.ignores, config.options.all, etc. directly. No getters needed.
        • ignoresconfig.ignores
        • untypedconfig.untyped
        • declarationsconfig.declarations
        • includesconfig.includes
        • libsconfig.libs
        • enabled_rolloutsconfig.rollouts (callers map .enabled_group directly)
        • lint_severitiesconfig.lint_severities
        • strict_modeconfig.strict_mode
        • required_versionconfig.version
        • All config.options.* getters — direct field access on config.options
    • extra/
      • facebook/
        • extra_commands.ml — internal body unported; OSS stub + cfg(fbcode_build) gate live in flow_cli/src/extra_commands.rs
    • glean/
      • gleanCommand.ml → flow_cli/src/glean_command.rs
      • gleanRunner.ml → flow_cli/src/glean_runner.rs
        • module DocumentationFullspanMapmod documentation_fullspan_map
          • doc_span type → DocSpan
          • combine
          • create
        • class member_searcherstruct MemberSearcher
        • class type_reference_searcherstruct TypeReferenceSearcher
        • remove_dot_flow_suffix
        • module_of_module_ref
        • loc_of_index
        • loc_of_def
        • source_of_type_exports
        • export_of_export_name
        • type_import_declarations
        • type_declaration_references
        • extract_member_def
        • member_declaration_references
        • import_declarations
        • loc_of_obj_value_prop
        • loc_of_obj_annot_prop
        • source_of_exports
        • local_declaration_references
        • class declaration_info_collector
        • module_documentations
        • declaration_infos
        • file_of_string_modules
        • file_liness
        • all_schema_version
        • flow_schema_version
        • create_typed_runner_configimpl SimpleTypedRunnerConfig for GleanRunnerConfig
          • check_options
          • expand_roots
          • reporter
          • visit
        • make
      • gleanSchema.ml → flow_cli/src/glean_schema.rs
      • offset_cache.ml → flow_cli/src/offset_cache.rs
    • applyCodeActionCommand.ml → flow_cli/src/apply_code_action_command.rs
    • astCommand.ml → flow_cli/src/ast_command.rs
    • autocompleteCommand.ml → flow_cli/src/autocomplete_command.rs
    • autofixCommand.ml → flow_cli/src/autofix_command.rs
    • batchCoverageCommand.ml → flow_cli/src/batch_coverage_command.rs
    • foregroundCheckCommands.ml → flow_cli/src/foreground_check_commands.rs
    • checkContentsCommand.ml → flow_cli/src/check_contents_command.rs
    • codemodCommand.ml → flow_cli/src/codemod_command.rs
    • commandConnect.ml → flow_cli/src/command_connect.rs
    • commandConnectSimple.ml → flow_cli/src/command_connect_simple.rs
    • commandInfo.ml → unnecessary interface
    • commandMeanKill.ml → flow_cli/src/command_mean_kill.rs
    • commandSpec.ml → flow_cli/src/command_spec.rs
    • commandUtils.ml → flow_cli/src/command_utils.rs
      • run_command
      • expand_file_list
      • get_filenames_from_input
      • print_version
      • expand_path
      • collect_error_flags
      • warning_flagsadd_warning_flags
      • profile_flagadd_profile_flag
      • error_flagsadd_error_flags
      • collect_json_flags — inlined in get_json_flags
      • json_flagsadd_json_flags
      • temp_dir_flagadd_temp_dir_flag
      • collect_lazy_flags — inlined in get_connect_flags
      • lazy_flagsadd_lazy_flags
      • input_file_flagadd_input_file_flag
      • verbose_focus_flagadd_verbose_focus_flag
      • type shared_mem_paramsstruct SharedMemParams
      • collect_shm_flagsget_shm_flags
      • shm_flagsadd_shm_flags
      • shm_config
      • from_flagadd_from_flag
      • from_flag (collector logic) → apply_from_flag + default_from_flag
      • strip_root_flagadd_strip_root_flag
      • wait_for_recheck_flagadd_wait_for_recheck_flag
      • vpn_less_flagadd_vpn_less_flag
      • path_flagadd_path_flag
      • autostop_flagadd_autostop_flag
      • verbose_flagsadd_verbose_flags + verbose_flags
      • slow_to_check_logging_flagsadd_slow_to_check_logging_flags
      • quiet_flagadd_quiet_flag
      • type on_mismatch_behaviorenum OnMismatchBehavior
      • on_mismatch_flagadd_on_mismatch_flag
      • root_flagadd_root_flag
      • ignore_version_flagadd_ignore_version_flag
      • log_file_flagsadd_log_file_flags + get_log_file_flags
      • type offset_styleenum OffsetStyle
      • offset_style_flagadd_offset_style_flag + get_offset_style
      • offset_kind_of_offset_style
      • flowconfig_multi_error
      • flowconfig_multi_warn
      • read_config_or_exit
      • read_config_and_hash_or_exit
      • check_version
      • assert_version
      • type flowconfig_paramsstruct FlowconfigFlags
      • list_of_string_arg
      • collect_flowconfig_flags — inlined in get_options_flags
      • remove_exclusion
      • file_options — inlined in make_options
      • file_options_of_flowconfig
      • ignore_flagadd_ignore_flag
      • untyped_flagadd_untyped_flag
      • declaration_flagadd_declaration_flag
      • include_flagadd_include_flag
      • lib_flagadd_lib_flag
      • lints_flagadd_lints_flag
      • no_restart_flagadd_no_restart_flag
      • flowconfig_flagsadd_flowconfig_flags
      • type connect_paramsstruct ConnectParams
      • collect_connect_flagsget_connect_flags
      • collect_connect_flags_without_lazy — inlined in add_connect_flags_no_lazy
      • connect_flags_with_lazy_collectoradd_connect_flags_with_lazy_collector
      • connect_flags_no_lazyadd_connect_flags_no_lazy
      • connect_flagsadd_connect_flags
      • connect_and_json_flagsadd_connect_and_json_flags + get_connect_and_json_flags
      • server_log_file
      • monitor_log_file
      • module Options_flags / type tstruct OptionsFlags
      • module Saved_state_flags / type tstruct SavedStateFlags
      • module Base_flags / type tstruct BaseFlags
      • parse_lints_flag
      • options_flags (incl. collect_options_flags) → add_options_flags + get_options_flags
      • saved_state_flags (incl. collect_saved_state_flags) → add_saved_state_flags + get_saved_state_flags
      • flowconfig_name_flagadd_flowconfig_name_flag
      • base_flagsadd_base_flags + get_base_flags
      • default_file_watcher_timeoutDEFAULT_FILE_WATCHER_TIMEOUT
      • default_file_watcher_mergebase_withDEFAULT_FILE_WATCHER_MERGEBASE_WITH
      • file_watcher_flagfile_watcher_flag + file_watcher_arg + add_file_watcher_flags
      • options_and_json_flagsadd_options_and_json_flags
      • json_version_flagadd_json_version_flag + get_json_version
      • no_cgroup_flag (incl. get_systemd_binary, can_run_systemd, exec_in_cgroup_if_systemd_available, collect_no_cgroup_flag) → add_no_cgroup_flag + maybe_run_in_cgroup + exec_in_cgroup_if_systemd_available
      • get_temp_dir
      • make_options
      • make_env
      • search_for_root
      • guess_root
      • find_a_root
      • get_the_root
      • convert_input_pos
      • get_path_of_file
      • get_file_from_filename_or_stdin
      • parse_location_with_optional_filename
      • exe_name
      • connect_and_make_request (recursive inner) → connect_and_make_request_inner
      • connect_and_make_request (outer with timeout)
      • failwith_bad_response
      • get_check_or_status_exit_code
      • choose_file_watcher
      • choose_file_watcher_mergebase_with
      • choose_file_watcher_timeout
      • subcommand_spec
      • type codemod_paramsstruct CodemodParams
      • collect_codemod_flagsget_codemod_flags
      • codemod_flagsadd_codemod_flags
    • configCommand.ml → flow_cli/src/config_command.rs
    • coverageCommand.ml → flow_cli/src/coverage_command.rs
    • cycleCommand.ml → flow_cli/src/cycle_command.rs
    • dumpImplDepsCommand.ml → flow_cli/src/dump_impl_deps_command.rs
    • dumpTypesCommand.ml → flow_cli/src/dump_types_command.rs
    • envBuilderDebugCommand.ml → flow_cli/src/env_builder_debug_command.rs
    • findModuleCommand.ml → flow_cli/src/find_module_command.rs
    • forceRecheckCommand.ml → flow_cli/src/force_recheck_command.rs
    • getDefCommand.ml → flow_cli/src/get_def_command.rs
    • graphCommand.ml → flow_cli/src/graph_command.rs
    • initCommand.ml → flow_cli/src/init_command.rs
    • inlayHintCommand.ml → flow_cli/src/inlay_hint_command.rs
    • llmContextCommand.ml → flow_cli/src/llm_context_command.rs
    • lsCommand.ml → flow_cli/src/ls_command.rs
    • lspCommand.ml → flow_cli/src/lsp_command.rs
    • saveStateCommand.ml → flow_cli/src/save_state_command.rs
    • serverCommand.ml → flow_cli/src/server_command.rs
    • shellCompleteCommand.ml → flow_cli/src/shell_complete_command.rs
    • startCommand.ml → flow_cli/src/start_command.rs
    • statusCommands.ml → flow_cli/src/status_command.rs
    • stopCommand.ml → flow_cli/src/stop_command.rs
    • typeAtPosCommand.ml → flow_cli/src/type_at_pos_command.rs
    • typeOfNameCommand.ml → flow_cli/src/type_of_name_command.rs
    • versionCommand.ml → flow_cli/src/version_command.rs
  • common/
    • audit/
      • expensive.ml
    • bitset/
      • bitset.ml → flow_common/src/bitset.rs
        • all_one
        • all_zero
        • from_int_unchecked
        • is_subset
        • mem
        • no_overlap
        • set
        • to_int
        • unset
        • compare#[derive(Ord)]
        • equal#[derive(Eq)]
        • max_sizeconst MAX_SIZE
        • to_stringimpl Display
    • build_id/
      • flow_build_id.ml → flow_common_build_id/src/lib.rs
        • get_build_id
    • cycle_hash/
      • tests/
        • cycle_hash_test.ml
      • cycle_hash.ml → flow_common_cycle_hash/src/lib.rs
        • create_cx
        • create_node
        • collect_scc
        • calc_cycle_hash
        • strongconnect
        • root
        • read_hash
    • dirent/
      • dirent.ml
    • errors/
      • error_codes.ml → flow_common_errors/src/error_codes.rs
      • flow_errors_utils.ml → flow_common_errors/src/error_utils.rs
        • capitalize
        • code
        • code_of_printable_error
        • conjunction_concat
        • deprecated_json_props_of_loc
        • desc
        • desc_of_reason_desc
        • format_errors
        • format_single_styled_error_for_vscode
        • full_status_json_of_errors
        • hardcoded_string_desc_ref
        • json_of_errors_with_context
        • kind_of_printable_error
        • loc_of_printable_error
        • lsp_of_error
        • message_of_string
        • mk_error
        • mk_speculation_error
        • no_desc_ref
        • no_desc_ref_map
        • patch_misplaced_error
        • patch_unsuppressable_error
        • print_errors
        • ref
        • ref_map
        • string_of_kind
        • string_of_loc
        • text
    • exit/
      • exit.ml → flow_common_exit/src/lib.rs
        • set_json_mode
        • unset_json_mode
        • exit
    • exit_status/
      • flowExitStatus.ml → flow_common_exit_status/src/lib.rs
        • json_props_of_t
    • fuzzy_score/
      • tests/
        • fuzzy_score_test.ml
      • fuzzy_score.ml → flow_services_export/src/fuzzy_path/score_match.rs
    • leb128/
      • tests/
        • leb128_tests.ml → flow_common_leb128/src/unsigned.rs
      • leb128.ml → flow_common_leb128/src/unsigned.rs
        • readunsigned::read()
        • writeunsigned::write()
    • lints/
      • exactCover.ml → flow_lint_settings/src/lint_severity_cover.rs
        • new_builderBuilder::new()
        • update_rangeBuilder::update_range()
        • update_settingsBuilder::update_settings()
        • update_settings_and_runningBuilder::update_settings_and_running()
        • bakeBuilder::bake()
        • findLintSeverityCover::find()
        • find_optLintSeverityCover::find_opt()
        • get_severityLintSeverityCover::get_severity()
        • is_explicitLintSeverityCover::is_explicit()
        • to_stringLintSeverityCover::to_debug_string()
      • lintSettings.ml → flow_lint_settings/src/lint_settings.rs
        • of_defaultLintSettings::of_default()
        • set_valueLintSettings::set_value()
        • set_allLintSettings::set_all()
        • get_defaultLintSettings::get_default()
        • get_valueLintSettings::get_value()
        • is_explicitLintSettings::is_explicit()
        • get_locLintSettings::get_loc()
        • iterLintSettings::iter()
        • foldLintSettings::fold()
        • mapLintSettings::replace_with_mapped()
        • empty_severitiesLintSettings::empty_severities()
        • default_severitiesLintSettings::default_severities()
        • is_enabledLintSettings::is_enabled()
        • of_linesLintSettings::of_lines()
        • to_stringLintSettings::to_debug_string()
      • lints.ml → flow_lint_settings/src/lints.rs (2/2 functions, 100% complete)
        • string_of_kindLintKind::as_str()
        • kinds_of_stringLintKind::parse_from_str()
      • severity.ml → flow_lint_settings/src/severity.rs (6/6 functions, 100% complete)
        • string_of_severitySeverity::as_str()
        • output_string_of_severitySeverity::as_output_str()
        • severity_of_stringSeverity::severity_of_str()
        • severity_cmpOrd trait derive (automatic via PartialOrd/Ord)
        • severity_minSeverity::min_of()
        • severity_maxSeverity::max_of()
      • strictModeSettings.ml → flow_lint_settings/src/strict_mode_settings.rs
        • empty
        • fold
        • iter
        • of_lines
    • logging_utils/
      • loggingUtils.ml → flow_logging_utils/src/lib.rs
        • hh_logger_level_of_env
        • set_hh_logger_min_level
        • init_loggers
        • set_server_options
        • dump_server_options
        • disable_logging (only disables flow_event_logger; EventLogger and FlowInteractionLogger calls are not ported)
    • lwt/
      • tests/
        • lwtTimeout_test.ml
        • lwtUtils_test.ml
        • lwt_test_utils.ml
        • lwt_tests.ml
      • lwtInit.ml
      • lwtLoop.ml
      • lwtSysUtils.ml
      • lwtTimeout.ml
      • lwtUtils.ml
    • lz4/
      • lz4.ml → lz4_flex crate
    • modulename/
      • haste_module_info.ml → flow_common_modulename/src/haste_module_info.rs
        • mk
        • module_name
        • namespace_bitset
        • compareimpl Ord
        • equal#[derive(Eq)]
        • to_stringimpl Display
      • modulename.ml → flow_common_modulename/src/modulename.rs
        • Modulename enum (Haste/Filename variants)
        • ModulenameSet type alias
        • ModulenameMap type alias
    • monad/
      • stateResult.ml → unnecessary monad in rust
    • packed_locs/
      • tests/
        • packed_locs_tests.ml → flow_packed_locs/src/packed_locs.rs (inline tests)
      • packed_locs.ml → flow_packed_locs/src/packed_locs.rs
        • compare_locs
        • pack
        • unpack
    • profiling/
      • memory_utils.ml
      • profiling_js.ml
    • semver/
      • tests/
        • semver_parser_test.ml → flow_common_semver/src/semver_parser.rs (inline tests)
        • semver_range_test.ml → flow_common_semver/src/semver_range.rs (inline tests)
        • semver_tests.ml → flow_common_semver/src/semver.rs (inline tests; OUnit aggregator dropped)
        • semver_version_test.ml → flow_common_semver/src/semver_version.rs (inline tests)
      • cli/
        • main.ml
      • semver.ml → flow_common_semver/src/semver.rs
      • semver_comparator.ml → flow_common_semver/src/semver_comparator.rs
      • semver_lexer.mll → flow_common_semver/src/semver_lexer.rs
      • semver_parser.mly → flow_common_semver/src/semver_parser.rs
      • semver_range.ml → flow_common_semver/src/semver_range.rs
      • semver_version.ml → flow_common_semver/src/semver_version.rs
    • span/
      • spanMap.ml → flow_common/src/span_map.rs
    • tarjan/
      • tests/
        • tarjan_test.ml → flow_common_tarjan/src/tarjan_test.rs
      • tarjan.ml → flow_common_tarjan/src/lib.rs
        • topsort
        • compare (TarjanNode trait method)
        • find (TarjanMap trait method + Graph impl)
        • to_string (TarjanNode trait method)
    • test_utils/
      • test_utils.ml
    • transaction/
      • transaction.ml → flow_common_transaction/src/lib.rs
        • add
        • commit
        • rollback
        • with_transaction_sync
    • ty/ → flow_common_ty/src/
      • tests/
        • ty_printer_test.ml → flow_common_ty/src/ty_printer_test.rs
        • ty_simplifier_test.ml → flow_common_ty/src/ty_simplifier_test.rs
        • ty_tests.ml → simply an entrypoint of the above two
      • ty.ml → flow_common_ty/src/ty.rs
        • bk_unionbk_union()
        • bk_interbk_inter()
        • mk_unionmk_union()
        • mk_intermk_inter()
        • explicit_anyexplicit_any()
        • is_dynamicis_dynamic()
        • mk_maybemk_maybe()
        • mk_generic_classmk_generic_class()
        • mk_generic_interfacemk_generic_interface()
        • mk_generic_taliasmk_generic_talias()
        • mk_exactmk_exact()
        • mk_arraymk_array()
        • debug_string_of_generic_kinddebug_string_of_generic_kind()
        • string_of_utility_ctorstring_of_utility_ctor()
        • types_of_utilitytypes_of_utility()
        • string_of_prop_sourcestring_of_prop_source()
        • Type definitions (t, decl, elt, etc.) → enums/structs
        • Visitor classes → ComparatorTy in ty_utils
        • symbols_of_eltsymbols_of_elt()
        • map_loc_symbol - Symbol::map_locs
      • ty_ancestors.ml → flow_common_ty/src/ty_ancestors.rs (6/6 traits, 100% complete)
        • class iter_ty_basetrait TyIterBase<Env, L>
        • class iter2_ty_basetrait TyIter2Base<Env, L>
        • class map_ty_basetrait TyMapBase<Env, L>
        • class endo_ty_basetrait TyEndoBase<Env, L>
        • class reduce_ty_basetrait TyReduceBase<Env, L> + trait Monoid
        • class mapreduce_ty_basetrait TyMapReduceBase<Env, L>
      • ty_debug.ml → flow_common_ty/src/ty_debug.rs
        • Debug trait implementations for all Ty types
      • ty_printer.ml → flow_common_ty/src/ty_printer.rs
        • better_quotebetter_quote()
        • property_key_quotes_neededproperty_key_quotes_needed()
        • string_of_eltstring_of_elt()
        • string_of_elt_single_linestring_of_elt_single_line()
        • string_of_decl_single_linestring_of_decl_single_line()
        • string_of_tstring_of_t()
        • string_of_t_single_linestring_of_t_single_line()
        • string_of_symbol_setstring_of_symbol_set()
        • string_of_type_at_pos_resultstring_of_type_at_pos_result()
        • utf8_escapeutf8_escape()
      • ty_serializer.ml → flow_common_ty/src/ty_serializer.rs (1/1 functions, 100% complete)
        • type_Serializer::type_()
        • type optionsstruct SerializerOptions
      • ty_symbol.ml → flow_common_ty/src/ty_symbol.rs (1/1 functions, 100% complete)
        • builtin_symbolbuiltin_symbol()
        • Type definitions (import_mode, imported_ident_, etc.) → enums/structs
      • ty_utils.ml → flow_common_ty/src/ty_utils.rs (9/9 functions, 100% complete)
        • size_of_typesize_of_type()
        • size_of_eltsize_of_elt()
        • simplify_typesimplify_type()
        • simplify_declsimplify_decl()
        • simplify_eltsimplify_elt()
        • unmaybe_tyunmaybe_ty()
        • elt_equalelt_equal()
        • typify_elttypify_elt()
        • reinterpret_elt_as_type_identifierreinterpret_elt_as_type_identifier()
    • utils/
      • tests/
        • bitset_test.ml → flow_common/src/bitset.rs (inline tests)
        • cache_test.ml → flow_common_utils/src/cache.rs (inline tests)
        • common_utils_tests.ml → irrelevant (OUnit aggregator, replaced by cargo test discovery)
        • graph_test.ml → flow_common_utils/src/graph.rs (inline tests)
        • line_test.ml → flow_common_utils/src/line.rs (inline tests)
        • nel_test.ml → irrelevant
        • resizableArray_test.ml → irrelevant
      • checked_set/
        • checkedSet.ml → flow_common_utils/src/checked_set.rs
          • add
          • all
          • cardinal
          • debug_counts_to_string
          • debug_equal
          • debug_to_string
          • dependencies
          • dependencies_cardinal
          • dependents
          • dependents_cardinal
          • diff
          • empty
          • filter
          • focused
          • focused_cardinal
          • is_dependency
          • is_dependent
          • is_empty
          • is_focused
          • mem
          • mem_dependency
          • mem_dependent
          • mem_focused
          • of_focused_list
          • partition_dependencies
          • remove
          • union
      • filename_cache/
        • filenameCache.ml → flow_common_utils/src/filename_cache.rs
          • include Cache.Make (Utils_js.FilenameMap) surface → type Cache<V> = crate::cache::Cache<FileKey, V> plus wrapper fns
          • make
          • clear
          • remove_entry
          • get_from_cache
          • with_cache
          • with_cache_sync
      • loc_utils/
        • loc_collections.ml → unnecessary
        • loc_sig.ml → flow_parser/src/loc_sig.rs
      • cache.ml → flow_common_utils/src/cache.rs
        • Make functor → Cache<K, V> impl
        • make
        • clear
        • remove_entry
        • get_from_cache
        • with_cache
        • with_cache_sync
      • cache_sig.ml → unnecessary in rust (public API is in flow_common_utils/src/cache.rs)
      • graph.ml → flow_common_utils/src/graph.rs
      • graph_sig.ml → unnecessary
      • line.ml → flow_common_utils/src/line.rs
      • listUtils.ml
      • nel.ml → unnecessary in rust, use Vec1
      • optionUtils.ml
      • resizableArray.ml → Vec in rust
      • sMapUtils.ml
      • utils_js.ml → flow_common_utils/src/utils_js.rs
      • utils_jsx.ml → flow_common_utils/src/utils_jsx.rs
    • vcs/
      • eden.ml → flow_common_vcs/src/eden.rs
      • git.ml → flow_common_vcs/src/git.rs
      • hg.ml → flow_common_vcs/src/hg.rs
      • vcs.ml → flow_common_vcs/src/vcs.rs
      • vcs_utils.ml → flow_common_vcs/src/vcs_utils.rs
    • xx/
      • tests/
        • xx_tests.ml
      • xx.ml → flow_common_xx/src/lib.rs
        • initState::new
        • updateState::update
        • update_intState::update_int
        • update_int64State::update_int64
        • digestState::digest
        • hash
        • XxHasher (Rust-only: std::hash::Hasher adapter over State)
        • content_hash_of (Rust-only: replaces Type_sig_bin.hash_serialized for structured data)
        • equal → derived Eq on u64
        • to_string → unnecessary for u64
        • modulo
        • pp_hash → unnecessary for u64
    • docblock.ml → flow_common/src/docblock.rs
    • enclosing_context.ml →
      • EnclosingContext enum with variants
      • is_conditional_test_context
    • files.ml → flow_common/src/files.rs
      • absolute_path
      • chop_flow_ext
      • chop_platform_suffix_for_file
      • chop_platform_suffix_for_haste_module
      • construct_path
      • expand_builtin_root_token
      • expand_project_root_token
      • filename_from_string
      • get_all_watched_extensions
      • grouped_platform_extension_opt
      • has_flow_ext
      • haste_name_opt
      • is_declaration
      • is_flow_file
      • is_ignored
      • is_in_flowlib
      • is_included
      • is_json_file
      • is_prefix
      • is_untyped
      • is_valid_path
      • is_within_node_modules
      • make_next_files
      • make_path_absolute
      • module_declaration_dirnames
      • module_file_exts
      • node_resolver_dirnames
      • normalize_path
      • platform_specific_extensions_and_indices_opt
      • relative_interface_mref_of_possibly_platform_specific_file
      • relative_path
      • split_path
      • wanted
      • watched_paths
      • absolute_path_regexpABSOLUTE_PATH_REGEXP lazy_static
      • canonicalize_filenamescanonicalize_filenames()
      • current_dir_nameCURRENT_DIR_NAME lazy_static
      • default_lib_dir → pub field on FileOptions
      • default_optionsDefault::default() impl for FileOptions
      • dir_sepDIR_SEP lazy_static
      • eponymous_module → in flow_common_modulename crate (circular dep)
      • flow_extpub const FLOW_EXT
      • get_allget_all()
      • get_flowtyped_pathget_flowtyped_path()
      • global_file_namepub const GLOBAL_FILE_NAME
      • ignores → pub field on FileOptions
      • imaginary_realpathimaginary_realpath()
      • implicitly_include_root → pub field on FileOptions
      • includes → pub field on FileOptions
      • mk_options → pub struct construction for FileOptions
      • mkdirpmkdirp()
      • module_resource_exts → pub field on FileOptions
      • multi_platform → pub field on FileOptions
      • multi_platform_extension_group_mapping → pub field on FileOptions
      • multi_platform_extensions → pub field on FileOptions
      • node_modules_containers → parameter passing (intentional Rust idiom)
      • ordered_and_unordered_lib_paths
      • parent_dir_namePARENT_DIR_NAME lazy_static
      • untyped → pub field on FileOptions
    • flowSymbol.ml → flow_common/src/flow_symbol.rs (100% complete)
      • kind type → SymbolKind enum (all 16 variants)
      • string_of_kindSymbolKind::as_str()
      • symbol type → Symbol(Arc<SymbolInner>)
      • mk_symbolSymbol::new()
      • mk_class_symbolSymbol::mk_class_symbol()
      • mk_component_symbolSymbol::mk_component_symbol()
      • mk_constant_symbolSymbol::mk_constant_symbol()
      • mk_enum_symbolSymbol::mk_enum_symbol()
      • mk_module_symbolSymbol::mk_module_symbol()
      • mk_namespace_symbolSymbol::mk_namespace_symbol()
      • mk_type_alias_symbolSymbol::mk_type_alias_symbol()
      • mk_type_parameter_symbolSymbol::mk_type_parameter_symbol()
      • mk_variable_symbolSymbol::mk_variable_symbol()
      • kind_of_symbolSymbol::kind()
      • name_of_symbolSymbol::name()
      • def_loc_of_symbolSymbol::def_loc_of_symbol()
      • dump_symboldump_symbol()
      • dump_symbol_optdump_symbol_opt()
    • flow_import_specifier.ml → flow_common/src/flow_import_specifier.rs (5/5 functions, 100% complete)
      • userlandUserland::from_smol_str() (constructor)
      • display_userlandUserland::display()
      • map_userlandUserland::map()
      • unwrap_userlandUserland::into_inner() / Userland::as_str()
      • userland_specifierFlowImportSpecifier::userland()
    • flow_lsp_conversions.ml → flow_server_env/src/flow_lsp_conversions.rs
      • markup_string
      • selection_range_of_loc
      • func_details_result_to_lsp
      • flow_signature_help_to_lsp
      • flow_completion_item_to_lsp
      • flow_completions_to_lsp
      • file_key_to_uri
      • loc_to_lsp
      • loc_to_lsp_with_default
      • flow_edit_to_textedit
      • lsp_DocumentIdentifier_to_flow_path
      • position_of_document_position
      • diagnostics_of_flow_errors
      • synthetic_diagnostics_of_switch_to_match_eligible_locations
      • synthetic_diagnostics_of_refined_locations
    • flow_projects.ml → flow_common/src/flow_projects.rs
      • default_optionsProjectsOptions::default() (via Default trait)
      • mk_optionsProjectsOptions::mk()
      • from_bitset_uncheckedFlowProjects::from_bitset_unchecked()
      • to_bitsetFlowProjects::to_bitset()
      • bitset_of_project_stringFlowProjects::from_project_str()
      • projects_bitset_of_pathFlowProjects::from_path()
      • is_common_code_pathProjectsOptions::is_common_code_path()
      • projects_strict_boundary_validate_import_pattern_opt_outsProjectsOptions::projects_strict_boundary_validate_import_pattern_opt_outs()
      • is_import_specifier_that_opt_out_of_strict_boundaryProjectsOptions::is_import_specifier_that_opt_out_of_strict_boundary()
      • reachable_projects_bitsets_from_projects_bitsetProjectsOptions::reachable_projects_bitsets_from_projects_bitset()
      • individual_projects_bitsets_from_common_project_bitsetProjectsOptions::individual_projects_bitsets_from_common_project_bitset()
      • individual_projects_bitsets_from_common_project_bitset_excluding_firstProjectsOptions::individual_projects_bitsets_from_common_project_bitset_excluding_first()
      • multi_platform_ambient_supports_platform_for_projectProjectsOptions::multi_platform_ambient_supports_platform_for_project()
      • equal (FlowProjects has PartialEq derive)
    • flow_version.ml → flow_common/src/flow_version.rs
    • hint.ml → flow_common/src/hint.rs (6/6 functions, 100% complete)
      • string_of_predicate_kindstring_of_predicate_kind()
      • string_of_hint_unknown_kindHintDecomposition::to_debug_string()
      • string_of_hintsHint::string_of_hints()
      • decompose_hintsHint::decompose()
      • map_decomp_opHintDecomposition::map()
      • mapHint::map()
    • js_number.ml → flow_common/src/js_number.rs
      • is_float_safe_integer
      • max_safe_integerpub const MAX_SAFE_INTEGER
      • min_safe_integerpub const MIN_SAFE_INTEGER
    • nameUtils.ml → irrelevant (directly use BTreeMap)
    • options.ml → flow_common/src/options.rs
    • path_matcher.ml → flow_common/src/path_matcher.rs
      • empty
      • matches
      • stems
      • addPathMatcher::add_path
    • platform_set.ml → flow_common/src/platform_set.rs
      • available_platforms
      • is_subset
      • no_overlap
      • platform_specific_implementation_mrefs_of_possibly_interface_file
      • to_platform_string_set
    • reason.ml → flow_common/src/reason.rs
      • code_desc_of_expression
      • code_desc_of_pattern
      • concretize_equal
      • dump_reason
      • func_reason
      • in_range
      • invalidate_rtype_aliasVirtualReasonDesc::invalidate_rtype_alias()
      • is_array_reason
      • is_instantiable_reason
      • is_literal_array_reason
      • is_literal_function_reason
      • is_literal_object_reason
      • is_nullish_reason
      • is_record_reason
      • is_scalar_reason
      • locationless_reason
      • mk_expression_reason
      • mk_id
      • mk_initial_arguments_reason
      • mk_obj_lit_reason
      • mk_pattern_reason
      • mk_reason
      • mk_typed_expression_reason
      • react_element_desc_of_component_reason
      • string_of_aloc
      • string_of_desc
      • string_of_loc
      • string_of_reason
      • string_of_source
      • annot_loc_of_reasonVirtualReason::annot_loc()
      • def_loc_of_reasonVirtualReason::def_loc()
      • def_loc_opt_of_reasonVirtualReason::def_loc_opt()
      • desc_of_reasonVirtualReason::desc()
      • is_blamable_reasonVirtualReasonDesc::is_blamable()
      • is_lib_reasonVirtualReasonDesc::is_lib()
      • is_lib_reason_defVirtualReasonDesc::is_lib_def()
      • is_promise_reasonVirtualReasonDesc::is_promise()
      • is_scalar_reason_descVirtualReasonDesc::is_scalar()
      • loc_of_reasonVirtualReason::loc()
      • map_desc_locsVirtualReasonDesc::map_locs()
      • map_reason_locsVirtualReason::map_locs()
      • opt_annot_reasonVirtualReason::opt_annotate()
      • replace_desc_new_reasonVirtualReason::replace_desc_new()
      • replace_desc_reasonVirtualReason::replace_desc()
      • repos_reasonVirtualReason::reposition()
      • unwrap_reason_descVirtualReasonDesc::unwrap()
      • update_desc_new_reasonVirtualReason::update_desc_new()
      • update_desc_reasonVirtualReason::update_desc()
      • mk_annot_reasonmk_annot_reason()
      • display_string_of_nameDisplay for Name trait impl (also Name::as_str())
      • json_of_locjson_of_loc()
      • json_of_loc_propsjson_of_loc_props()
      • json_of_sourcejson_of_source()
      • json_source_type_of_sourcejson_source_type_of_source()
      • pp_virtual_reason_descjust use Debug
      • range_string_of_locrange_string_of_loc()
      • show_reason_desc_functionjust use Debug
      • show_virtual_reason_descjust use Debug
    • refinement_invalidation.ml → flow_common/src/refinement_invalidation.rs
      • Reason enum
      • RefinementInvalidation struct
      • singleton
      • string_of_reason
      • union
      • merge
    • relay_options.ml → flow_common/src/relay_options.rs
    • slow_to_check_logging.ml → flow_common/src/slow_to_check_logging.rs
    • subst_name.ml → flow_common/src/subst_name.rs
    • verbose.ml → flow_common/src/verbose.rs
  • facebook/
    • http/
      • flow_http_client.ml
    • codemods/
      • annotate_exports_hardcoded/
        • annotate_exports_hardcoded_expr_fixes.ml
        • hardcoded_module_fixes.ml
    • logging/
      • user/
        • fb_whoami.ml
      • flowEventLogger.ml
      • flowInteractionLogger.ml
      • log_saving.ml
    • rage/
      • flytrap.ml
      • rageCommand.ml
    • saved_state/
      • saved_state_fb_fetcher.ml
    • server_callable/
      • lib/
        • ast_visitor.ml
        • comments.ml
        • extract_flow_types.ml
        • extract_generate_mock.ml
        • extract_server_callable_component_base.ml
        • extract_server_callable_entrypoint.ml
        • extract_server_callable_instance.ml
        • extract_server_callables.ml
        • extract_typed_module_helpers.ml
        • fb_strings.ml
        • filesystem.ml
        • json_generator.ml
        • json_processer.ml
        • server_callable_errors.ml
        • server_callable_extraction_types.ml
        • server_callable_modifiers.ml
        • server_callable_scope.ml
        • visit_module_exports.ml
      • tests/
        • sc_snapshot_tests.ml
        • test.ml
      • server_callable_extract_metadata.ml
      • server_callable_extract_metadata_lib.ml
    • tools_infra/
      • runners/
        • command_runner.ml
  • flow.ml
  • flow_dot_js.ml
  • flowlib/
    • flowlib.ml → flow_flowlib/src/lib.rs
  • hack_forked/
    • dfind/
      • dfindAddFile.ml → flow_dfind/src/lib.rs
      • dfindEnv.ml → flow_dfind/src/lib.rs
      • dfindLibLwt.ml → flow_dfind/src/lib.rs
      • dfindMaybe.ml → flow_dfind/src/lib.rs
      • dfindServer.ml → flow_dfind/src/dfind_server.rs
    • facebook/
      • edenfs_watcher/
        • edenfs_watcher.ml → flow_edenfs_watcher/src/lib.rs (thin Rust wrapper over rust_edenfs_watcher::flow_api)
        • edenfs_watcher_types.ml → re-exported from rust_edenfs_watcher::types
      • logging/
        • scribe/
          • scribe.ml
        • eventLogger.ml
        • eventLoggerFlusher.ml
        • eventLoggerLwt.ml
        • eventLoggerState.ml
        • eventLoggerTypes.ml
        • sandcastle.ml
        • scuba.ml
        • uname_stubs.ml
    • find/
      • find.ml
    • fsevents/
      • fsevents.ml → rust notify crate
    • fsnotify_darwin/
      • fsnotify.ml → rust notify crate
    • fsnotify_linux/
      • fsnotify.ml → rust notify crate
    • fsnotify_win/
      • fsnotify.ml → rust notify crate
    • procs/
      • bucket.ml
      • worker.ml
      • workerController.ml
    • socket/
      • socket.ml → flow_common_socket/src/socket.rs
        • addr type → Socket::Addr
        • with_addr
        • get_path
        • addr_for_open
        • init_unix_socketflow_common_socket/src/socket.rs::init_tcp_socket
    • stubs/
      • logging/
        • common/
          • eventLogger.ml
          • scuba.ml
    • test/
      • facebook/
        • logging/
          • scribeCatTest.ml
          • scubaTableTest.ml
      • procs/
        • procs_test_utils.ml
        • procs_unit_test.ml
      • unit/
        • heap/
          • test_hashtbl.ml
          • test_removed.ml
        • utils/
          • buffered_line_reader_test.ml
          • collections_test.ml
          • file_url_test.ml
          • hh_json_test.ml
          • lsp_helpers_test.ml
          • string_utils_test.ml
          • timeout_test.ml
          • timer_test.ml
        • unit_test.ml
      • utils/
        • asserter/
          • asserter.ml
        • disk/
          • diskTest.ml
          • test_disk_utils.ml
        • tempfile/
          • tempfile.ml
      • watchman/
        • watchman_unit_test.ml
    • utils/
      • buffered_line_reader/
        • buffered_line_reader.ml
        • buffered_line_reader_lwt.ml
        • buffered_line_reader_sig.ml
      • build_mode/
        • dev/
          • build_mode.ml → cfg(debug_assertions)
        • prod/
          • build_mode.ml → cfg(debug_assertions)
      • cgroup/
        • cGroup.ml → flow_server/src/cgroup.rs
      • collections/
        • third-party/
          • flow_map.ml → irrelevant, (use BTreeMap, HashMap or FlowOrdMap)
          • flow_set.ml → irrelevant (use BTreeSet, HashSet or FlowOrdSet)
        • iMap.ml → irrelevant (directly use things like BTreeMap<i32, T>)
        • iSet.ml → irrelevant (directly use things like BTreeSet<i32>)
        • immQueue.ml → irrelevant (directly use queue in rust)
        • intKey.ml → irrelevant (only useful for iMap, but iMap is useless in Rust)
        • priorityQueue.ml
        • sMap.ml → irrelevant (directly use things like BTreeMap<String>)
        • sSet.ml → irrelevant (directly use things like BTreeSet<String>)
        • stringKey.ml → irrelevant (only useful for sMap, but sMap is useless in Rust)
        • union_find.ml → flow_utils_union_find/src/lib.rs (6/6 functions, 100% complete)
          • create_rootNode::create_root()
          • create_gotoNode::create_goto()
          • find_rootGraph::find_root()
          • find_root_idGraph::find_root_id()
          • find_constraintsGraph::find_constraints()
          • find_graphGraph::find_graph()
        • wrappedMap.ml → irrelevant, (use BTreeMap, HashMap or FlowOrdMap)
        • wrappedMap_sig.ml → irrelevant, (use BTreeMap, HashMap or FlowOrdMap)
      • core/
        • build_id.ml
        • exception.ml
        • hh_logger.ml
        • measure.ml
        • random_id.ml
        • utils.ml
      • disk/
        • disk.ml
      • file_content/
        • file_content.ml
      • file_url/
        • file_url.ml
      • hh_json/
        • hh_json.ml → flow_hh_json/src/lib.rs (partial: JSON printing functions only)
          • json_string_of_value
          • json_to_multiline
          • print_json_endline
          • prerr_json_endline
        • hh_json_helpers.ml
      • http_lite/
        • tests/
          • http_lite_test.ml
        • http_lite.ml
      • jsonrpc/
        • jsonrpc.ml
      • lsp/
        • tests/
          • lsp_fmt_test.ml
        • lsp.ml → lsp_types crate (standard LSP types) + flow_monitor_rpc/src/lsp_prot.rs (Flow extensions)
        • lsp_fmt.ml
        • lsp_helpers.ml → flow_server_env/src/lsp_helpers.rs
          • lsp_uri_to_path
          • path_to_lsp_uri
          • lsp_textDocumentIdentifier_to_filename
          • lsp_position_to_fc
          • lsp_range_to_fc
          • lsp_edit_to_fc
          • apply_changes
          • get_char_from_lsp_position
          • apply_changes_unsafe
          • pos_compare
          • ranges_overlap
          • get_range_overlap
          • update_pos_due_to_prior_replace
          • update_range_due_to_replace
          • update_diagnostics_due_to_change
          • get_root
          • supports_codeActionKinds
          • supports_experimental_snippet_text_edit
          • supports_configuration
          • supports_status
          • supports_snippets
          • supports_tags
          • supports_preselect
          • supports_completion_item_insert_replace
          • supports_completion_item_label_details
          • supports_hierarchical_document_symbol
          • supports_connectionStatus
        • lsp_mapper.ml → flow_monitor_rpc/src/lsp_mapper.rs (uses lsp_types crate)
      • lsp_writers/
        • lsp_writers.ml
      • marshal_tools/
        • marshal_tools.ml
        • marshal_tools_lwt.ml
      • opaque_digest/
        • opaqueDigest.ml
      • procfs/
        • procFS.ml
      • string/
        • string_utils.ml (partial → flow_common/src/string_utils.rs)
          • filename_escape
      • sys/
        • tests/
          • sys_utils_tests.ml
        • daemon.ml → flow_daemon/src/daemon.rs
        • file_path.ml
        • fork.ml
        • handle.ml
        • lock.ml → flow_common/src/lock.rs (full port: grab, release, blocking_grab_then_release, fd_of, check)
        • pidLog.ml → flow_daemon/src/pid_log.rs
        • printSignal.ml
        • proc_utils.ml
        • sys_utils.ml (partial → flow_common/src/sys_utils.rs)
          • null_path
          • temp_dir_name
          • with_umask
          • expanduser
          • executable_path
          • mkdir_no_fail
          • pid_of_handle
          • normalize_filename_dir_sep
          • Other functions not ported
        • timeout.ml
        • timer.ml
        • tty.ml
    • watchman/
      • watchman.ml → flow_watchman/src/lib.rs
  • heap/
    • tests/
      • heap_tests.ml
    • entityHeap.ml → flow_heap/src/entity.rs
      • Not a direct port
    • heapIdent.ml
    • localCache.ml
    • prefix.ml
    • sharedMem.ml
    • workerCancel.ml
  • lsp/
    • tests/
      • lspErrors_test.ml → tests in flow_lsp/src/lsp_errors.rs
    • documentSymbolProvider.ml → flow_lsp/src/document_symbol_provider.rs
    • flowLsp.ml → flow_lsp/src/flow_lsp.rs (persistent TCP connection to standalone server, server auto-start/kill, LSP request keying, and connected-mode event loop are now functional; shared connect params live in flow_server_env/src/lsp_connect_params.rs; see remaining function-level gaps)
      • wrapped_id type → WrappedId
      • encode_wrapped
      • decode_wrapped
      • server_conn type → ServerConn
      • show_status_t type → ShowStatusT
      • open_file_info type → OpenFileInfo
      • initialized_env type → InitializedEnv
      • event type → Event
      • read_flowconfig_from_disk
      • string_of_server_state
      • string_of_state
      • to_stdout
      • get_ienv
      • update_ienv
      • update_recent_summaries
      • log_of_summaries
      • command_key_of_ienv
      • command_key_of_server_state
      • command_key_of_state
      • update_open_file
      • new_metadata
      • selectively_omit_errors
      • get_next_event_from_server (now uses persistent_rpc over TCP to poll for server messages)
      • get_next_event_from_client
      • get_next_event (now uses get_next_event_sync which polls both server and client)
      • convert_to_client_uris
      • convert_to_server_uris
      • send_request_to_client
      • show_status (Nuclide window/status capability is unported, so this only exercises the ShowMessage fallback path)
      • send_to_server (now uses persistent_rpc over TCP)
      • send_lsp_to_server
      • request_configuration
      • subscribe_to_config_changes
      • do_initialize
      • show_connected_status (status UX is downgraded because window/status support is not modeled)
      • track_to_server
      • track_from_server
      • parse_and_cache
      • do_documentSymbol
      • do_selectionRange
      • do_rage (log-file/temp-dir/PID-stack collection helpers are still unported, so rage output only includes adapter state)
      • parse_json
      • collect_interaction_state
      • gc_pending_interactions
      • start_interaction
      • log_interaction
      • dismiss_tracks
      • do_live_diagnostics
      • get_local_request_handler (no OCaml-style mistyped-handler validation; non-error results are dispatched through a generic closure path)
      • try_connect (now implements persistent TCP connection with server auto-start, stale server kill, and handshake via persistent_rpc)
      • log_needed type
      • run (main loop now polls both server and client via get_next_event_sync; still synchronous rather than Lwt-based, and no periodic tick/select)
      • get_next_event_sync (Rust-only: synchronous event multiplexer for server + client)
      • persistent_rpc (Rust-only: TCP-based server RPC for standalone mode)
      • try_decode_wrapped
      • lsp_fmt_parse_id
      • lsp_helpers_supports_status
      • lsp_helpers_supports_connection_status
      • lsp_helpers_lsp_uri_to_path
      • lsp_helpers_get_root
      • parse_lsp_request
      • lsp_fmt_print_code_action_result
      • start_flow_server
      • kill_stale_server
    • lspErrors.ml → flow_lsp/src/lsp_errors.rs
    • lspInteraction.ml → flow_lsp/src/lsp_interaction.rs
      • id type → Id
      • trigger type → Trigger
      • source type → Source
      • ux type → Ux
      • server_status type → ServerStatus
      • buffer_status type → BufferStatus
      • state type → State
      • string_of_trigger
      • lsp_id_of_trigger
      • string_of_ux
      • uri_of_ux
      • string_of_server_status
      • string_of_buffer_status
      • source_of_trigger
      • string_of_source
      • pending_interaction type → PendingInteraction
      • internal_state type → InternalState
      • start
      • recheck_start
      • log_pushed_errors
      • log
      • gc
      • dismiss_tracks
      • init
      • flush
      • trigger_of_lsp_msg
    • selectionRangeProvider.ml → flow_lsp/src/selection_range_provider.rs
  • monitor/
    • connections/
      • ephemeralConnection.ml → flow_server_monitor/src/flow_server_monitor_connection.rs (type alias EphemeralConnection)
      • flowServerMonitorConnection.ml → flow_server_monitor/src/flow_server_monitor_connection.rs
        • ConnectionProcessor trait, Command enum, Connection<P> generic struct
        • write, write_and_close, close_immediately, try_flush_and_close, is_closed, wait_for_closed, create
      • persistentConnection.ml → flow_server_monitor/src/flow_server_monitor_connection.rs (type alias MonitorPersistentConnection)
      • serverConnection.ml → flow_server_monitor/src/flow_server_monitor_connection.rs (type alias ServerConnection)
    • logger/
      • flowServerMonitorLogger.ml → flow_server_monitor/src/flow_server_monitor_logger.rs
        • dest type, WriteLoop (as synchronous log::Log), init_logger
        • fatal/error/warn/info/debug (async → log macros)
        • fatal_s/error_s/warn_s/info_s/debug_s (sync → log macros)
    • rpc/
      • monitorRPC.ml → flow_monitor_rpc/src/monitor_rpc.rs
        • channels type → Channels
        • state type → State
        • with_channel, with_infd, with_outfd
        • init, disable
        • read (structure ported, Marshal transport stubbed)
        • send (structure ported, Marshal transport stubbed)
        • respond_to_request, request_failed
        • respond_to_persistent_connection, send_telemetry
        • status_update
    • status/
      • fileWatcherStatus.ml → flow_monitor_rpc/src/file_watcher_status.rs
        • file_watcher type → FileWatcher
        • status' type → StatusKind
        • status type → Status
        • string_of_file_watcher
        • string_of_status
      • serverStatus.ml → flow_monitor_rpc/src/server_status.rs
        • progress type → Progress
        • deadline type → Deadline
        • event type → Event
        • typecheck_status type → TypecheckStatus
        • restart_reason type → RestartReason
        • typecheck_mode type → TypecheckMode
        • status type → Status
        • string_of_progress
        • string_of_event
        • string_of_typecheck_status
        • string_of_restart_reason
        • string_of_status
        • update
        • initial_statusINITIAL_STATUS
        • is_free
        • is_significant_transition
        • get_progress
        • change_init_to_restart
    • utils/
      • exitSignal.ml → flow_server_monitor/src/exit_signal.rs
        • signalSIGNAL (ExitCondition with Condvar+Mutex)
    • fileWatcher.ml → flow_server_monitor/src/file_watcher.rs
      • exit_reason type → ExitReason
      • watcher class type → Watcher trait
      • dummy class → Dummy struct
      • changes_since_mergebase, query_mergebase
      • dfind class → flow_server_monitor/src/file_watcher.rs::dfind_file_watcher
      • WatchmanFileWatcher module → watchman_file_watcher mod
      • EdenFSFileWatcher module → edenfs_file_watcher mod
    • flowServerMonitor.ml → flow_server_monitor/src/flow_server_monitor.rs
      • handle_waiting_start_command
      • fallback_error_handler
      • log_monitor_options
      • daemonize
      • start
    • flowServerMonitorDaemon.ml → flow_server_monitor/src/flow_server_monitor_daemon.rs
      • start_function type → StartFunction
      • wait_msg type → WaitMsg
      • state type → State
      • register_entry_point
      • wait_loop
      • daemonize
    • flowServerMonitorOptions.ml → flow_server_monitor/src/flow_server_monitor_options.rs
      • watchman_options type → WatchmanOptions
      • edenfs_options type → EdenfsOptions
      • file_watcher type → FileWatcher
      • t type → MonitorOptions
      • string_of_file_watcher
    • flowServerMonitorServer.ml → flow_server_monitor/src/flow_server_monitor_server.rs
      • command type → Command
      • exit, stop, StopReason
      • Doomsday module → doomsday mod
      • command_stream, push_to_command_stream
      • ServerInstance module → server_instance mod
      • KeepAliveLoopkeep_alive_loop_main
      • setup_signal_handlers
      • start
      • send_request, send_persistent_request
      • notify_new_persistent_connection, notify_dead_persistent_connection
    • persistentConnectionMap.ml → flow_server_monitor/src/persistent_connection_map.rs
      • add, get, remove, cardinal, get_all_clients
    • requestMap.ml → flow_server_monitor/src/request_map.rs
      • add, remove, remove_all, cardinal
    • socketAcceptor.ml → flow_server_monitor/src/socket_acceptor.rs
      • handle_ephemeral_request, handle_persistent_message
      • StatusWriter trait, status_loop_run
      • create_ephemeral_connection, create_persistent_connection
      • close, perform_handshake_and_get_client_handshake
      • Handler trait, socket_acceptor_loop
      • Autostop module, MonitorSocketHandler, LegacySocketHandler
      • run, run_legacy
    • statusStream.ml → flow_server_monitor/src/status_stream.rs
      • StatusInfo type, check_if_free, broadcast_significant_transition
      • process_update (from UpdateLoop)
      • file_watcher_for_status, empty, call_on_free
      • file_watcher_ready, file_watcher_deferred
      • reset, get_status, ever_been_free
      • wait_for_significant_status, update
  • parser/
    • tests/
      • flow_ast_mapper_test.ml → flow_parser/src/flow_ast_mapper_test.rs
      • jsdoc_test.ml → flow_parser/src/jsdoc_test.rs
      • loc_test.ml
      • offset_utils_test.ml
      • parser_tests.ml
    • test/
      • file_utils.ml
      • parse_test262.ml
      • run_tests.ml
    • comment_attachment.ml → flow_parser/src/comment_attachment.rs
    • comment_utils.ml → flow_parser/src/comment_utils.rs
    • declaration_parser.ml → flow_parser/src/declaration_parser.rs
    • enum_common.ml → flow_parser/src/enum_common.rs
    • enum_parser.ml → flow_parser/src/enum_parser.rs
    • estree_translator.ml → flow_parser/src/estree_translator.rs
    • expression_parser.ml → flow_parser/src/expression_parser.rs
    • file_key.ml → flow_parser/src/file_key.rs
    • flow_ast.ml → flow_parser/src/ast.rs
    • flow_ast_mapper.ml → flow_parser/src/ast_visitor.rs
    • flow_ast_utils.ml → flow_parser/src/ast_utils.rs
      • acceptable_statement_in_declaration_context
      • extract_bigint_literal
      • extract_number_literal
      • fold_bindings_of_pattern
      • fold_bindings_of_variable_declarations
      • get_call_to_jest_module_mocking_fn
      • get_call_to_object_dot_freeze_arg
      • get_inferred_type_guard_candidate
      • hoist_function_and_component_declarations
      • hook_call
      • hook_function
      • hook_name
      • is_bigint_literal
      • is_call_to_invariant
      • is_call_to_is_array
      • is_call_to_object_dot_freeze
      • is_call_to_object_static_method
      • is_call_to_require
      • is_module_dot_exports
      • is_number_literal
      • is_super_member_access
      • is_type_only_declaration_statement
      • match_pattern_has_binding
      • match_root_ident
      • merge_comments
      • merge_comments_with_internal
      • mk_comments
      • mk_comments_opt
      • mk_comments_with_internal_opt
      • negate_bigint_literal
      • negate_number_literal
      • partition_directives
      • pattern_has_binding
      • split_comments
      • expression_of_match_member_pattern
      • ident_of_source
      • loc_of_annotation_or_hint
      • loc_of_expression
      • loc_of_ident
      • loc_of_pattern
      • loc_of_return_annot
      • loc_of_statement
      • match_root_namepub const MATCH_ROOT_NAME
      • name_of_ident
      • push_toplevel_type
      • source_of_ident
      • string_of_assignment_operator
      • string_of_bigint
      • string_of_binary_operator
      • string_of_variable_kind
      • to_string (as expression_sort::Kind::as_str())
      • unwrap_nonnull_lhs
      • unwrap_nonnull_lhs_expr
      • well_known_symbol_name
    • flow_lexer.ml → flow_parser/src/flow_lexer.rs
      • token
      • is_valid_identifier_name
      • jsx_child
      • jsx_tag
      • regexp
      • template_tail
      • type_token
    • flow_parser_dot_js.ml
    • flow_parser_js.ml
    • js_id.ml → flow_parser/src/js_id_unicode.rs
    • js_id_unicode.ml → flow_parser/src/js_id_unicode.rs
    • jsdoc.ml → flow_parser/src/jsdoc.rs
    • jsx_parser.ml → flow_parser/src/jsx_parser.rs
    • lex_env.ml → flow_parser/src/lex_env.rs
    • lex_result.ml → absorbed into flow_parser/src/flow_lexer.rs (LexResult struct)
    • loc.ml → flow_parser/src/loc.rs
      • char_beforechar_before()
      • compare_ignore_sourcecompare_ignore_source()
      • containscontains()
      • cursorcursor()
      • debug_to_stringdebug_to_string()
      • end_locend_loc()
      • first_charfirst_char()
      • intersectsintersects()
      • is_noneis_none()
      • is_none_ignore_sourceis_none_ignore_source()
      • lines_intersectlines_intersect()
      • sourcesource()
      • span_comparespan_compare()
      • start_locstart_loc()
      • start_pos_to_string_for_vscode_loc_uri_fragmentstart_pos_to_string_for_vscode_loc_uri_fragment()
      • to_string_no_sourceto_string_no_source()
      • update_sourceupdate_source()
      • btwnbetween()
      • compareOrd trait impl
      • equalPartialEq trait derive
      • mk_locmk()
      • noneLOC_NONE constant
      • pos_cmpOrd for Position trait impl
    • match_pattern_parser.ml → flow_parser/src/match_pattern_parser.rs
    • object_parser.ml → flow_parser/src/object_parser.rs
    • offset_utils.ml → flow_parser/src/offset_utils.rs
      • make
      • contains_multibyte_character
      • debug_string
      • line_lengths
      • offset
    • parse_error.ml → flow_parser/src/parse_error.rs
    • parse_error_utils.ml → absorbed into flow_parser/src/parse_error.rs (camelize function)
    • parser_common.ml → flow_parser/src/parser_common.rs
    • parser_env.ml → flow_parser/src/parser_env.rs
    • parser_flow.ml → flow_parser/src/main_parser.rs
    • pattern_cover.ml → flow_parser/src/pattern_cover.rs (97 lines, 100% complete)
    • pattern_parser.ml → flow_parser/src/pattern_parser.rs (647 lines, 100% complete)
    • relativeLoc.ml
    • statement_parser.ml → flow_parser/src/statement_parser.rs (4176 lines, 100% complete)
    • token.ml → flow_parser/src/token.rs (591 lines, 100% complete)
    • token_translator.ml
    • translator_intf.ml
    • type_parser.ml → flow_parser/src/type_parser.rs (3286 lines, 100% complete)
  • parser_utils/
    • tests/
      • file_sig_test.ml → flow_parser_utils/src/file_sig_tests.rs
      • flow_ast_differ_test.ml
      • flow_polymorphic_ast_mapper_test.ml
      • parser_utils_tests.ml
      • test_utils.ml
    • aloc/
      • tests/
        • aloc_tests.ml → flow_aloc/src/lib.rs
      • aLoc.ml → flow_aloc/src/lib.rs
        • compareALoc::compare()
        • concretize_compareALoc::concretize_compare()
        • concretize_equalALoc::concretize_equal()
        • debug_to_stringALoc::debug_to_string()
        • equalALoc::equal()
        • get_key_exnaloc_representation_do_not_use::get_key_exn()
        • init_tablealoc_representation_do_not_use::init_table()
        • is_keyedaloc_representation_do_not_use::is_keyed()
        • make_idaloc_representation_do_not_use::make_id()
        • make_keyedaloc_representation_do_not_use::make_keyed()
        • make_tablealoc_representation_do_not_use::make_table()
        • noneALoc::none()
        • of_locALoc::of_loc()
        • quick_compareALoc::quick_compare()
        • sourceALoc::source()
        • string_of_keyaloc_representation_do_not_use::string_of_key()
        • to_locALoc::to_loc()
        • to_loc_exnALoc::to_loc_exn()
        • to_loc_with_tablesALoc::to_loc_with_tables()
        • to_string_no_sourceALoc::to_string_no_source()
        • update_sourceALoc::update_source()
        • compare_idALocId::compare()
        • empty_tableALocTable::empty()
        • equal_idALocId::equal()
        • id_noneALocId::none()
        • id_of_alocALocId::of_aloc()
    • exports/
      • tests/
        • exports_tests.ml → flow_imports_exports/src/exports_tests.rs
      • exports.ml → flow_imports_exports/src/exports.rs
        • empty
        • of_builtins
        • of_module
      • imports.ml → flow_imports_exports/src/imports.rs
        • add_globals
        • of_file_sig
    • iloc/
      • iLoc.ml → flow_parser_utils/src/iloc.rs
        • ILoc type (tuple struct with Loc and u32)
        • Display, Ord, PartialOrd impls
        • LocSig impl
    • output/
      • tests/
        • js_layout_generator/
          • assignment_precedence_test.ml → flow_parser_utils_output/src/js_layout_generator_test.rs
          • comment_test.ml → flow_parser_utils_output/src/js_layout_generator_test.rs
          • component_test.ml → flow_parser_utils_output/src/js_layout_generator_test.rs
          • import_test.ml → flow_parser_utils_output/src/js_layout_generator_test.rs
          • jsx_test.ml → flow_parser_utils_output/src/js_layout_generator_test.rs
          • object_test.ml → flow_parser_utils_output/src/js_layout_generator_test.rs
          • operator_precedence_test.ml → flow_parser_utils_output/src/js_layout_generator_test.rs
          • pattern_test.ml → flow_parser_utils_output/src/js_layout_generator_test.rs
          • program_test.ml → flow_parser_utils_output/src/js_layout_generator_test.rs
          • trailing_commas_test.ml → flow_parser_utils_output/src/js_layout_generator_test.rs
          • variable_declaration_precedence_test.ml → flow_parser_utils_output/src/js_layout_generator_test.rs
        • js_layout_generator_test.ml → flow_parser_utils_output/src/js_layout_generator_test.rs
        • layout_generator_test_utils.ml → flow_parser_utils_output/src/layout_generator_test_utils.rs
        • layout_test.ml → flow_parser_utils_output/src/layout_test.rs
        • layout_test_utils.ml → flow_parser_utils_output/src/layout_test_utils.rs
        • parser_utils_output_tests.ml → irrelevant (OUnit runner)
        • source_test.ml
      • printers/
        • tests/
          • parser_utils_output_printers_tests.ml → irrelevant (OUnit runner)
          • pretty_printer_test.ml → flow_parser_utils_output/src/pretty_printer_test.rs
        • ast_diff_printer.ml → flow_parser_utils_output/src/ast_diff_printer.rs
        • compact_printer.ml → flow_parser_utils_output/src/compact_printer.rs
        • pretty_printer.ml → flow_parser_utils_output/src/pretty_printer.rs
        • replacement_printer.ml → flow_parser_utils_output/src/replacement_printer.rs
      • js_layout_generator.ml → flow_parser_utils_output/src/js_layout_generator.rs (fully ported)
      • layout.ml → flow_parser_utils_output/src/layout.rs
        • LayoutNode enum
        • WhenToBreak enum
        • ListConfig struct
        • print_pretty
        • print_single_line
        • Composition utilities (group, fuse, join, list)
      • source.ml → flow_parser_utils_output/src/source.rs
        • Source struct with builder methods
    • signature_builder/
      • expected_annotation_sort.ml → flow_type_sig/src/expected_annotation_sort.rs (1/1 function, 100% complete)
        • to_stringDisplay trait implementation (idiomatic Rust)
      • signature_error.ml → flow_type_sig/src/signature_error.rs
    • type_sig/
      • tests/
        • compact_table_tests.ml
        • type_sig_tests.ml
      • compact_table.ml → flow_type_sig/src/compact_table.rs
        • createBuilder::new()
        • pushBuilder::push()
        • tail_exnBuilder::tail_exn()
        • spliceBuilder::splice() (test-only)
        • valueNode::data()
        • modifyNode::data_mut()
        • markNode::mark()
        • compactBuilder::compact_with_merge() / compact_without_merge()
        • index_exnNode::index_exn()
        • copyIndexed::copy()
        • getTable::get()
        • lengthTable::len()
        • iterTable::iter()
        • to_arrayTable::into_vec() (similar functionality)
        • Interned.createInternedBuilder::new()
        • Interned.pushInternedBuilder::push()
        • Interned.compactInternedBuilder::compact_without_merge()
        • initTable::init()
        • iteriTable::iteri()
        • mapTable::map()
        • mapiTable::mapi()
        • to_array_mapTable::to_array_map()
        • IndexSet module → pub type IndexSet<Marker> = BTreeSet<Index<Marker>>
      • packed_type_sig.ml → flow_type_sig/src/packed_type_sig.rs
      • type_sig.ml → flow_type_sig/src/type_sig.rs (2547 lines, 100% complete)
        • TArg type
        • Arg type
        • TypeGuard type
        • TParam type with polymorphic mapping
      • type_sig_bin.ml → irrelevant (Rust heap stores type sigs in-memory)
      • type_sig_collections.ml → irrelevant (just use Table<T> directly)
      • type_sig_hash.ml → flow_type_sig/src/type_sig_hash.rs
        • checked_dep type (CJS/ES)
        • dependency type (Cyclic/Acyclic/Resource/Unchecked)
        • file type
        • require
        • import
        • import_ns
        • edge_local_def
        • edge_remote_ref
        • edge_pattern
        • edge_pattern_def
        • edge_require
        • edge_import
        • edge_import_ns
        • visit_ref
        • visit_tyref
        • visit_packed
        • visit_eval
        • visit_annot
        • visit_value
        • visit_op
        • visit_def
        • visit_remote_ref
        • visit_pattern
        • visit_export
        • visit_type_export
      • type_sig_mark.ml → flow_type_sig/src/type_sig_mark.rs (4/4 functions, 100% complete)
        • mark_bindingmark_binding() (pub(crate))
        • mark_exportsmark_exports() (pub(super))
        • mark_errorsmark_errors() (pub(super))
        • mark_builtin_modulemark_builtin_module() (pub(super))
      • type_sig_options.ml → flow_type_sig/src/type_sig_options.rs
        • TypeSigOptions struct
        • of_options
        • builtin_options
      • type_sig_pack.ml → flow_type_sig/src/type_sig_pack.rs (1035 lines, 100% complete)
        • RemoteRef enum
        • PackedRef enum
        • TyRef enum
        • Packed type
        • Pattern type
        • Export type
        • ModuleKind type
      • type_sig_parse.ml → flow_type_sig/src/type_sig_parse.rs (9132 lines, 100% complete)
      • type_sig_utils.ml → flow_type_sig/src/type_sig_utils.rs
        • parse_and_pack_builtins
        • parse_and_pack_module
    • ast_builder.ml → flow_parser_utils/src/ast_builder.rs
      • identifiers module
      • types module (with functions, objects submodules)
      • literals module
      • patterns module
      • functions module
      • classes module (with methods submodule)
      • jsxs module
      • statements module (with enum_declarations submodule)
      • expressions module (with members, literals submodules)
      • comments module
      • mk_program
      • test_ast_of_string
      • test_expression_of_string
      • test_statement_of_string
      • test_program_of_string
    • ast_loc_utils.ml → flow_parser_utils/src/ast_loc_utils.rs
      • LocToALocMapper struct implementing LocMapper trait
    • export_condition_map.ml → flow_parser_utils/src/export_condition_map.rs
      • create
      • create_from_shorthand
      • empty
      • parse
        • resolve_package_target
    • file_sig.ml → flow_parser_utils/src/file_sig.rs
      • emptyFileSig::empty()
      • default_optsFileSigOptions::default() (via Default trait)
      • programFileSig::from_program()
      • require_loc_mapFileSig::require_loc_map()
      • require_setFileSig::require_set()
      • requiresFileSig::requires()
      • to_stringto_debug_string()
    • flow_ast_contains_mapper.ml → flow_services_code_action/src/contains_mapper.rs (ported as composition helper)
    • flow_ast_differ.ml → flow_parser_utils/src/flow_ast_differ.rs
    • flow_ast_visitor.ml → flow_parser/src/ast_visitor.rs
      • AstVisitor trait with comprehensive visitor pattern
      • Traversable trait for AST nodes
    • flow_polymorphic_ast_mapper.ml → flow_parser/src/polymorphic_ast_mapper.rs
      • LocMapper trait
      • Generic AST transformation functions for all node types
    • graphql.ml → flow_parser_utils/src/graphql.rs (56 lines, 100% complete)
    • indexed_ast_mapper.ml → flow_parser_utils/src/indexed_ast_mapper.rs
      • IndexMapper struct with LocMapper impl
      • UnindexMapper struct with LocMapper impl
    • infer_type_hoister.ml → flow_analysis/src/infer_type_hoister.rs
      • hoist_infer_types
    • json_of_estree.ml
    • package_exports.ml → flow_parser_utils/src/package_exports.rs
      • create
      • empty
      • parse
      • resolve_package
    • package_json.ml → flow_parser_utils/src/package_json.rs
      • create
      • empty
      • exports
      • haste_commonjs
      • main
      • name
      • parse
    • record_utils.ml → flow_parser_utils/src/record_utils.rs
      • defaulted_props_of_record
    • signature_utils.ml → flow_parser_utils/src/signature_utils.rs
      • procedure_decider module
      • this_finder module with AstVisitor implementations
    • this_finder.ml → flow_parser_utils/src/this_finder.rs
  • parsing/
    • docblock_parser.ml → flow_parsing/src/docblock_parser.rs
      • docblock_max_tokensDOCBLOCK_MAX_TOKENS constant
      • parse_docblockparse_docblock()
    • parsing_service_js.ml → flow_parsing/src/parsing_service.rs
      • do_parse
      • content_hash_matches_file_hash
      • does_content_match_file_hash
      • content_hash_matches_old_file_hash
      • fold_failed
      • reducer
      • merge
      • parse
      • ensure_parsed
      • parse_file_sig
      • parse_package_json_file
      • parse_type_sig
      • parse_with_defaults
      • reparse_with_defaults
      • next_of_filename_set
  • procs/
    • multiWorkerLwt.ml → flow_server/src/multi_worker.rs
      • set_report_canceled_callback
      • report_canceled
      • single_threaded_call_with_worker_id
      • multi_threaded_call
      • multi_threaded_call_with_worker_id
      • call
      • call_with_worker_id
      • fold
      • iter
      • next
      • next2
      • make
  • server/
    • command_handler/
      • commandHandler.ml → flow_server_command_handler/src/command_handler.rs
        • type_parse_artifacts_with_cache
        • get_status
        • autocomplete_on_parsed
        • autocomplete
        • errors_of_file
        • check_file
        • get_def_of_check_result
        • infer_type_to_response
        • documentation_at_loc
        • infer_type
        • type_of_name
        • inlay_hint
        • insert_type
        • autofix_exports
        • autofix_missing_local_annot
        • collect_rage
        • dump_types
        • coverage
        • batch_coverage
        • serialize_graph
        • output_dependencies
        • get_cycle
        • find_module
        • get_def
        • save_state
        • auto_close_jsx
        • prepare_document_paste
        • provide_document_paste
        • linked_editing_range
        • find_code_actions
        • add_missing_imports
        • organize_imports
        • handle_apply_code_action
        • handle_autocomplete
        • handle_autofix_exports
        • handle_autofix_missing_local_annot
        • handle_check_file
        • handle_coverage
        • handle_batch_coverage
        • handle_cycle
        • handle_dump_types
        • handle_find_module
        • handle_get_def
        • handle_graph_dep_graph
        • handle_infer_type
        • handle_type_of_name
        • handle_inlay_hint
        • handle_llm_context
        • handle_insert_type
        • handle_rage
        • handle_status
        • handle_save_state
        • handle_persistent_canceled
        • handle_persistent_uncaught_exception
        • handle_persistent_subscribe
        • handle_persistent_did_open_notification
        • handle_persistent_did_open_notification_no_op
        • handle_persistent_did_change_notification
        • handle_persistent_did_save_notification
        • handle_persistent_did_close_notification
        • handle_persistent_did_close_notification_no_op
        • handle_persistent_cancel_notification
        • handle_persistent_did_change_configuration_notification
        • handle_persistent_get_def
        • handle_persistent_infer_type
        • handle_persistent_code_action_request
        • handle_persistent_autocomplete_lsp
        • handle_persistent_signaturehelp_lsp
        • handle_persistent_workspace_symbol
        • handle_persistent_find_references
        • handle_persistent_document_highlight
        • handle_persistent_prepare_rename
        • handle_persistent_rename
        • handle_persistent_coverage
        • handle_persistent_llm_context
        • handle_persistent_rage
        • handle_persistent_ping
        • handle_persistent_log_command
        • handle_persistent_add_missing_imports_command
        • handle_persistent_organize_imports_command
        • handle_persistent_auto_close_jsx
        • handle_persistent_prepare_document_paste
        • handle_persistent_provide_document_paste_edits
        • handle_persistent_linked_editing_range
        • handle_persistent_rename_file_imports
        • handle_persistent_malformed_command
        • handle_persistent_unsupported
        • handle_persistent_text_document_diagnostics_lsp
        • handle_persistent_immediately_unsafe
        • handle_persistent_immediately
        • enqueue_or_handle_ephemeral
        • enqueue_persistent
        • handle_ephemeral_command_for_standalone (Rust-only: standalone-mode ephemeral dispatch)
        • handle_ephemeral_command_for_standalone_wrapped
        • classify_ephemeral_command
        • handle_ephemeral_immediate_command
        • standalone_response_needs_checked_dependencies_retry
      • llmTypedContextProvider.ml → flow_server_command_handler/src/llm_typed_context_provider.rs
    • env/
      • collated_errors.ml → flow_server_env/src/collated_errors.rs
        • error_state_timestamps type → ErrorStateTimestamps
        • empty_error_state_timestamps
        • t type → CollatedErrors
        • empty
        • clear_all
        • clear_merge
      • dependency_info.ml → flow_server_env/src/dependency_info.rs
        • debug_to_string
        • implementation_dependency_graph
        • of_map
        • sig_dependency_graph
        • update
      • serverEnv.ml → flow_server_env/src/server_env.rs
        • genv type → Genv
        • errors type → Errors
        • env type → Env
    • error_collator/
      • errorCollator.ml → flow_server_env/src/error_collator.rs
        • add_suppression_warnings (private)
        • collate_duplicate_providers (private)
        • update_local_collated_errors
        • update_collated_errors
        • get_with_separate_warnings (internal 3-tuple version, private)
        • type_error_stat (private)
        • error_resolution_stat type → ErrorResolutionStat
        • update_error_state_timestamps
        • get_without_suppressed
        • get
        • get_with_separate_warnings (public 2-tuple version)
    • file_watcher_spec/
      • file_watcher_spec.ml → flow_server_file_watcher_spec/src/file_watcher_spec.rs
    • monitor_listener/
      • serverMonitorListener.ml → flow_server_env/src/server_monitor_listener.rs
      • serverMonitorListenerState.ml → flow_server_env/src/server_monitor_listener_state.rs
        • push_new_workload
        • push_new_parallelizable_workload
        • defer_parallelizable_workload
        • requeue_deferred_parallelizable_workloads
        • push_new_env_update
        • cancellation_requests
        • push_files_to_recheck
        • push_files_to_prioritize
        • push_files_to_force_focused_and_recheck
        • push_global_find_ref_request
        • push_lazy_init
        • push_dependencies_to_prioritize
        • push_after_reinit
        • pop_next_workload
        • pop_next_parallelizable_workload
        • update_env
        • recheck_fetch
        • requeue_workload
        • get_and_clear_recheck_workload
        • wait_for_recheck
        • wait_for_parallelizable_workload
        • wait_for_updates_for_recheck
        • wait_for_anything
      • workloadStream.ml → flow_server_env/src/workload_stream.rs
        • push
        • push_parallelizable
        • requeue_parallelizable
        • pop
        • pop_parallelizable
        • wait_for_workload
        • wait_for_parallelizable_workload
    • persistent_connection/
      • persistent_connection.ml → flow_server_env/src/persistent_connection.rs
        • Client_config.client_toggle type → client_config::ClientToggle
        • Client_config.tclient_config::T
        • Client_config.rank_autoimports_by_usage
        • Client_config.suggest_autoimports
        • Client_config.show_suggest_ranking_info
        • t type → PersistentConnection
        • single_client type → SingleClient / SingleClientRef
        • empty
        • add_client
        • remove_client
        • add_client_to_clients
        • remove_client_from_clients
        • update_clients
        • send_lsp
        • send_start_recheck
        • send_end_recheck
        • send_response
        • send_errors_if_subscribed
        • subscribe_client
        • client_did_open
        • client_did_change
        • client_did_close
        • client_did_change_configuration
        • get_file
        • get_client
        • get_id
        • lsp_initialize_params
        • client_config
        • type_parse_artifacts_cache
        • autocomplete_artifacts_cache
        • clear_type_parse_artifacts_caches
        • push_outstanding_handler
        • pop_outstanding_handler
        • autocomplete_session
        • all_clients
        • pop_message
        • has_client
        • send_status
        • send_server_exit
        • send_telemetry
    • protocol/
      • lspProt.ml → flow_monitor_rpc/src/lsp_prot.rs (Flow-specific LSP extension types; standard LSP types use lsp_types crate)
        • client_id type → ClientId
        • error_kind type → ErrorKind
        • error_info type → ErrorInfo
        • metadata type → Metadata
        • empty_metadata
        • request type → Request
        • request_with_metadata type → RequestWithMetadata
        • errors_reason type → ErrorsReason
        • error_response_kind type → ErrorResponseKind
        • live_errors_failure type → LiveErrorsFailure
        • live_errors_response type → LiveErrorsResponse
        • response type → Response
        • response_with_metadata type → ResponseWithMetadata
        • recheck_stats type → RecheckStats
        • telemetry_from_server type → TelemetryFromServer
        • notification_from_server type → NotificationFromServer
        • message_from_server type → MessageFromServer
        • string_of_request
        • string_of_request_with_metadata
        • json_of_request
        • string_of_response
      • message_from_server_mapper type → MessageFromServerMapper
        • default_message_from_server_mapper
      • monitorProt.ml → flow_monitor_rpc/src/monitor_prot.rs
        • request_id type → RequestId
        • file_watcher_metadata type → FileWatcherMetadata
        • empty_file_watcher_metadata
        • merge_file_watcher_metadata
        • please_die_reason type → PleaseDieReason
        • monitor_to_server_message type → MonitorToServerMessage
        • server_to_monitor_message type → ServerToMonitorMessage
        • monitor_to_client_message type → MonitorToClientMessage
      • serverCommandWithContext.ml → flow_monitor_rpc/src/server_command_with_context.rs
        • t type → ServerCommandWithContext
      • serverProt.ml → flow_monitor_rpc/src/server_prot.rs
        • Infer_type_options
        • Inlay_hint_options
        • Type_of_name_options
        • Llm_context_options
        • Code_action
        • Request.command
        • Request.to_string
        • Response.lazy_stats
        • Response.func_param_result
        • Response.func_details_result
        • Response.Completion
        • Response.InferTypeOfName
        • Response.InferType
        • Response.InlayHint
        • Response.status_response
        • Response.response
        • Response.to_string
      • socketHandshake.ml → flow_server_env/src/socket_handshake.rs
      • (Rust-only) flow_server_env/src/server_socket_rpc.rs — JSON/TCP wire protocol for server requests/responses in standalone mode
      • (Rust-only) flow_server_env/src/lsp_connect_params.rs — shared connect params and persistent client handshake builder for LSP
    • rechecker/
      • recheck_updates.ml → flow_server_rechecker/src/recheck_updates.rs
      • rechecker.ml → flow_server_rechecker/src/rechecker.rs (parallelizable-workload machinery still simplified)
        • Parallelizable_workload_loop module (Lwt pick/cancellation loop is comment-only; no Rust async runtime equivalent is wired up yet)
        • start_parallelizable_workloads (returns a no-op stopper because the parallelizable workload loop is unported)
        • get_lazy_stats
        • process_updates
        • send_start_recheck
        • send_end_recheck
        • recheck (find_ref_command is kept as an opaque closure instead of destructuring request/client/transformer like OCaml)
        • run_but_cancel_on_file_changes
        • recheck_outcome type → RecheckOutcome
        • recheck_single
        • recheck_loop
    • server_files/
      • server_files_js.ml → flow_server_files/src/server_files_js.rs (14/14 functions, 100% complete)
        • default_flowconfig_name
        • default_temp_dir
        • add_dir_sep
        • mk_root
        • digest_root_part
        • file_of_root
        • config_file
        • max_root_part_len
        • log_file
        • dfind_log_file
        • monitor_log_file
        • lock_file
        • pids_file
        • recheck_stats_file
        • socket_file
        • legacy2_socket_file
        • legacy1_socket_file
    • server_utils/
      • file_input.ml → flow_server_utils/src/file_input.rs
        • FileInput enum
        • path_of_file_input
        • filename_of_file_input
        • content_of_file_input_unsafe
        • content_of_file_input
    • watchman_expression_terms/
      • watchman_expression_terms.ml → flow_server_watchman_expression_terms/src/lib.rs
    • server.ml → flow_server/src/server.rs (background Lwt loops and some exception handling paths are still simplified)
      • sample_init_memory
      • extract_flowlibs_or_exit (Flowlib.extract panic/abort path is not wrapped into the OCaml-style Could_not_extract_flowlibs exit)
      • string_of_saved_state_fetcher
      • init (focus_targets is ignored and failure paths use expect/panic instead of the OCaml Lwt/exception flow)
      • idle_logging_loop
      • gc_loop
      • serve (uses detached threads plus blocking waits instead of Lwt.pick/cancellation between idle work and monitor events)
      • on_compact
      • create_program_init
      • detect_linux_distro
      • check_supported_operating_system
      • run
      • exit_msg_of_exception (uses display text rather than OCaml's full backtrace string formatting)
      • run_from_daemonize (panic-string matching approximates the OCaml typed exception handling/exits)
      • check_once (format_errors callback wiring and focus_targets behavior are still simplified away)
      • daemonize
    • serverEnvBuild.ml → flow_server/src/server_env_build.rs
    • serverWorker.ml → flow_server/src/server_worker.rs
    • server_daemon.ml → flow_server/src/server_daemon.rs (real server-master child process via flow_daemon::spawn; serializable daemon payload replaces OCaml Marshal closures / fork_spawn)
      • Server_files module → flow_server_files::server_files_js
      • args type → ServerEntryParam (ServerDaemonArgs carries the serializable Options subset)
      • entry_point type → Entry<ServerEntryParam, (), ()>
      • open_log_file
      • new_entry_pointSERVER_ENTRY_NAME
      • register_entry_pointentry_point / register
      • daemonize
  • services/
    • autocomplete/ → flow_services_autocomplete
      • tests/
        • autocomplete_sigil_tests.ml → flow_services_autocomplete/src/autocomplete_sigil_tests.rs
        • autocomplete_tests.ml → irrelevant (OUnit runner)
      • autocompleteService_js.ml → flow_services_autocomplete/src/autocomplete_service_js.rs
      • autocomplete_js.ml → flow_services_autocomplete/src/autocomplete_js.rs
      • autocomplete_sigil.ml → flow_services_autocomplete/src/autocomplete_sigil.rs
      • find_method.ml → flow_services_autocomplete/src/find_method.rs
      • keywords.ml → flow_services_autocomplete/src/keywords.rs
    • code_action/ → flow_services_code_action
      • tests/
        • autofix_imports_tests.ml → flow_services_code_action/src/autofix_imports_tests.rs
        • autofix_type_to_value_import_tests.ml → flow_services_code_action/src/autofix_type_to_value_import_tests.rs
        • code_action_service_tests.ml → flow_services_code_action/src/code_action_service_tests.rs
        • code_action_tests.ml → irrelevant (OUnit runner, test discovery automatic in Rust)
        • insert_type_utils_tests.ml → flow_services_code_action/src/insert_type_utils_tests.rs
        • refactor_extract_tests.ml → flow_services_code_action/src/refactor_extract_tests.rs
        • refactor_extract_utils_tests.ml → flow_services_code_action/src/refactor_extract_utils_tests.rs
        • validation_tests.ml → flow_services_code_action/src/validation_tests.rs
      • ast_extraction_utils.ml → flow_services_code_action/src/ast_extraction_utils.rs (has Rust-specific helper functions for OCaml class-based AST visitors)
      • autofix_casting_syntax.ml → flow_services_code_action/src/autofix_casting_syntax.rs
      • autofix_class_member_access.ml → flow_services_code_action/src/autofix_class_member_access.rs
      • autofix_enum_member_name.ml → flow_services_code_action/src/autofix_enum_member_name.rs
      • autofix_exports.ml → flow_services_code_action/src/autofix_exports.rs
      • autofix_imports.ml → flow_services_code_action/src/autofix_imports.rs
      • autofix_interface.ml → flow_services_code_action/src/autofix_interface.rs
      • autofix_legacy_flow_syntax.ml → flow_services_code_action/src/autofix_legacy_flow_syntax.rs
      • autofix_match_syntax.ml → flow_services_code_action/src/autofix_match_syntax.rs
      • autofix_method.ml → flow_services_code_action/src/autofix_method.rs
      • autofix_missing_local_annots.ml → flow_services_code_action/src/autofix_missing_local_annots.rs
      • autofix_new_to_record.ml → flow_services_code_action/src/autofix_new_to_record.rs
      • autofix_object_to_record.ml → flow_services_code_action/src/autofix_object_to_record.rs
      • autofix_optional_chaining.ml → flow_services_code_action/src/autofix_optional_chaining.rs
      • autofix_prop_typo.ml → flow_services_code_action/src/autofix_prop_typo.rs
      • autofix_record_declaration.ml → flow_services_code_action/src/autofix_record_declaration.rs
      • autofix_renders_variant.ml → flow_services_code_action/src/autofix_renders_variant.rs
      • autofix_replace_type.ml → flow_services_code_action/src/autofix_replace_type.rs
      • autofix_ts_syntax.ml → flow_services_code_action/src/autofix_ts_syntax.rs
      • autofix_type_name.ml → flow_services_code_action/src/autofix_type_name.rs
      • autofix_type_to_value_import.ml → flow_services_code_action/src/autofix_type_to_value_import.rs
      • autofix_unused_promise.ml → flow_services_code_action/src/autofix_unused_promise.rs
      • code_action_service.ml → flow_services_code_action/src/code_action_service.rs
      • code_action_text_edits.ml → flow_services_code_action/src/code_action_text_edits.rs (shared copy in flow_services_autocomplete/src/code_action_text_edits.rs)
      • code_action_utils.ml → flow_services_code_action/src/code_action_utils.rs
      • convert_type_to_readonly_form.ml → flow_services_code_action/src/convert_type_to_readonly_form.rs
      • document_paste.ml → flow_services_code_action/src/document_paste.rs
      • insert_inferred_render_type.ml → flow_services_code_action/src/insert_inferred_render_type.rs
      • insert_type.ml → flow_services_code_action/src/insert_type.rs
      • insert_type_imports.ml → flow_services_code_action/src/insert_type_imports.rs (uses named ConvertTyVisitor struct with stored error state instead of OCaml inline visitor object)
      • insert_type_utils.ml → flow_services_code_action/src/insert_type_utils.rs
      • lsp_import_edits.ml → flow_services_autocomplete/src/lsp_import_edits.rs (shared helper used by autocomplete)
      • lsp_module_system_info.ml → flow_services_code_action/src/lsp_module_system_info.rs (shared copy in flow_services_autocomplete/src/module_system_info.rs)
      • refactor_add_jsx_props.ml → flow_services_code_action/src/refactor_add_jsx_props.rs
      • refactor_arrow_functions.ml → flow_services_code_action/src/refactor_arrow_functions.rs
      • refactor_extract.ml → flow_services_code_action/src/refactor_extract.rs
      • refactor_extract_utils.ml → flow_services_code_action/src/refactor_extract_utils.rs
      • refactor_match_discriminant.ml → flow_services_code_action/src/refactor_match_discriminant.rs
      • refactor_switch_to_match_statement.ml → flow_services_code_action/src/refactor_switch_to_match_statement.rs
      • stub_unbound_name.ml → flow_services_code_action/src/stub_unbound_name.rs
    • coverage/
      • coverage.ml → flow_services_coverage/src/lib.rs (fully ported)
        • op_mode type → OpMode
        • unit_of_op
        • Kind module → Kind enum with methods
        • file_coverage type → FileCoverage
        • initial_coverage
        • tvar_status type → TvarStatus
        • visitor object → CoverageVisitor struct with methods
        • coverage_folder class → CoverageFolder struct implementing AstVisitor
        • coverage_fold_tast
        • covered_types
        • file_coverage function
    • export/ → flow_services_export
      • tests/
        • export_service_tests.ml → flow_services_export/src/export_service_tests.rs
        • export_tests.ml → N/A (OUnit2 runner, handled by #[test])
      • index/
        • tests/
          • export_index_tests.ml → flow_services_export/src/export_index_tests.rs
          • index_tests.ml → N/A (OUnit2 runner, handled by #[test])
        • export_index.ml → flow_services_export_index/src/export_index.rs
      • search/
        • tests/
          • export_search_tests.ml → flow_services_export/src/export_search_tests.rs
          • search_tests.ml → N/A (OUnit2 runner, handled by #[test])
        • types/
          • export_search_types.ml → flow_services_export/src/export_search_types.rs
        • export_search.ml → flow_services_export/src/export_search.rs
      • export_service.ml → flow_services_export/src/export_service.rs
    • get_def/ → flow_services_get_def
      • types/
        • get_def_types.ml → flow_services_get_def/src/get_def_types.rs
          • single_property_def_infoSinglePropertyDefInfo
          • property_def_infoPropertyDefInfo
          • def_infoDefInfo
          • Purpose.tPurpose
      • findRefsUtils.ml → flow_services_get_def/src/find_refs_utils.rs
        • AstInfo type alias
      • getDefUtils.ml → flow_services_get_def/src/get_def_utils.rs
        • get_object_literal_loc
        • DefKind type
        • map_def_kind_loc
        • ObjectKeyLiteralSearcher (merged into get_def_utils)
        • loc_of_single_def_info
        • all_locs_of_ordinary_property_def_info
        • all_locs_of_def_info
        • DefLoc type
        • debug_string_of_def_loc
        • extract_def_loc
        • get_property_def_info
        • get_def_info
      • getDef_js.ml → flow_services_get_def/src/get_def_js.rs
        • Get_def_result.tGetDefResult
        • extract_member_def
        • process_request
        • get_def (with loop inner function → loop_fn)
      • get_def_process_location.ml → flow_services_get_def/src/get_def_process_location.rs
        • InternalError type
        • ProcessLocationResult type (was result in OCaml)
        • process_type_request
        • Searcher class hierarchy → Searcher<T,C> + SearcherCallback<T> trait
        • TypedAstSearcherCallback (was typed_ast_searcher class)
        • OnDemandSearcherCallback (was on_demand_searcher class)
        • ImportSearcher / ExportSearcher (AstVisitor impls)
        • process_location
      • get_def_request.ml → flow_services_get_def/src/get_def_request.rs
        • MemberInfo type
        • GetDefRequest type (was t in OCaml)
      • object_key_visitor.ml → flow_services_get_def/src/object_key_visitor.rs
        • ObjectKeyVisitorCallback trait (was class with virtual method)
        • ObjectKeyVisitor struct with AstVisitor
        • visit
    • inference/
      • tests/
        • dep_graph_test_utils.ml → flow_services_inference/src/dep_graph_test_utils.rs
        • inference_tests.ml → N/A (just an entrypoint)
        • pure_dep_graph_operations_test.ml → flow_services_inference/src/pure_dep_graph_operations_test.rs
        • types_js_test.ml → flow_services_inference/src/types_js_test.rs
      • types/
        • types_js_types.ml → flow_services_inference_types/src/lib.rs
      • check_cache.ml → flow_services_inference/src/check_cache.rs
        • create
        • release_ccx
        • drop_least_recently_used
        • find_or_create_ccx
        • find_or_create
        • clear
      • check_service.ml → flow_services_inference/src/check_service.rs
        • typed_builtin_module_opt
        • unknown_module_t
        • unchecked_module_t
        • get_lint_severities (as get_lint_severities_for_check)
        • mk_check_file (with check_file and compute_env closures)
        • dep_module_t (extracted as free function)
        • sig_module_t (extracted as free function)
        • dep_file (extracted as free function)
        • build_exports_from_module_kind (helper for dep_file exports)
      • dep_service.ml → flow_services_inference/src/dep_service.rs
        • calc_dependency_info
        • calc_partial_dependency_graph
        • calc_unchanged_dependents
      • inference_utils.ml → flow_services_inference/src/inference_utils.rs
        • error_of_docblock_error
        • set_of_docblock_errors
        • error_of_parse_error
        • set_of_parse_error
        • error_of_parse_exception
        • set_of_parse_exception
        • error_of_file_sig_tolerable_error
        • set_of_file_sig_tolerable_errors
      • init_js.ml → flow_services_inference/src/init.rs
      • job_utils.ml
      • merge_service.ml → flow_services_inference/src/merge_service.rs
        • merge
        • merge_runner
        • sig_hash
        • acyclic_dep
        • check_contents_cache
        • check_contents_context
        • compute_env_of_contents
        • mk_check (no slow to check defence yet)
      • merge_stream.ml → flow_services_inference/src/merge_stream.rs (7/7 functions, 100% complete)
        • createMergeStream::new()
        • update_server_statusMergeStream::update_server_status()
        • nextMergeStream::next()
        • mergeMergeStream::merge()
        • total_filesMergeStream::total_files()
        • skipped_countMergeStream::skipped_count()
        • sig_new_or_changedMergeStream::sig_new_or_changed()
      • obj_to_obj_hook.ml → flow_services_inference/src/obj_to_obj_hook.rs
        • get_object_literal_loc
        • obj_to_obj_hook (as obj_to_obj_hook_fn)
        • with_obj_to_obj_hook
      • pure_dep_graph_operations.ml → flow_services_inference/src/pure_dep_graph_operations.rs
        • calc_all_dependents
        • calc_direct_dependencies
        • calc_direct_dependents
      • recheck_stats.ml → flow_services_inference/src/recheck_stats.rs
        • Estimates type
        • Averages type (private)
        • moving_average
        • get_file
        • load_per_file_time
        • save_averages
        • init
        • record_recheck_time
        • record_last_estimates
        • get_init_time
        • get_per_file_time
      • type_contents.ml → flow_services_inference/src/type_contents.rs
        • ParseContentsReturn type
        • do_parse_wrapper
        • with_timer
        • parse_contents
        • errors_of_file_artifacts
        • printable_errors_of_file_artifacts_result
        • unchecked_dependencies
        • ensure_checked_dependencies
        • check_contents
        • compute_env_of_contents
        • type_parse_artifacts
      • types_js.ml → flow_services_inference/src/type_service.rs
        • calc_depscalc_deps()
        • clear_errorsclear_errors()
        • filter_errorsfilter_errors()
        • ensure_parsed_or_trigger_recheckensure_parsed_or_trigger_recheck()
        • full_check_for_initfull_check_for_init()
        • recheckrecheck()
        • libdef_check_for_lazy_initlibdef_check_for_lazy_init()
        • include_dependencies_and_dependents
        • run_merge_service
        • merge
        • update_merge_results
        • check_files
        • ensure_parsed
        • handle_unexpected_file_changes
        • init_libs
        • filter_out_node_modules
        • unfocused_files_to_infer
        • focused_files_to_infer
        • files_to_infer
        • restart_if_faster_than_recheck
        • recheck_parse_and_update_dependency_info
        • determine_what_to_recheck
        • recheck_merge
        • recheck::full
        • recheck::parse_and_update_dependency_info
        • clear_caches
        • with_transaction
        • recheck_impl
        • make_next_files
        • init_from_scratch
        • load_saved_state
        • exit_if_no_fallback
        • reinit
        • reinit_full_check
        • check_files_for_init
        • check_once (Rust-only convenience)
        • initflow_services_inference/src/type_service.rs
        • init_from_saved_state
        • handle_updates_since_saved_state
    • jsdoc/
      • find_documentation.ml → flow_services_autocomplete/src/find_documentation.rs
      • insert_jsdoc.ml → flow_services_autocomplete/src/insert_jsdoc.rs
      • jsdoc_stub.ml → flow_services_autocomplete/src/jsdoc_stub.rs
    • jsx/ → flow_services_jsx
      • auto_close_jsx.ml → flow_services_jsx/src/auto_close_jsx.rs
      • linked_editing_jsx.ml → flow_services_jsx/src/linked_editing_jsx.rs
    • module/
      • module_js.ml → flow_services_module/src/lib.rs (6/6 functions, 100% complete)
        • exported_moduleexported_module()
        • imported_moduleimported_module()
        • commit_modulescommit_modules()
        • add_parsed_resolved_requiresadd_parsed_resolved_requires()
        • package_incompatiblepackage_incompatible()
        • string_of_package_incompatible_reasonDisplay trait on PackageIncompatibleReason
    • references/ → flow_services_references
      • types/
        • findRefsTypes.ml → flow_services_references/src/find_refs_types.rs
          • ref_kindRefKind
          • string_of_ref_kindstring_of_ref_kind()
          • single_refSingleRef
          • find_refs_foundFindRefsFound
          • find_refs_okFindRefsOk
          • kindKind
          • requestRequest
          • empty_requestempty_request()
      • findRefs_js.ml → flow_services_references/src/find_refs_js.rs
        • sort_and_dedupsort_and_dedup()
        • local_refs_of_find_ref_requestlocal_refs_of_find_ref_request()
        • find_local_refsfind_local_refs()
      • localImportRefSearcher.ml → flow_services_references/src/local_import_ref_searcher.rs
        • search_resultSearchResult
        • searchsearch()
      • prepareRenameSearcher.ml → flow_services_references/src/prepare_rename_searcher.rs
        • search_rename_locsearch_rename_loc()
      • propertyFindRefs.ml → flow_services_references/src/property_find_refs.rs
        • add_ref_kindadd_ref_kind()
        • LiteralToPropLocliteral_to_prop_loc
        • annot_of_jsx_nameannot_of_jsx_name()
        • Potential_ordinary_refs_searchpotential_ordinary_refs_search
        • type_matches_locstype_matches_locs()
        • get_loc_of_def_infoget_loc_of_def_info()
        • process_prop_refsprocess_prop_refs()
        • ordinary_property_find_refs_in_fileordinary_property_find_refs_in_file()
        • property_find_refs_in_fileproperty_find_refs_in_file()
        • find_local_refsfind_local_refs()
      • renameMapper.ml → flow_services_references/src/rename_mapper.rs
        • get_rename_orderget_rename_order()
        • rename_mapperRenameMapper + AstVisitor impl
        • renamerename()
      • renameModule.ml
      • variableFindRefs.ml → flow_services_references/src/variable_find_refs.rs
        • local_find_refslocal_find_refs()
    • saved_state/ → flow_saved_state
      • compression/
        • saved_state_compression.ml → flow_saved_state/src/compression/saved_state_compression.rs
      • fetcher/
        • saved_state_dummy_fetcher.ml → flow_saved_state/src/fetcher/saved_state_dummy_fetcher.rs
        • saved_state_fb_fetcher.ml → flow_saved_state/src/fetcher/saved_state_fb_fetcher.rs
        • saved_state_fetcher.ml → flow_saved_state/src/fetcher/saved_state_fetcher.rs
        • saved_state_local_fetcher.ml → flow_saved_state/src/fetcher/saved_state_local_fetcher.rs
        • saved_state_scm_fetcher.ml → flow_saved_state/src/fetcher/saved_state_scm_fetcher.rs
      • saved_state.ml → flow_saved_state/src/saved_state.rs
        • save
        • load
        • invalid_reason_to_string
        • backtrace_of_invalid_reason
        • non_flowlib_libs
        • denormalize_file_data
        • restore_dependency_info
    • type_info/ → flow_services_type_info
      • signature_help.ml → flow_services_type_info/src/signature_help.rs
      • type_info_service.ml → flow_services_type_info/src/type_info_service.rs
    • type_of_name/ → flow_services_type_of_name
      • type_of_name.ml → flow_services_type_of_name/src/type_of_name.rs
  • state/
    • heaps/
      • context/
        • context_heaps.ml (unused in Rust; master_cx stored on server env)
      • diffing/
        • diff_heaps.ml
      • parsing/
        • parsing_heaps.ml → flow_heap/src/parsing_heaps.rs
          • add_merge_on_diff
          • add_package
          • add_parsed
          • add_unparsed
          • get_aloc_table_unsafe
          • get_ast_unsafe
          • get_dependency
          • get_dependency_unsafe
          • get_docblock_unsafe
          • get_exports_unsafe
          • get_file_hash_unsafe
          • get_haste_module
          • get_haste_module_unsafe
          • get_imports_unsafe
          • get_package_info
          • get_package_parse
          • get_package_parse_unsafe
          • get_parse
          • get_parse_unsafe
          • get_provider
          • get_resolved_requires_unsafe
          • get_tolerable_file_sig_unsafe
          • get_type_sig_unsafe
          • get_typed_parse
          • get_typed_parse_unsafe
          • has_ast
          • is_package_file
          • is_typed_file
          • iter_dependents
          • add_resolved_requiresset_resolved_requires()
          • clear_not_found
          • createSharedMem::new()
          • get_aloc_table
          • get_ast
          • get_docblock
          • get_exports
          • get_file_addr (OCaml shared-memory internal, not needed in Rust)
          • get_file_addr_unsafe (OCaml shared-memory internal, not needed in Rust)
          • get_file_hash
          • get_file_sig
          • get_file_sig_unsafe
          • get_haste_info
          • get_haste_module_info
          • get_imports
          • get_leader
          • get_leader_unsafe
          • get_old_exports
          • get_old_file_hash
          • get_old_haste_infoget_haste_info_committed()
          • get_old_imports
          • get_old_parseget_parse_committed()
          • get_old_provider
          • get_old_resolved_modules_unsafe
          • get_old_resolved_requires_unsafe
          • get_old_typed_parseget_typed_parse_committed()
          • get_resolved_modules_unsafe
          • get_tolerable_file_sig
          • get_type_sig
          • loc_of_aloc
          • read_aloc_table_unsafe
          • read_ast_unsafe
          • read_dependency
          • read_dependency_name
          • read_docblock_unsafe
          • read_exports
          • read_file_hash
          • read_file_key
          • read_file_name
          • read_file_sig_unsafe
          • read_haste_module_info
          • read_imports
          • read_package_info
          • read_phantom_dependencies
          • read_requires
          • read_resolved_module
          • read_resolved_modules
          • read_tolerable_file_sig_unsafe
          • read_type_sig_unsafe
          • record_not_found
          • record_unchanged
          • typed_component
    • readers/
      • abstract_state_reader.ml → unnecessary
      • mutator_state_reader.ml → unnecessary
      • state_reader.ml → unnecessary
  • stubs/
    • annotate_exports_hardcoded_expr_fixes.ml → flow_codemods/src/utils/codemod_annotator.rs (oss stub, inlined)
    • eventLoggerLwt.ml
    • extra_commands.ml → flow_cli/src/extra_commands.rs (oss stub)
    • flowEventLogger.ml → flow_event_logger/src/lib.rs
    • flowInteractionLogger.ml
    • hardcoded_module_fixes.ml → flow_services_code_action/src/hardcoded_module_fixes.rs (oss stub)
    • saved_state_fb_fetcher.ml → flow_saved_state/src/fetcher/saved_state_fb_fetcher.rs (oss stub)
    • startup_initializer.ml → flow_server_monitor/src/startup_initializer.rs (oss stub)
  • third-party/
    • core/
      • core_doubly_linked.ml → irrelevant (rust port uses LinkedHashMap)
      • core_doubly_linked_intf.ml → irrelevant (rust port uses LinkedHashMap)
      • core_hash_queue.ml → irrelevant (rust port uses LinkedHashMap)
      • core_hash_queue_intf.ml → irrelevant (rust port uses LinkedHashMap)
      • core_hashtbl.ml → irrelevant (rust port uses LinkedHashMap)
      • core_hashtbl_intf.ml → irrelevant (rust port uses LinkedHashMap)
      • core_union_find.ml → irrelevant (rust port uses LinkedHashMap)
    • fuzzy-path/
      • src/
        • fuzzy_path.ml → flow_services_export/src/fuzzy_path/
      • test/
        • expect_test.ml → flow_services_export/src/fuzzy_path/expect_test.rs
        • test.ml → flow_services_export/src/fuzzy_path/test.rs
    • ocaml-base64/
      • src/
        • base64.ml
        • unsafe.ml
    • sedlex/
      • flow_sedlexing.ml → irrelevant (rust port uses logos)
    • sedlex-ppx/
      • flow_sedlex.ml → irrelevant (rust port uses logos)
      • ppx_sedlex.ml → irrelevant (rust port uses logos)
      • sedlex_cset.ml → irrelevant (rust port uses logos)
  • typing/
    • tests/
      • type_hint_test.ml → flow_typing/src/type_hint_test.rs
      • type_test.ml → flow_typing/src/type_test.rs
      • typed_ast_test.ml → flow_typing/src/typed_ast_test.rs
      • typing_tests.ml → irrelevant (OUnit runner)
    • errors/
      • error_message.ml → flow_typing_errors/src/error_message.rs
      • error_suppressions.ml → flow_typing_errors/src/error_suppressions.rs
        • add
        • add_lint_suppressions
        • all_unused_locs
        • empty
        • filter_by_file
        • filter_lints
        • filter_suppressed_errors
        • get_lint_settings
        • remove
        • union
        • update_suppressions
      • flow_error.ml → flow_typing_errors/src/flow_error.rs
        • loc_of_error
        • msg_of_error
        • code_of_error
        • convert_type_to_type_desc
        • error_of_msg
        • is_lint_only_errorset
        • kind_of_error
        • map_loc_of_error
        • ordered_reasons
        • source_file
      • flow_intermediate_error.ml → flow_typing_errors/src/intermediate_error.rs
        • make_intermediate_error
        • to_printable_error
        • make_errors_printable
        • post_process_errors
        • score_of_msg
      • flow_intermediate_error_types.ml → flow_typing_errors/src/intermediate_error_types.rs
      • suppression_comments.ml → flow_typing_errors/src/suppression_comments.rs
    • generics/
      • generic.ml → flow_typing_generics/src/lib.rs (22/22 functions, 100% complete)
        • bound_to_stringGenericBound::to_string()
        • to_stringDisplay for GenericId
        • all_subst_names_of_idGenericId::all_subst_names()
        • all_subst_names_of_boundGenericBound::all_subst_names()
        • id_to_kindGenericId::to_kind()
        • subst_name_of_idGenericId::subst_name()
        • equal_boundGenericBound::equal()
        • equal_spreadsequal_spreads()
        • equal_idGenericId::equal()
        • collapseGenericId::collapse()
        • spread_emptyspread_empty()
        • make_spreadGenericId::make_spread()
        • make_bound_idGenericId::make_bound_id()
        • make_op_idGenericId::make_op_id()
        • spread_subtractspread_subtract()
        • spread_appendspread_append()
        • fold_idsGenericId::fold_ids()
        • spread_existsspread_exists()
        • satisfiesGenericId::satisfies()
        • ArraySpread.merge_roarray_spread::merge_ro() (private)
        • ArraySpread.mergearray_spread::merge()
        • ArraySpread.to_optionarray_spread::to_option()
    • polarity/
      • polarity.ml → flow_common/src/polarity.rs
        • apply_const
        • compat
        • equal
        • inv
        • mult
        • object_literal_polarity
        • sigil
        • string
    • abnormal.ml → flow_typing_utils/src/abnormal.rs
      • AbnormalControlFlow struct (replaces exception)
      • throw_expr_control_flow_exception → just do Err(AbnormalControlFlow((loc, expr)))
      • catch_stmt_control_flow_exception
      • catch_expr_control_flow_exception
      • try_with_abnormal_exn
    • annotation_inference.ml → flow_typing_utils/src/annotation_inference.rs
    • avar.ml → flow_typing_utils/src/avar.rs
    • builtins.ml → flow_typing_builtins/src/builtins.rs
      • Builtins struct
      • builtin_ordinary_name_set
      • builtin_modules_set
      • get_builtin_value_opt
      • get_builtin_type_opt
      • get_builtin_module_opt
      • of_name_map
      • empty
    • check_polarity.ml → flow_typing_utils/src/check_polarity.rs
    • class_sig.ml → flow_typing_statement/src/class_sig.rs
    • class_sig_intf.ml → irrelevant (rust doesn't need it to deal with cyclic modules)
    • component_declaration_config.ml → flow_typing_statement/src/component_declaration_config.rs
    • component_params.ml → flow_typing_statement/src/component_params.rs
    • component_params_intf.ml → flow_typing_statement/src/component_params_intf.rs
    • component_sig.ml → flow_typing_statement/src/component_sig.rs
    • component_sig_intf.ml → irrelevant (rust doesn't need it to deal with cyclic modules)
    • component_sig_types.ml → flow_typing_loc_env/src/component_sig_types.rs
    • concrete_type_eq.ml → flow_typing_flow_common/src/concrete_type_eq.rs
      • swap_reason
      • eq
      • eq_targs
    • context.ml → flow_typing_context/src/lib.rs
    • convertTypes.ml → flow_typing_utils/src/convert_types.rs
    • cycles.ml → flow_typing/src/cycles.rs
      • handle_element
      • key_of_element
      • handle_component
    • debug_js.ml → flow_typing_debug/src/lib.rs
      • string_of_selector
      • string_of_destructor
      • dump_reason
      • dump_t
      • dump_use_t
      • dump_prop
      • dump_normalized_prop
      • dump_tvar
      • dump_flow
      • string_of_reason
      • string_of_file
      • string_of_default
      • string_of_signature_error
      • dump_error_message
      • verbose module
    • default.ml → flow_typing_default/src/lib.rs
    • default_resolve.ml → flow_typing_flow_js/src/default_resolve.rs
      • default_resolve_touts
    • destructuring.ml → flow_typing_statement/src/destructuring.rs
    • destructuring_sig.ml → irrelevant (rust doesn't need it to deal with cyclic modules)
    • env_resolution.ml → flow_typing/src/env_resolution.rs
    • exhaustive.ml → flow_typing_utils/src/exhaustive.rs
    • existsCheck.ml → flow_typing_exists_check/src/lib.rs
    • exists_marker.ml → flow_typing_statement/src/exists_marker.rs
    • fix_statement.ml → unnecessary in rust
    • flow_cache.ml → flow_typing_flow_common/src/flow_cache.rs
      • flow_constraint module
      • eval module
      • fix module
      • summarize_flow_constraint
    • flow_common.ml → irrelevant (rust doesn't need it to deal with cyclic modules)
    • flow_js.ml → flow_typing_flow_js/src/flow_js/ (directory with multiple files)
      • Top-level items (before M__flow):
        • not_linkedhelpers.rs
        • RecursionCheck module → recursion_check.rs
        • ConstFoldExpansion module → const_fold_expansion.rs
          • get_rmap
          • increment
          • guard
        • substmod.rs (public wrapper around type_subst::subst)
        • check_canceledhelpers.rs (intentionally empty; revisit when full checker is ported)
        • is_concrete → moved to flow_typing_type/src/type_util.rs
        • inherited_methodhelpers.rs
        • find_resolved_opthelpers.rs
        • drop_resolvedhelpers.rs
      • M__flow module → split across files:
        • __flow (main dispatch) → dispatch.rs (9224 lines, fully ported)
        • empty_successhelpers.rs
        • handle_generichelpers.rs
        • Any helpers → any_helpers.rs:
          • expand_any
          • any_prop_to_function
          • invariant_any_propagation_flow
          • any_prop_call_prop
          • any_prop_properties
          • any_prop_obj
          • any_prop_tvar
          • any_prop_to_type_args
          • any_prop_inst
          • any_propagated
          • any_propagated_use
        • Inheritance helpers → inheritance_helpers.rs:
          • flow_type_args
          • inst_type_to_obj_type
          • structural_subtype
          • inst_structural_subtype
          • check_super
        • Eval/destructor helpers → eval_helpers.rs:
          • destruct
          • eval_selector
          • evaluate_type_destructor
          • mk_type_destructor
          • eval_destructor
          • eagerly_eval_destructor_if_resolved
          • mk_possibly_evaluated_destructor_for_annotations
        • Instantiation helpers → instantiation_helpers.rs:
          • instantiate_with_targs_with_soln
          • instantiate_with_targs
          • instantiate_poly_call_or_new_with_soln
          • instantiate_poly_call_or_new
          • instantiate_poly_default_args
          • instantiate_this_class
        • Enum helpers → enum_helpers.rs:
          • enum_exhaustive_check
          • enum_exhaustive_check_incomplete
        • Get prop helpers → get_prop_helpers.rs:
          • Get_prop_helper module → impl GetPropHelper for FlowJs
          • prop_typo_suggestion
          • get_private_prop
          • elem_action_on_obj
          • write_obj_prop
        • Constraint helpers → constraint_helpers.rs:
          • flows_to_t
          • flows_from_t
          • flows_across
          • add_upper
          • add_lower
          • iter_with_filter
          • edges_to_t
          • edges_from_t
          • edges_to_ts
          • edges_from_ts
          • edges_and_flows_to_t
          • edges_and_flows_from_t
          • add_uppertvar
          • add_lowertvar
          • edges_to_tvar
          • edges_from_tvar
          • add_upper_edges
          • add_lower_edges
          • unify_flip
          • goto
          • merge_ids
          • resolve_id
        • Unification helpers → unification_helpers.rs:
          • ok_unify
          • __unify
          • __unify_inner
          • unify_props
          • unify_prop_with_dict
          • naive_unify
          • array_unify
        • Multi-arg helpers → multi_arg_helpers.rs:
          • multiflow_call
          • multiflow_subtype
          • multiflow_full
          • multiflow_partial
          • resolve_call_list
          • resolve_spread_list
          • resolve_spread_list_rec
          • finish_resolve_spread_list
        • More helpers → helpers.rs:
          • speculative_subtyping_succeeds
          • perform_lookup_action
          • mk_react_dro
          • resolve_union
          • filter_optional
          • pick_use_op
          • flow_use_op
          • apply_method_action
          • perform_elem_action
          • get_builtin_typeapp
          • get_builtin_react_typeapp
          • get_builtin_type
          • get_builtin_react_type
          • mk_typeapp_instance_annot
          • mk_typeapp_instance
          • mk_typeapp_instance_of_poly
          • mk_instance
          • mk_instance_source
          • mk_instance_raw
          • instance_lookup_kind
          • reposition_reason
          • reposition
          • flow_all_in_union
          • call_args_iter
          • extract_non_spread
          • join_flow
          • rec_flow
          • rec_flow_t
          • flow_opt
          • flow_opt_t
          • flow
          • flow_t
          • flow_p
          • rec_unify
          • unify_opt
          • unify
          • continue_
          • continue_repos
          • type_app_variance_check
          • possible_concrete_types
          • singleton_concrete_type
          • possible_concrete_types_for_optional_chain
          • possible_concrete_types_for_inspection
          • singleton_concrete_type_for_cjs_extract_named_exports_and_type_exports
          • singleton_concretize_type_for_imports_exports
          • singleton_concrete_type_for_inspection
          • add_specialized_callee_method_action
          • possible_concrete_types_for_imports_exports
          • possible_concrete_types_for_predicate
          • possible_concrete_types_for_sentinel_prop_test
          • all_possible_concrete_types
          • possible_concrete_types_for_operators_checking
          • possible_concrete_types_for_object_assign
          • possible_concrete_types_for_computed_object_keys
          • singleton_concrete_type_for_match_arg
          • possible_concrete_types_for_match_arg
      • FlowJs module → mod.rs:
        • FlowJs struct + S trait impl (all trait methods implemented)
        • Public wrappers: flow, flow_t, subst, mk_default, mk_instance, get_builtin_type, get_builtin_react_type, reposition_reason, filter_optional, unify, reposition, mk_typeapp_instance_annot, mk_type_destructor, add_output
        • Non-speculating wrappers: flow_non_speculating, flow_t_non_speculating, mk_default_non_speculating, mk_instance_non_speculating, get_builtin_type_non_speculating, get_builtin_react_type_non_speculating, reposition_reason_non_speculating, filter_optional_non_speculating, unify_non_speculating, reposition_non_speculating, mk_typeapp_instance_annot_non_speculating, mk_type_destructor_non_speculating, add_output_non_speculating
    • flow_js_utils.ml → flow_typing_flow_common/src/flow_js_utils.rs
    • func_class_sig_types.ml → flow_typing_loc_env/src/func_class_sig_types.rs
    • func_params.ml → flow_typing_statement/src/func_params.rs
    • func_params_intf.ml → flow_typing_statement/src/func_params_intf.rs
    • func_sig.ml → flow_typing_statement/src/func_sig.rs
    • func_sig_intf.ml → irrelevant (rust doesn't need it to deal with cyclic modules)
    • func_stmt_config.ml → flow_typing_statement/src/func_stmt_config.rs
    • func_stmt_config_sig.ml → irrelevant (rust doesn't need it to deal with cyclic modules)
    • func_stmt_config_types.ml → flow_typing_loc_env/src/func_stmt_config_types.rs
    • implicit_instantiation.ml → flow_typing_flow_js/src/implicit_instantiation.rs
    • implicit_instantiation_check.ml → flow_typing_implicit_instantiation_check/src/lib.rs
    • instantiation_utils.ml → flow_typing_flow_common/src/instantiation_utils.rs
      • implicit_type_argument module (mk_targ, abstract_targ)
      • type_app_expansion module (push_unless_loop, pop, get, set)
    • key.ml → flow_typing_key crate (src/lib.rs)
      • Base enum (OrdinaryIdentifier, This, Super)
      • Proj enum (Prop, Elem, PrivateField)
      • Key struct
      • string_of_keyimpl Display for Key
      • uses_propnameKey::uses_propname method
      • is_simpleKey::is_simple method
      • reason_descKey::reason_desc method
    • key_map.ml → just use map of keys directly
    • loc_env.ml → flow_typing_loc_env/src/loc_env.rs
    • marked.ml → flow_typing/src/marked.rs
      • Marked<K> generic struct (replaces OCaml functor)
      • new (empty)
      • add
      • get
      • mem
      • exclude
      • IdMarked type alias
    • match_pattern.ml → flow_typing_statement/src/match_pattern.rs
    • match_pattern_ir.ml → flow_typing_loc_env/src/match_pattern_ir.rs
    • members.ml → flow_typing_utils/src/members.rs
    • merge_js.ml → flow_typing/src/merge.rs
      • get_lint_severities
      • copy_into
      • merge_lib_files
      • mk_builtins
      • post_merge_checks
    • module_exports_checker.ml → flow_typing_utils/src/module_exports_checker.rs
    • module_info_analyzer.ml → flow_typing_statement/src/module_info_analyzer.rs
    • natural_inference.ml → flow_typing_flow_js/src/natural_inference.rs
    • node_cache.ml → flow_typing_loc_env/src/node_cache.rs
    • obj_type.ml → flow_typing_flow_common/src/obj_type.rs
      • mk_seal
      • mk_with_proto
      • mk
      • is_exact
      • get_dict_opt
      • map_dict
      • obj_kind_from_optional_dict
    • object_kit.ml → flow_typing_flow_js/src/object_kit.rs
    • optional_chain_kit.ml → flow_typing_flow_js/src/optional_chain_kit.rs
    • predicate_kit.ml → flow_typing_utils/src/predicate_kit.rs
    • query_types.ml → flow_typing/src/query_types.rs
      • type 'a resultQueryResult<A> enum
      • concretize_loc_pairs
      • sort_loc_pairs
      • result_of_normalizer_error
      • max_size_of_evaluated_typeMAX_SIZE_OF_EVALUATED_TYPE
      • dump_type_at_pos
      • type_at_pos_type
      • dump_types
      • dump_types_for_tool
      • insert_type_normalize
    • react_kit.ml → flow_typing_flow_js/src/react_kit.rs
    • react_rules.ml → flow_typing_statement/src/react_rules.rs
    • refinement.ml → flow_typing_statement/src/refinement.rs
    • renders_kit.ml → flow_typing_flow_js/src/renders_kit.rs
    • slice_utils.ml → flow_typing_flow_js/src/slice_utils.rs
    • sort_js.ml → directly use tarjans instead
    • source_or_generated_id.ml → flow_typing_type/src/source_or_generated_id.rs (7/7 functions, 100% complete)
      • compare_idOrd for Id trait impl
      • equal_idPartialEq for Id trait impl
      • generate_idId::generate_id()
      • id_of_aloc_idId::of_aloc_id()
      • from_type_sigId::from_type_sig()
      • string_of_idId::debug_string()
      • stable_string_of_idId::stable_string()
    • speculation.ml → flow_typing_flow_common/src/speculation.rs
      • SpeculationId type
      • set_speculative
      • restore_speculative
      • speculating
      • defer_error
    • speculation_flow.ml → flow_typing_utils/src/speculation_flow.rs
    • speculation_kit.ml → flow_typing_flow_js/src/speculation_kit.rs
    • speculation_state.ml → flow_typing_speculation_state/src/lib.rs
    • spread_cache.ml → flow_typing_spread_cache/src/lib.rs
    • statement_sig.ml → irrelevant (rust doesn't need it to deal with cyclic modules)
    • statement.ml → flow_typing_statement/src/statement.rs
    • strict_es6_import_export.ml → flow_typing_utils/src/strict_es6_import_export.rs
    • subtyping_kit.ml → flow_typing_flow_js/src/subtyping_kit.rs
    • switch_to_match.ml → flow_typing_statement/src/switch_to_match.rs
    • tvar.ml → flow_typing_tvar/src/lib.rs
      • mk_no_wrap
      • mk
      • mk_where
      • mk_where_result (use it when the lambda of mk_where return Result)
      • mk_where_no_wrap
      • mk_no_wrap_where
      • mk_fully_resolved_lazy
      • mk_fully_resolved_no_wrap
      • mk_fully_resolved
      • mk_resolved
    • tvar_resolver.ml → flow_typing_flow_js/src/tvar_resolver.rs
    • ty_members.ml → flow_typing/src/ty_members.rs
      • MemberInfo struct
      • MembershipBehavior enum
      • members_of_ty
      • TyMembers struct
      • extract
    • ty_normalizer.ml → flow_typing_ty_normalizer/src/normalizer.rs
      • ErrorKind enum
      • Error struct
      • lookahead module
      • NormalizerInput trait (INPUT module type)
      • State struct
      • IdKey enum
      • element_converter module
      • Normalizer struct (Make functor)
      • make_normalizer
    • ty_normalizer_env.ml → flow_typing_ty_normalizer/src/env.rs
      • EvaluateTypeDestructorsMode enum
      • Options struct
      • Options::default function
      • default_codemod_options function
      • Genv struct
      • SymbolSet type alias
      • Env struct
      • Env::init method
      • Env::descend method
      • Env::get_cx method
      • Env::imported_names method
      • Env::expand_internal_types method
      • Env::evaluate_type_destructors method
      • Env::omit_targ_defaults method
      • Env::optimize_types method
      • Env::max_depth method
      • Env::merge_bot_and_any_kinds method
      • Env::verbose method
      • Env::toplevel_is_type_identifier_reference method
    • ty_normalizer_flow.ml → flow_typing/src/ty_normalizer_flow.rs
      • FlowInput struct (implements NormalizerInput)
      • FlowNormalizer type alias
      • from_types
      • from_type_with_found_computed_type
      • from_type
      • from_module_type
      • expand_members
      • expand_literal_union
      • mk_genv
      • debug_string_of_t
    • ty_normalizer_imports.ml → flow_typing/src/ty_normalizer_imports.rs
    • ty_normalizer_no_flow.ml → flow_typing_ty_normalizer/src/no_flow.rs
      • NoFlowInput struct (implements NormalizerInput)
      • NoFlowNormalizer type alias
      • from_type
      • mk_genv
      • mk_default_genv
      • debug_string_of_t
      • type_to_desc_for_errors
    • type.ml → flow_typing_type/src/type_.rs (EVERYTHING)
    • typeUtil.ml → flow_typing_type/src/type_util.rs
    • type_annotation.ml → flow_typing_statement/src/type_annotation.rs
    • type_annotation_cons_gen.ml → flow_typing_statement/src/type_annotation_cons_gen.rs
    • type_annotation_sig.ml → irrelevant (rust doesn't need it to deal with cyclic modules)
    • type_env.ml → flow_typing_utils/src/type_env.rs
    • type_filter.ml → flow_typing_utils/src/type_filter.rs
    • type_guard.ml → flow_typing_utils/src/type_guard.rs
    • type_hint.ml → flow_typing_utils/src/type_hint.rs
    • type_inference_hooks_js.ml → flow_typing_flow_js/src/type_inference_hooks_js.rs
    • type_inference_js.ml → flow_typing/src/type_inference.rs
      • scan_for_suppressions
      • infer_ast
      • infer_file
      • initialize_env
    • type_mapper.ml → flow_typing_visitors/src/type_mapper.rs
    • type_operation_utils.ml → flow_typing_utils/src/type_operation_utils.rs
    • type_sig_merge.ml → flow_typing_utils/src/type_sig_merge.rs
    • type_subst.ml → flow_typing_flow_common/src/type_subst.rs
      • Replacement enum
      • free_var_finder
      • free_var_finder_in_destructor
      • new_name
      • Purpose enum
      • Substituter (TypeMapper impl)
      • call_prop
      • props
      • exports
      • subst
      • subst_destructor
      • subst_instance_type
    • type_visitor.ml → flow_typing_visitors/src/type_visitor.rs
    • typed_ast_finder.ml → flow_typing/src/typed_ast_finder.rs
      • mk_bound_t
      • EnclosingNode enum
      • infer_node
      • FindTypeAnnotVisitor (LocMapper-based)
      • find_type_annot_in_node
      • exact_match_query module
      • find_exact_match_annotation
      • enclosing_node_mapper class (folded into Searcher in flow_services_get_def/src/get_def_process_location.rs)
      • type_parameter_mapper_generic class (folded into TypeAtPosSearcher methods)
      • type_parameter_mapper class (folded into TypeAtPosSearcher's AstVisitor impl)
      • Type_at_pos module (type_at_pos module: TypeAtPosResult, FoundResult, TypeAtPosSearcher, find)
      • find_type_at_pos_annotation
    • typed_ast_utils.ml → flow_typing_utils/src/typed_ast_utils.rs
      • AvailableAst enum
      • typed_ast_of_available_ast
      • polarity
      • typed_ast_to_map
      • typed_ast_to_list