Skip to content

Resolve Elixir 1.20 type checker warnings - #246

Merged
ericmj merged 1 commit into
ericmj:mainfrom
tomciopp:type-check-warnings
Aug 25, 2026
Merged

ericmj merged 1 commit into
ericmj:mainfrom
tomciopp:type-check-warnings

Conversation

@tomciopp

Copy link
Copy Markdown
Contributor

Two sources, no behavior change:

The non guard expansions of is_decimal/1 are a case with a %Decimal{}
clause and a catch all. When the argument is statically known to be a
%Decimal{} the type checker proves the catch all unreachable and warns
at every such call site, including the doctest. Marking the quoted
expansion generated: true declares the catch all deliberate,
following the convention for macro generated code.

Three tests pass intentionally invalid input to assert the raise
(new/1 with an atom, to_integer/1 with a NaN coefficient, round/1 with
nil). Routing those calls through apply/3 keeps the argument opaque to
the type checker, which does not check dynamic dispatch, while
exercising exactly the same failure path.

@ericmj
ericmj merged commit dbbaacd into ericmj:main Aug 25, 2026
2 checks passed
@ericmj

ericmj commented Aug 25, 2026

Copy link
Copy Markdown
Owner

Thank you! 💜

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants