diff options
author | José Valim <jose.valim@gmail.com> | 2015-10-01 17:06:09 +0200 |
---|---|---|
committer | José Valim <jose.valim@gmail.com> | 2015-10-01 17:06:09 +0200 |
commit | 40c70ffcfabfd9547b012bfceaeeac4d1c047e86 (patch) | |
tree | 4dca3eeeb7c6991b932fde0f7bd7fd99a7354ace | |
parent | 471de4b8a4d67f56c488accd12e35e90e820d91e (diff) | |
parent | f2cd34f1a8b3fd7a05490e4845757820f1ae5fa8 (diff) | |
download | elixir-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.ex | 2 | ||||
-rw-r--r-- | lib/elixir/test/elixir/kernel_test.exs | 11 |
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__) |