 end
 
 defmodule Kernel.OverridableWithBehaviour do
-  @behaviour Kernel.ExampleBehaviour
+  @behaviour Kernel.OverridableExampleBehaviour
 
   def required_callback(), do: "original"
 

  end

  test "module without @behaviour can't be passed as argument to defoverridable" do
    message = "cannot pass module Kernel.ExampleBehaviour as argument to defoverridable/1" <>
              " because its corresponding behaviour is missing. Did you forget to add " <>
              "@behaviour Kernel.ExampleBehaviour ?"
    assert_raise ArgumentError, message, fn ->
      Code.eval_string """
      defmodule Kernel.OverridableTest.Foo do
        defoverridable Kernel.ExampleBehaviour
      end
      """
    end

  end
end

defmodule Kernel.OverridableExampleBehaviour do
  @callback required_callback :: any
  @callback optional_callback :: any
  @macrocallback required_macro_callback(arg :: any) :: Macro.t
