Skip to content

Releases: josefs/Gradualizer

0.3.0

16 Jun 18:44
3021d29
Compare
Choose a tag to compare

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

03 Dec 19:45
cad344f
Compare
Choose a tag to compare

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 to test/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(), aka String.t() in Elixir, refinable #392
  • Fix false nonexhaustive record patterns warning #419
  • Fix some self-gradualization errors #408
  • Redefine top() to none() 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

0.1.3

18 Feb 15:43
c83a9b4
Compare
Choose a tag to compare
Record update missing fields fix (#314)

Record update missing fields fix for type any

0.1.2

06 Nov 15:40
ea04772
Compare
Choose a tag to compare

Expand dirs in rebar so exclusion works

0.1.1

02 Nov 17:30
6e75cc3
Compare
Choose a tag to compare
Warning and shadowing (#293)

* Fix unused variables

* Fix shadowed variables

0.1.0

19 Oct 15:02
766ba27
Compare
Choose a tag to compare
Record refinement (#271)

Support record matching and refinement.