From 6f1bff70d3757268275fca937ff93d1a6475c3f1 Mon Sep 17 00:00:00 2001 From: Klaus Aehlig Date: Wed, 23 Feb 2022 14:04:41 +0100 Subject: common rule expression: improve error reporting ... by asserting that "stage_singleton_field" return a non-empty map and providing a meaningful message in the "disjoint_map_union" contained in it. --- EXPRESSIONS | 57 +++++++++++++++++++++++++++++++++------------------------ 1 file changed, 33 insertions(+), 24 deletions(-) (limited to 'EXPRESSIONS') diff --git a/EXPRESSIONS b/EXPRESSIONS index 9b35b0a..d9b8562 100644 --- a/EXPRESSIONS +++ b/EXPRESSIONS @@ -53,33 +53,42 @@ , "stage_singleton_field": { "vars": ["fieldname", "transition", "location"] , "expression": - { "type": "disjoint_map_union" + { "type": "assert_non_empty" + , "msg": + ["No artifact specified in field", {"type": "var", "name": "fieldname"}] , "$1": - { "type": "foreach" - , "var": "src" - , "range": - {"type": "FIELD", "name": {"type": "var", "name": "fieldname"}} - , "body": - { "type": "disjoint_map_union" - , "$1": - { "type": "foreach" - , "var": "artifact" - , "range": - { "type": "values" - , "$1": - { "type": "DEP_ARTIFACTS" - , "dep": {"type": "var", "name": "src"} - , "transition": - { "type": "var" - , "name": "transition" - , "default": {"type": "empty_map"} + { "type": "disjoint_map_union" + , "msg": + [ "Expecting (essentially) a single artifact in field" + , {"type": "var", "name": "fieldname"} + ] + , "$1": + { "type": "foreach" + , "var": "src" + , "range": + {"type": "FIELD", "name": {"type": "var", "name": "fieldname"}} + , "body": + { "type": "disjoint_map_union" + , "$1": + { "type": "foreach" + , "var": "artifact" + , "range": + { "type": "values" + , "$1": + { "type": "DEP_ARTIFACTS" + , "dep": {"type": "var", "name": "src"} + , "transition": + { "type": "var" + , "name": "transition" + , "default": {"type": "empty_map"} + } } } - } - , "body": - { "type": "singleton_map" - , "key": {"type": "var", "name": "location"} - , "value": {"type": "var", "name": "artifact"} + , "body": + { "type": "singleton_map" + , "key": {"type": "var", "name": "location"} + , "value": {"type": "var", "name": "artifact"} + } } } } -- cgit v1.2.3