gleam-lang/gleam

Emphasize mismatching part of complex type mismatches

Open

#4,578 opened on May 9, 2025

 (2 comments) (0 reactions) (0 assignees)Rust (960 forks)batch import
discussionhelp wanted

Repository metrics

Stars
 (21,417 stars)
PR merge metrics
 (PR metrics pending)

Description

When a type mismatch is complex, and some types are unbound (is this the correct term?), it can be hard to see where the error actually is. Here is a concrete example I actually wasted quite a bit of time on:

Expected type:

    drift.Step(List(String), Input, Output, Nil)

Found type:

    drift.Step(List(string), Input, a, b)

It could be made clearer by emphasizing where the type mismatch was exactly:

Expected type:

    drift.Step(List(String), Input, Output, Nil)
                    ^^^^^^

Found type:

    drift.Step(List(string), Input, a, b)
                    ^^^^^^

Contributor guide