diff --git a/roofit/roofitcore/src/RooCmdConfig.cxx b/roofit/roofitcore/src/RooCmdConfig.cxx index 1b144337f82df..c19a0b21ca418 100644 --- a/roofit/roofitcore/src/RooCmdConfig.cxx +++ b/roofit/roofitcore/src/RooCmdConfig.cxx @@ -34,7 +34,7 @@ arguments and dependencies between arguments. #include #include - +#include namespace { @@ -286,18 +286,24 @@ void RooCmdConfig::print() const } } - - //////////////////////////////////////////////////////////////////////////////// /// Process given list with RooCmdArgs +/// Emit warning if duplicate arguments bool RooCmdConfig::process(const RooLinkedList& argList) { - bool ret(false) ; - for(auto * arg : static_range_cast(argList)) { - ret |= process(*arg) ; - } - return ret ; + bool ret(false); + std::set opcodes; + for (auto *arg : static_range_cast(argList)) { + auto opc = arg->opcode(); + if (opc && opcodes.find(opc) != opcodes.end()) { + coutW(InputArguments) << _name << " WARNING: argument " << opc << " is duplicated" << std::endl; + } else if (opc) { + opcodes.insert(opc); + } + ret |= process(*arg); + } + return ret; }