diff --git a/src/core/defs.jl b/src/core/defs.jl index 23905bb24..15e5eeb5e 100644 --- a/src/core/defs.jl +++ b/src/core/defs.jl @@ -1,4 +1,11 @@ -compdef(comp_id::ComponentId) = getfield(getfield(Main, comp_id.module_name), comp_id.comp_name) +# Try to locate a module object by its symbolic name +get_module(name::Symbol) = (name == :Mimi ? Mimi : getfield(Mimi.Main, name)) + +function compdef(comp_id::ComponentId) + comp_module = get_module(comp_id.module_name) + comp_def = getfield(comp_module, comp_id.comp_name) + return comp_def +end compdefs(md::ModelDef) = values(md.comp_defs) diff --git a/src/core/types.jl b/src/core/types.jl index 2860a679f..8ed4d68c3 100644 --- a/src/core/types.jl +++ b/src/core/types.jl @@ -357,7 +357,7 @@ mutable struct ComponentInstance{TV <: ComponentInstanceVariables, TP <: Compone comp_name = comp_id.comp_name module_name = comp_id.module_name - comp_module = getfield(Main, module_name) + comp_module = get_module(module_name) # TBD: use FunctionWrapper here? function get_func(name)