@@ -119,7 +119,9 @@ defmodule Mimic.Module do
119119 mimic_functions = generate_mimic_functions ( module )
120120 mimic_macros = generate_mimic_macros ( module )
121121 mimic_struct = generate_mimic_struct ( module )
122+
122123 quoted = [ mimic_info , mimic_struct | mimic_behaviours ++ mimic_functions ++ mimic_macros ]
124+
123125 Module . create ( module , quoted , Macro.Env . location ( __ENV__ ) )
124126 module
125127 end
@@ -175,16 +177,11 @@ defmodule Mimic.Module do
175177
176178 defp generate_mimic_functions ( module ) do
177179 internal_functions = [ __info__: 1 , module_info: 0 , module_info: 1 ]
178-
179- functions =
180- if function_exported? ( module , :__info__ , 1 ) do
181- module . __info__ ( :functions )
182- else
183- module . module_info ( :exports )
184- end
180+ macro_functions = macro_functions ( module )
181+ functions = module . module_info ( :exports )
185182
186183 for { fn_name , arity } <- functions ,
187- { fn_name , arity } not in internal_functions do
184+ { fn_name , arity } not in ( internal_functions ++ macro_functions ) do
188185 args = Macro . generate_arguments ( arity , module )
189186
190187 quote do
@@ -195,6 +192,16 @@ defmodule Mimic.Module do
195192 end
196193 end
197194
195+ defp macro_functions ( module ) do
196+ if function_exported? ( module , :__info__ , 1 ) do
197+ :macros
198+ |> module . __info__ ( )
199+ |> Enum . map ( fn { name , arity } -> { String . to_atom ( "MACRO-#{ name } " ) , arity + 1 } end )
200+ else
201+ [ ]
202+ end
203+ end
204+
198205 defp generate_mimic_macros ( module ) do
199206 macros =
200207 if function_exported? ( module , :__info__ , 1 ) do
0 commit comments