diff --git a/src/macro-core/macro-condition.cpp b/src/macro-core/macro-condition.cpp index 600b167b..babdadb4 100644 --- a/src/macro-core/macro-condition.cpp +++ b/src/macro-core/macro-condition.cpp @@ -153,3 +153,10 @@ void MacroRefCondition::ResolveMacroRef() { _macro.UpdateRef(); } + +void MultiMacroRefCondtition::ResolveMacroRef() +{ + for (auto &m : _macros) { + m.UpdateRef(); + } +} diff --git a/src/macro-core/macro-condition.hpp b/src/macro-core/macro-condition.hpp index 3265b534..fd872bdd 100644 --- a/src/macro-core/macro-condition.hpp +++ b/src/macro-core/macro-condition.hpp @@ -86,3 +86,10 @@ public: void ResolveMacroRef(); MacroRef _macro; }; + +class MultiMacroRefCondtition : public MacroCondition { +public: + MultiMacroRefCondtition(Macro *m) : MacroCondition(m) {} + void ResolveMacroRef(); + std::vector _macros; +}; diff --git a/src/macro-core/macro.cpp b/src/macro-core/macro.cpp index 5ec928ad..efe564fb 100644 --- a/src/macro-core/macro.cpp +++ b/src/macro-core/macro.cpp @@ -409,6 +409,11 @@ void Macro::ResolveMacroRef() if (ref) { ref->ResolveMacroRef(); } + MultiMacroRefCondtition *ref2 = + dynamic_cast(c.get()); + if (ref2) { + ref2->ResolveMacroRef(); + } } for (auto &a : _actions) { MacroRefAction *ref = dynamic_cast(a.get());