diff --git a/userspace/engine/rule_loader_reader.cpp b/userspace/engine/rule_loader_reader.cpp index e87e8c27..b489b0f2 100644 --- a/userspace/engine/rule_loader_reader.cpp +++ b/userspace/engine/rule_loader_reader.cpp @@ -441,10 +441,11 @@ static void read_item( std::set override_append, override_replace; std::set overridable {"items"}; decode_overrides(item, overridable, overridable, override_append, override_replace, ctx); + bool has_overrides = !override_append.empty() || !override_replace.empty(); - if(append == true && !override_replace.empty()) + if(append == true && has_overrides) { - THROW(true, "Cannot specify a replace override when 'append: true' is set", ctx); + THROW(true, "Keys 'override' and 'append: true' cannot be used together.", ctx); } // Since a list only has items, if we have chosen to append them we can append the entire object @@ -482,10 +483,11 @@ static void read_item( std::set override_append, override_replace; std::set overridable {"condition"}; decode_overrides(item, overridable, overridable, override_append, override_replace, ctx); + bool has_overrides = !override_append.empty() || !override_replace.empty(); - if(append == true && !override_replace.empty()) + if(append == true && has_overrides) { - THROW(true, "Cannot specify a replace override when 'append: true' is set", ctx); + THROW(true, "Keys 'override' and 'append: true' cannot be used together.", ctx); } // Since a macro only has a condition, if we have chosen to append to it we can append the entire object @@ -523,7 +525,8 @@ static void read_item( bool has_overrides_replace = !override_replace.empty(); bool has_overrides = has_overrides_append || has_overrides_replace; - THROW((has_append_flag && has_overrides), "Keys 'override' and 'append' cannot be used together.", ctx); + THROW((has_append_flag && has_overrides), + "Keys 'override' and 'append: true' cannot be used together. Add an append entry (e.g. 'condition: append') under override instead.", ctx); if(has_overrides) {