gradient
gradient copied to clipboard
Gradient is a static typechecker for Elixir
Running Gradient in this project. https://github.com/eksperimental/beam_meta/tree/1de809c6266d9ee877354f8c2b6dd32adc7d4bf9 ``` lib/beam_meta/compatibility/otp_elixir.ex: The pattern %{version: elixir_version, version_requirement: elixir_requirement, otp_versions: otp_versions} on line 138 doesn't have the type any() lib/beam_meta/compatibility/otp_elixir.ex: The type spec bounded_fun((deep_list ->...
Original issue: https://github.com/josefs/Gradualizer/issues/421#issuecomment-1149618778 I am getting the following issues: ``` commands/accept_address_transfer.ex: The spec new/1 on line 5 follows a spec with different name/arity commands/accept_address_transfer.ex: The spec put_aggregate_id/2 on line 5...
In Gradualizer it's possible to provide external specs for functions defined without them. In Gradient we could use the same Gradualizer option, but it doesn't seem to be exposed to...
In some cases it's more convenient to use a standalone CLI tool than add a dependency to a project. To enable this, we can make Gradient a standalone escript. Thanks...
``` lib/a.ex:6: The variable is expected to have type nonempty_list(A) but it has type list(integer()) 4 cond do 5 [] == list -> 0 6 match?([_a], list) -> list |>...
This will involve using an auxiliary helper together with changes to `Gradient.TypedServer.CompileHooks`. Specifically, `CompileHooks` will have to detect the standard `GenServer.handle_call` return values instead of just detecting the `TypedServer.reply` call,...
```elixir lib/ex_doc/language/elixir.ex: The function call on line 95 is expected to have type nonempty_list(A) but it has type string() 94 defp doc?({{_, name, _}, _, _, :none, _}, _type) do...
```elixir # FIXME: It seems the second attempt/1 clause cannot be reached. @spec attempt(%Waiter{}) :: {:ok, %Waiter{}} | {:error, %Waiter{}} defp attempt(%Waiter{attempt_num: num, num_attempts: num} = waiter) do ``` This...
When having multiple function calls and arguments, it is hard to tell which one is bringing up the issue. As of now, i need to read the docs for both...
Code: https://github.com/eksperimental/ex_doc/blob/a5f02c1bb03651f4fa40f9fc56301d71a515e742/lib/ex_doc/formatter/epub.ex#L150-L152 ``` lib/ex_doc/formatter/epub.ex: The function call on line 151 is expected to have type binary() | maybe_improper_list(byte() | binary() | iolist(), [] | binary()) but it has type chars()...