Actual implementation of the import process
use_one(declaration, alias, caller, use_call)load_and_register(spec, info, caller)
register_as_import(spec, info, mod_ns, caller)
defer_import_finalization(spec, info, mod_ns, caller)
finalize_deferred(info)
export_and_attach(spec, info, mod_ns, caller)
load_from_source(info, mod_ns)
load_mod(info)
mod_exports(info, spec, mod_ns)
mod_export_names(info, mod_ns)
attach_to_caller(spec, info, mod_exports, mod_ns, caller)
attach_list(spec, exports)
assign_alias(spec, mod_exports, caller)
assign_temp_alias(spec, caller)
use_one
does not currently return a value. — This might change
in the future.
load_mod
returns the module or package namespace environment
of the specified module or package info.
mod_exports
returns an export environment containing the
exported names of a given module.
mode_export_names
returns a vector containing the same names as
names(mod_exports(info, spec, mod_ns))
but does not create an export
environment.
attach_list
returns a named character vector of the names in
an attach specification. The vector’s names are the aliases, if provided, or
the attach specification names themselves otherwise.
an unevaluated use declaration expression without the
surrounding use
call
the use alias, if given, otherwise NULL
the client’s calling environment (parent frame)
the use
call which is invoking this code
a module use declaration specification
the physical module information
the module namespace environment of the newly loaded module
use_one
performs the actual import. It is invoked by use
given
the calling context and unevaluated expressions as arguments, and only uses
standard evaluation.
load_and_register
performs the loading, attaching and exporting of a
module identified by its spec and info.
register_as_import
registers a use
declaration in the calling
module so that it can be found later on, if the declaration is reexported by
the calling module.
defer_import_finalization
is called by load_and_register
to
earmark a module for deferred initialization if it hasn’t been fully loaded
yet.
finalize_deferred
exports and attaches names from a module use
declaration which has been deferred due to being part of a cyclic loading
chain.
export_and_attach
exports and attaches names from a given module use
declaration.
load_from_source
loads a module source file into its newly created,
empty module namespace.
load_mod
tests whether a module or package was already loaded and, if
not, loads it.
mod_exports
returns an export environment containing a copy of the
module’s exported objects.
attach_to_caller
attaches the listed names of an attach specification
for a given use declaration to the calling environment.
assign_alias
creates a module/package object in calling environment,
unless it contains an attach declaration, and no explicit alias is given.
assign_temp_alias
creates a placeholder object for the module in the
calling environment, to be replaced by the actual module export environment
once the module is completely loaded (which happens in the case of cyclic
imports).