From af2fe2fffb2bf8bbea632ae4dfc822bbcb7c584d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Valim?= Date: Mon, 9 Jan 2012 10:10:14 +0100 Subject: [PATCH] Add a default hook name for add_compile_callback --- lib/module.ex | 2 +- test/elixir/module_test.exs | 11 ++++++++++- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/lib/module.ex b/lib/module.ex index 4a9819897a..8ab09051c6 100644 --- a/lib/module.ex +++ b/lib/module.ex @@ -109,7 +109,7 @@ defmodule Module do # can be updated throughout the module definition and therefore, the final # value of the data can only be compiled using a compiation callback, # which will read the final value of :some_data and compile to a function. - def add_compile_callback(module, target, fun) do + def add_compile_callback(module, target, fun // :__compiling__) do assert_already_compiled!(:add_compile_callback, module) new = { target, fun } table = table_for(module) diff --git a/test/elixir/module_test.exs b/test/elixir/module_test.exs index 85d75144ec..86122d8a4f 100644 --- a/test/elixir/module_test.exs +++ b/test/elixir/module_test.exs @@ -5,9 +5,14 @@ defmodule ModuleTest::ToBeUsed do def __using__(target) do Module.merge_data target, callback: false + Module.add_compile_callback(target, __MODULE__) Module.add_compile_callback(target, __MODULE__, :callback) end + def __compiling__(target) do + Module.merge_data target, compiling: true + end + defmacro callback(target) do value = Orddict.fetch(Module.read_data(target), :callback, nil) Module.merge_data target, callback: true @@ -47,6 +52,10 @@ defmodule ModuleTest do def test_compile_callback_hook do false = ModuleTest::ToUse.original_value - [callback: true] = ModuleTest::ToUse.__data__ + true = Orddict.fetch ModuleTest::ToUse.__data__, :callback, false + end + + def test_default_compile_callback_hook do + true = Orddict.fetch ModuleTest::ToUse.__data__, :compiling, false end end \ No newline at end of file