@@ -5,6 +5,9 @@ defmodule Gradient do
55 Options:
66 - `app_path` - Path to the app that contains file with code (for umbrella apps).
77 - `code_path` - Path to a file with code (e.g. when beam was compiled without project).
8+ - `no_gradualizer_check` - Skip Gradualizer checks if true.
9+ - `no_ex_check` - Skip Elixir checks if true.
10+ - `no_specify` - Skip AST specifying if true.
811 """
912
1013 alias Gradient.ElixirFileUtils
@@ -21,12 +24,9 @@ defmodule Gradient do
2124 opts = Keyword . put ( opts , :return_errors , true )
2225
2326 with { :ok , forms } <- ElixirFileUtils . get_forms ( file ) do
24- forms =
25- forms
26- |> put_code_path ( opts )
27- |> AstSpecifier . specify ( )
27+ forms = maybe_specify_forms ( forms , opts )
2828
29- case ElixirChecker . check ( forms , opts ) ++ :gradualizer . type_check_forms ( forms , opts ) do
29+ case maybe_gradient_check ( forms , opts ) ++ maybe_gradualizer_check ( forms , opts ) do
3030 [ ] ->
3131 :ok
3232
@@ -42,6 +42,32 @@ defmodule Gradient do
4242 end
4343 end
4444
45+ defp maybe_gradualizer_check ( forms , opts ) do
46+ unless opts [ :no_gradualizer_check ] do
47+ :gradualizer . type_check_forms ( forms , opts )
48+ else
49+ [ ]
50+ end
51+ end
52+
53+ defp maybe_gradient_check ( forms , opts ) do
54+ unless opts [ :no_ex_check ] do
55+ ElixirChecker . check ( forms , opts )
56+ else
57+ [ ]
58+ end
59+ end
60+
61+ defp maybe_specify_forms ( forms , opts ) do
62+ unless opts [ :no_specify ] do
63+ forms
64+ |> put_code_path ( opts )
65+ |> AstSpecifier . specify ( )
66+ else
67+ forms
68+ end
69+ end
70+
4571 defp put_code_path ( forms , opts ) do
4672 case opts [ :code_path ] do
4773 nil ->
0 commit comments