diff --git a/tools/projmgr/src/ProjMgrYamlParser.cpp b/tools/projmgr/src/ProjMgrYamlParser.cpp index c933785ab..df436fb13 100644 --- a/tools/projmgr/src/ProjMgrYamlParser.cpp +++ b/tools/projmgr/src/ProjMgrYamlParser.cpp @@ -486,10 +486,15 @@ void ProjMgrYamlParser::ParseVectorOfStringPairs(const YAML::Node& parent, const if (item.IsMap()) { const auto& elements = item.as>(); for (auto element : elements) { - if (YAML::IsNullString(element.second)) { - element.second = ""; + // skip parsing variable named "copied-from" + // This is a special case used by the CMSIS csolution extension + // and may involve redefinitions + if (element.first != "copied-from") { + if (YAML::IsNullString(element.second)) { + element.second = ""; + } + value.push_back(element); } - value.push_back(element); } } else { value.push_back(make_pair(item.as(), "")); diff --git a/tools/projmgr/test/data/TestLayers/variables-redefinition.csolution.yml b/tools/projmgr/test/data/TestLayers/variables-redefinition.csolution.yml index c4d00a356..483233758 100644 --- a/tools/projmgr/test/data/TestLayers/variables-redefinition.csolution.yml +++ b/tools/projmgr/test/data/TestLayers/variables-redefinition.csolution.yml @@ -7,12 +7,14 @@ solution: compiler: AC6 variables: - VariableName: FirstValue + - copied-from: /buildtype/test.yml target-types: - type: TargetType device: RteTest_ARMCM0 variables: - VariableName: SecondValue + - copied-from: /targettype/test.yml projects: - project: variables-redefinition.cproject.yml