0.2.0
Release highlights:
- Use ExDoc #456
- Function intersections #461
- Fix more infinite loops #458
- Add
gradualizer_tracer
for efficient troubleshooting #454 - Enable Dialyzer and ETC cross checks #429
- Fix some self-gradualization errors #408
- Point README at Gradient instead of discontinued Gradualixir #396
- Property based tests to find bugs #363
- Add a GitHub Actions CI workflow #343
- Non-trivial sum type exhaustiveness checking #330
Full list of merged PRs:
- Add known problem for unsupported maybe expression #489
- Override filename specs #487
- Use ExDoc #456
- Define some shell utils for interactive work with Gradualizer #455
- Move test from
test/known_problems/should_pass/intersection.erl
totest/should_pass/intersection_pass.erl
#486 - Expand
erlang:'++'
function specs #485 - Function intersections #461
- fix GitHub reference in rebar3 example README #482
- Override the spec of
erlang:error/3
too #481 - Fix
erlang:error/2
spec #478 - add xref ignores to header file defining
::
/:::
#475 - Expand user types in record unions #469
- Handle
non_neg_integer() + pos_integer() :: pos_integer()
properly #465 - Fix integer user type alias #463
- Add
install-asdf
rule to Makefile #459 - Housekeeping #460
- Fix more infinite loops #458
- Fix map type inference #457
- Add
gradualizer_tracer
for efficient troubleshooting #454 - Housekeeping #453
- Fix some infinite loops #452
- Fix crash when a record union contains
any()
#447 merge_with
in OTP 24! #335- Add specs for
++/2
and--/2
#440 - Propagate var binds across list comprehension filters #444
- Remove
.envrc
#443 - Fix more self check errors #441
- Fix
gradualizer_int:int_type_to_range/1
crash #439 - Fix record field access type check crash #436
- Add examples of list comprehension generators being
none()
#434 - Export function in tests to fix a Dialyzer error #431
- Fix Dialyzer warning in tests #430
- Enable Dialyzer and ETC cross checks #429
- Another batch of type error fixes #427
- Simplify
refinable(#{})
#424 - Make an empty
map()
refinable #420 - Make
binary()
, akaString.t()
in Elixir, refinable #392 - Fix false nonexhaustive record patterns warning #419
- Fix some self-gradualization errors #408
- Redefine
top()
tonone()
to clean up remaining compilation warnings #402 - Always throw
call_undef
with raw module, function, and arity #415 - Fix list exhaustiveness checking regressions #404
- Salvage exhaustiveness checking improvements #403
- Check exhaustiveness argument-wise #391
- Point README at Gradient instead of discontinued Gradualixir #396
- Fix variable bind before a record pattern match in function head #397
- Fix
pp_type({var, ..., _})
#401 - Fix for map pattern "doesn't have type any()" warning #389
- Temporary measure: break cycles by timing out #383
- Recover position information for
undef
/not_exported
type errors #384 - Provide the git commit sha when asked for
--version
in CLI #385 - Fix typos #377
- Call
remove_pos
only where a type comes into the system #375 - Property based tests to find bugs #363
- Allow giving include path to erl files imported into db #344
- Add a GitHub Actions CI workflow #343
- Non-trivial sum type exhaustiveness checking #330
- Extract type env from typechecker.erl and convert it to a map #333