summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJosé Valim <jose.valim@gmail.com>2015-10-01 17:06:09 +0200
committerJosé Valim <jose.valim@gmail.com>2015-10-01 17:06:09 +0200
commit40c70ffcfabfd9547b012bfceaeeac4d1c047e86 (patch)
tree4dca3eeeb7c6991b932fde0f7bd7fd99a7354ace
parent471de4b8a4d67f56c488accd12e35e90e820d91e (diff)
parentf2cd34f1a8b3fd7a05490e4845757820f1ae5fa8 (diff)
downloadelixir-40c70ffcfabfd9547b012bfceaeeac4d1c047e86.tar.gz
Merge pull request #3807 from CrowdHailer/informative-use-message
Informative error message when passing a non atom value to use
-rw-r--r--lib/elixir/lib/kernel.ex2
-rw-r--r--lib/elixir/test/elixir/kernel_test.exs11
2 files changed, 10 insertions, 3 deletions
diff --git a/lib/elixir/lib/kernel.ex b/lib/elixir/lib/kernel.ex
index c7ecbc422..c69b58a61 100644
--- a/lib/elixir/lib/kernel.ex
+++ b/lib/elixir/lib/kernel.ex
@@ -3627,7 +3627,7 @@ defmodule Kernel do
unquote(expanded).__using__(unquote(opts))
end
_otherwise ->
- raise ArgumentError, "invalid arguments for use, expected an atom or alias as argument"
+ raise ArgumentError, "invalid arguments for use, expected a compile time atom or alias, got: #{Macro.to_string(module)}"
end)
quote(do: (unquote_splicing calls))
end
diff --git a/lib/elixir/test/elixir/kernel_test.exs b/lib/elixir/test/elixir/kernel_test.exs
index 1b1dbd52e..14d5a2d39 100644
--- a/lib/elixir/test/elixir/kernel_test.exs
+++ b/lib/elixir/test/elixir/kernel_test.exs
@@ -660,13 +660,20 @@ defmodule KernelTest do
end
end
- test "invalid argument" do
- message = "invalid arguments for use, expected an atom or alias as argument"
+ test "invalid argument is literal" do
+ message = "invalid arguments for use, expected a compile time atom or alias, got: 42"
assert_raise ArgumentError, message, fn ->
Code.eval_string("use 42")
end
end
+ test "invalid argument is variable" do
+ message = "invalid arguments for use, expected a compile time atom or alias, got: variable"
+ assert_raise ArgumentError, message, fn ->
+ Code.eval_string("use variable")
+ end
+ end
+
test "multi-call" do
assert capture_io(fn ->
Code.eval_string("use UseMacro.{SampleA, SampleB,}", [], __ENV__)