Releases: josefs/Gradualizer
Releases · josefs/Gradualizer
0.3.0
Release highlights:
- Improve map exhaustiveness checking #524 by @xxdavid
- Fix all remaining self-check errors #521 by @erszcz
- Fix intersection-typed function calls with union-typed arguments #514 by @erszcz
- Experimental constraint solver #450 by @erszcz
Full list of merged PRs:
- Binary comprehension #201 by @NelsonVides
- Improve map exhaustiveness checking #524 by @xxdavid
- Log changes to variable types in #env.venv #541 by @erszcz
- Disallow timeouts in tests #535 by @xxdavid
- Add known problem: not checking for unreachable clauses with intersections #539 by @xxdavid
- Add
apps
option to rebar3 commands #538 by @gonzalobf - Add some Rebar3 plugin debug logging #532 by @erszcz
- Fix var binds in guard sequences #533 by @erszcz
- Document the compat_seen function #528 by @xxdavid
- fold guard chain #525 by @bartekgorny
- Fix all remaining self-check errors #521 by @erszcz
- New known problem: refine bound vars with guards #520 by @erszcz
- Fix handling of module_info for arities > 1 #500 by @xxdavid
- Don't discard annotation in instantiate/2 #517 by @erszcz
- Join var binds in add_type_pat_union/3 with least upper bound not greatest lower bound #512 by @erszcz
- Fix intersection-typed function calls with union-typed arguments #514 by @erszcz
- Print inferred argument types on call_intersect error #491 by @erszcz
- Fix exhaustiveness checking for union types #505 by @xxdavid
- Make the solver results deterministic #511 by @erszcz
- Type refinement of map keys and values #509 by @zuiderkwast
- Drop invalid lists:filtermap/2 known problem #506 by @erszcz
- Fix yet more self check errors #504 by @erszcz
- Constraint solver limitation known problem test and a workaround #503 by @erszcz
- Fix more self check errors #502 by @erszcz
- Experimental constraint solver #450 by @erszcz
- Require all functions in src/typechecker.erl to have specs #499 by @erszcz
- Fix specs introduced with Mod:module_info/1,2 support #498 by @erszcz
- Add support for module_info functions #496 by @xxdavid
- Add a Hex badge to README #495 by @erszcz
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