5151
5252const APIList = Tuple{Vararg{API}}
5353
54+ """ Expression to get current module"""
55+ const _cur_mod = V6_COMPAT ? :( current_module () ) : :( @__MODULE__ )
56+
5457"""
5558@api <cmd> [<symbols>...]
5659
5760 * @api init # set up module/package for adding names
5861 * @api freeze # use at end of module, to "freeze" API
5962
63+ * @api list <modules>... # list API(s) of given modules
64+
6065 * @api use <modules>... # use for normal use
6166 * @api test <modules>... # using api and dev, for testing purposes
6267 * @api extend <modules>... # for development, imports api & dev, use api & dev definitions
@@ -77,19 +82,12 @@ macro api(cmd::Symbol)
7782 global __tmp_chain__ = Vector{APITools. API}[]
7883 end
7984 elseif cmd == :freeze
80- @static if V6_COMPAT
81- esc (quote
82- const __chain__ = APITools. APIList (__tmp_chain__)
83- const __api__ = APITools. API (current_module (), __tmp_api__)
84- __tmp_chain__ = _tmp_api__ = nothing
85- end )
86- else
87- esc (quote
88- const __chain__ = APITools. APIList (__tmp_chain__)
89- const __api__ = APITools. API (@__MODULE__ , __tmp_api__)
90- __tmp_chain__ = _tmp_api__ = nothing
91- end )
92- end
85+ esc (quote
86+ const __api__ = APITools. API ($ _cur_mod, __tmp_api__)
87+ push! (__tmp_chain__, __api__)
88+ const __chain__ = APITools. APIList (__tmp_chain__)
89+ __tmp_chain__ = _tmp_api__ = nothing
90+ end )
9391 else
9492 error (" @api unrecognized command: $cmd " )
9593 end
@@ -188,6 +186,7 @@ macro api(cmd::Symbol, exprs...)
188186 grplst = (:public , :define_public )
189187 elseif cmd == :test
190188 grplst = (:public , :develop , :define_public , :define_develop )
189+ push! (lst, V6_COMPAT ? :(using Base. Test) :(using Test))
191190 elseif cmd == :extend
192191 grplst = (:define_public , :define_develop )
193192 for mod in modules, grp in (:base , :public , :develop )
206205
207206function _make_module_list (mod, lst)
208207 isempty (lst) && return nothing
209- length (lst) == 1 ? :(using $ mod.$ (lst[1 ])) :
210- Expr (:toplevel , [:(using $ mod.$ nam) for nam in lst]. .. )
208+ length (lst) == 1 ? :(import $ mod.$ (lst[1 ])) :
209+ Expr (:toplevel , [:(import $ mod.$ nam) for nam in lst]. .. )
211210end
212211
213212_make_module_exprs (mod) =
0 commit comments