File tree Expand file tree Collapse file tree 1 file changed +18
-0
lines changed
Expand file tree Collapse file tree 1 file changed +18
-0
lines changed Original file line number Diff line number Diff line change 22#include " runcpp2/Data/ParseCommon.hpp"
33#include " runcpp2/StringUtil.hpp"
44
5+ #include < unordered_set>
6+
57runcpp2::NodeRequirement::NodeRequirement () : Name(" " ),
68 NodeType(),
79 Required(false ),
@@ -109,6 +111,22 @@ bool runcpp2::CheckNodeRequirements(ryml::ConstNodeRef node,
109111 return false ;
110112 }
111113
114+ // All keys must be unique
115+ {
116+ std::unordered_set<std::string> childKeys;
117+ for (int i = 0 ; i < node.num_children (); ++i)
118+ {
119+ std::string currentKey = GetKey (node[i]);
120+ if (childKeys.count (currentKey) != 0 )
121+ {
122+ ssLOG_ERROR (" Duplicate key found for: " << currentKey);
123+ return false ;
124+ }
125+ else
126+ childKeys.insert (GetKey (node[i]));
127+ }
128+ }
129+
112130 for (int i = 0 ; i < requirements.size (); ++i)
113131 {
114132 if (!CheckNodeRequirement ( node,
You can’t perform that action at this time.
0 commit comments