Skip to content

Ecto.Multi caused dialyzer warnings because of MapSet.t() reference in :names #4646

@jeroenvisser101

Description

@jeroenvisser101

Elixir version

1.18.4

Database and Version

postgres 17.5

Ecto Versions

3.13.2

Database Adapter and Versions (postgrex, myxql, etc)

N/A

Current behavior

  1. Create a new app, create a new file called test.ex with these contents:
       defmodule MyApp.Test do
         def test do
           Ecto.Multi.new()
           |> Ecto.Multi.run(:test, fn _changes -> :ok end)
         end
       end
  2. Run dialyzer
  3. Observe multiple mismatches between names: MapSet.t() (expected) and names: #MapSet<...map: internal(_)...>

Expected behavior

No error.

A consideration may be to make Ecto.Multi.names() an opaque type as well. I'm no longer sure that that's the right thing to do.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions