From 3e4e38f6987d7435232b175fd0070608b76b4d50 Mon Sep 17 00:00:00 2001 From: Oliver Reiche Date: Wed, 24 Aug 2022 18:23:37 +0200 Subject: Rules: Implement hierarchical defaults --- CC/EXPRESSIONS | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) (limited to 'CC/EXPRESSIONS') diff --git a/CC/EXPRESSIONS b/CC/EXPRESSIONS index d04591f..7ebc8ad 100644 --- a/CC/EXPRESSIONS +++ b/CC/EXPRESSIONS @@ -48,6 +48,29 @@ , "body": {"type": "CALL_EXPRESSION", "name": "provider_list"} } } +, "defaults-base-provides": + { "doc": ["Query list-provider from 'base' targets (last wins)"] + , "vars": ["provider"] + , "vars_doc": + {"provider": ["The name of the list-provider in the provides map."]} + , "imports": {"provider_list": ["./", "..", "field_provider_list"]} + , "expression": + { "type": "let*" + , "bindings": [["fieldname", "base"]] + , "body": + { "type": "foldl" + , "var": "next" + , "accum_var": "curr" + , "range": {"type": "CALL_EXPRESSION", "name": "provider_list"} + , "body": + { "type": "if" + , "cond": {"type": "var", "name": "next"} + , "then": {"type": "var", "name": "next"} + , "else": {"type": "var", "name": "curr"} + } + } + } + } , "configure transition": { "vars": ["COMPILER_FAMILY"] , "expression": -- cgit v1.2.3