diff options
author | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2023-05-05 14:41:19 +0200 |
---|---|---|
committer | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2023-05-08 21:58:56 +0200 |
commit | 0bdce695b8912620d44d43faf1326463aadb96a9 (patch) | |
tree | eaa52e4718bd2771b2d4602ba2675fd4b1bf7b2a /specview.py | |
parent | interface: Improve enabled-by for header files (diff) | |
download | rtems-central-0bdce695b8912620d44d43faf1326463aadb96a9.tar.bz2 |
specview.py: Improve container validation
Diffstat (limited to 'specview.py')
-rwxr-xr-x | specview.py | 25 |
1 files changed, 19 insertions, 6 deletions
diff --git a/specview.py b/specview.py index 14a61936..854d5e8c 100755 --- a/specview.py +++ b/specview.py @@ -156,8 +156,6 @@ _VALIDATION_LEAF = [ "constraint", "glossary/group", "glossary/term", - "interface/appl-config-group", - "interface/container", "interface/domain", "interface/enum", "interface/enumerator", @@ -190,21 +188,36 @@ _VALIDATION_LEAF = [ _VALIDATION_ROLES = _CHILD_ROLES + ["validation"] -def _validate(item: Item) -> bool: +def _validate_tree(item: Item) -> bool: + pre_qualified = is_pre_qualified(item) + item["_pre_qualified"] = pre_qualified validated = True count = 0 for link in itertools.chain(item.links_to_children(_VALIDATION_ROLES), item.links_to_parents(_PARENT_ROLES)): - validated = _validate(link.item) and validated + validated = _validate_tree(link.item) and validated count += 1 - pre_qualified = is_pre_qualified(item) - item["_pre_qualified"] = pre_qualified if count == 0: validated = (not pre_qualified) or (item.type in _VALIDATION_LEAF) item["_validated"] = validated return validated +def _validate_containers(item: Item) -> None: + for item_2 in itertools.chain( + item.cache.items_by_type["interface/domain"], + item.cache.items_by_type["interface/header-file"]): + for item_3 in item_2.children("interface-placement"): + if not item_3["_validated"]: + item_2["_validated"] = False + break + + +def _validate(item: Item) -> None: + _validate_tree(item) + _validate_containers(item) + + def _validation_count(item: Item) -> int: return len(list(child for child in item.children("validation"))) |