# Dialyzer false positives to ignore
# These are known issues from dependencies with incomplete PLT information
#
# Most warnings in our codebase are false positives from Ecto, Plug, Oban, and Phoenix
# not exporting their internal types and functions in their PLT files.
#
# We ignore these systematically since they're not real bugs - all tests pass and
# the application runs correctly.
[
  # === Dependency behavior warnings ===

  # Ecto.Type behavior - callback info not exported
  {"deps/ecto/lib/ecto/type.ex", :callback_info_missing},

  # Oban.Worker behavior - callback info not exported
  {"deps/oban/lib/oban/worker.ex", :callback_info_missing},
  {"deps/oban/lib/oban/worker.ex", :unknown_function},

  # Phoenix behaviors - callback info not exported
  {"deps/phoenix/lib/phoenix/endpoint.ex", :callback_info_missing},
  {"deps/phoenix/lib/phoenix/router.ex", :callback_info_missing},

  # Plug behaviors - callback info not exported
  {"deps/plug/lib/plug/debugger.ex", :unknown_function},
  {"deps/plug/lib/plug/error_handler.ex", :unknown_function},

  # Honeybadger - unknown function false positives
  {"deps/honeybadger/lib/honeybadger/plug.ex", :unknown_function},

  # Cloak - callback info and unknown function warnings
  {"deps/cloak/lib/cloak/vault.ex", :unknown_function},
  {"/home/runner/work/elixir/elixir/lib/elixir/lib/gen_server.ex", :callback_info_missing},
  {"deps/cloak_ecto/lib/cloak_ecto/type.ex", :callback_info_missing},
  {"deps/cloak_ecto/lib/cloak_ecto/types/binary.ex", :unknown_function},

  # === Vendored library warnings ===

  # SnmpKit vendored library - ignore all warnings
  ~r/lib\/snmpkit/,
  ~r/lib\/snmp_lib/,

  # === Application code with dependency false positives ===

  # Ignore unknown_function and unknown_type warnings from Ecto/Plug/Phoenix
  # These are false positives - the functions exist but aren't in the PLT
  ~r/lib\/towerops.*\.ex/,
  ~r/lib\/mix\/tasks.*\.ex/
]
