Skip to content

Commit

Permalink
Fix final set of compile-time warnings.
Browse files Browse the repository at this point in the history
  • Loading branch information
Qqwy committed Sep 22, 2021
1 parent f062bdb commit 3762866
Show file tree
Hide file tree
Showing 4 changed files with 27 additions and 29 deletions.
2 changes: 1 addition & 1 deletion lib/type_check.ex
Original file line number Diff line number Diff line change
Expand Up @@ -220,7 +220,7 @@ defmodule TypeCheck do
iex> fourty_two = TypeCheck.Type.build(42)
iex> TypeCheck.dynamic_conforms(42, fourty_two)
{:ok, 42}
iex> {error, type_error} = TypeCheck.dynamic_conforms(20, fourty_two)
iex> {:error, type_error} = TypeCheck.dynamic_conforms(20, fourty_two)
iex> type_error.message
"At lib/type_check.ex:241:
`20` is not the same value as `42`."
Expand Down
14 changes: 7 additions & 7 deletions lib/type_check/spec.ex
Original file line number Diff line number Diff line change
Expand Up @@ -48,17 +48,17 @@ defmodule TypeCheck.Spec do
c.f. `lookup/3`.
iex(1)> defmodule Example do
iex(1)> defmodule Example2 do
...(2)> use TypeCheck
...(3)> @spec! greeter(name :: binary()) :: binary()
...(4)> def greeter(name), do: "Hello, \#{name}!"
...(5)> end
...(6)>
...(7)> TypeCheck.Spec.lookup!(Example, :greeter, 1)
...(7)> TypeCheck.Spec.lookup!(Example2, :greeter, 1)
#TypeCheck.Spec< greeter(name :: binary()) :: binary() >
iex> TypeCheck.Spec.lookup!(Example, :nonexistent, 0)
** (ArgumentError) No spec found for `Example.nonexistent/0`
iex> TypeCheck.Spec.lookup!(Example2, :nonexistent, 0)
** (ArgumentError) No spec found for `Example2.nonexistent/0`
"""
def lookup!(module, function, arity) do
case lookup(module, function, arity) do
Expand All @@ -72,15 +72,15 @@ defmodule TypeCheck.Spec do
c.f. `lookup/3`.
iex(1)> defmodule Example do
iex(1)> defmodule Example3 do
...(2)> use TypeCheck
...(3)> @spec! greeter(name :: binary()) :: binary()
...(4)> def greeter(name), do: "Hello, \#{name}!"
...(5)> end
...(6)>
...(7)> TypeCheck.Spec.defined?(Example, :greeter, 1)
...(7)> TypeCheck.Spec.defined?(Example3, :greeter, 1)
true
...(8)> TypeCheck.Spec.defined?(Example, :nonexistent, 0)
...(8)> TypeCheck.Spec.defined?(Example3, :nonexistent, 0)
false
"""
def defined?(module, function, arity) do
Expand Down
18 changes: 18 additions & 0 deletions test/support/override_example.ex
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
# Used by TypeCheck.Macros tests
defmodule OverrideExample.Original do
@type t() :: integer()
end

defmodule OverrideExample.Replacement do
use TypeCheck
@type! t() :: integer()
end

defmodule OverrideExample do
use TypeCheck, overrides: [{{OverrideExample.Original, :t, 0}, &OverrideExample.Replacement.t/0}]

@spec! times_two(OverrideExample.Original.t()) :: integer()
def times_two(input) do
input * 2
end
end
22 changes: 1 addition & 21 deletions test/type_check/options_test.exs
Original file line number Diff line number Diff line change
Expand Up @@ -18,26 +18,6 @@ defmodule TypeCheck.OptionsTest do
end

test "overrides are respected by the macros" do
import StreamData, except: [integer: 0]

defmodule OverrideExample.Original do
@type t() :: integer()
end

defmodule OverrideExample.Replacement do
use TypeCheck
@type! t() :: integer()
end

defmodule OverrideExample do
use TypeCheck, overrides: [{&OverrideExample.Original.t/0, &OverrideExample.Replacement.t/0}]

@spec! times_two(OverrideExample.Original.t()) :: integer()
def times_two(input) do
input * 2
end
end

assert OverrideExample.times_two(42) == 84
assert_raise(TypeCheck.TypeError, fn ->
OverrideExample.times_two("a beautiful string")
Expand All @@ -46,7 +26,7 @@ defmodule TypeCheck.OptionsTest do

test "an TypeCheck.TypeError is raised on an improper overrides list" do
assert_raise(TypeCheck.TypeError, fn ->
TypeCheck.Options.new(overrides: [&OverrideExample.Original.t/0])
TypeCheck.Options.new(overrides: [{OverrideExample.Original, :t, 0}])
end)
end
end
Expand Down

0 comments on commit 3762866

Please sign in to comment.