diff options
author | Klaus Aehlig <klaus.aehlig@huawei.com> | 2022-02-23 14:04:41 +0100 |
---|---|---|
committer | Klaus Aehlig <klaus.aehlig@huawei.com> | 2022-02-23 14:04:41 +0100 |
commit | 6f1bff70d3757268275fca937ff93d1a6475c3f1 (patch) | |
tree | 116a2178ba11057175be5f477f9715931c423c43 | |
parent | 86c4f55b6f578bfae74ab35151c1e4425b7e1fd1 (diff) | |
download | rules-cc-6f1bff70d3757268275fca937ff93d1a6475c3f1.tar.gz |
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.
-rw-r--r-- | EXPRESSIONS | 57 |
1 files changed, 33 insertions, 24 deletions
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"} + } } } } |