[rtems-central commit] specview.py: Improve container validation

Sebastian Huber sebh at rtems.org
Tue May 9 13:45:26 UTC 2023


Module:    rtems-central
Branch:    master
Commit:    0bdce695b8912620d44d43faf1326463aadb96a9
Changeset: http://git.rtems.org/rtems-central/commit/?id=0bdce695b8912620d44d43faf1326463aadb96a9

Author:    Sebastian Huber <sebastian.huber at embedded-brains.de>
Date:      Fri May  5 14:41:19 2023 +0200

specview.py: Improve container validation

---

 specview.py | 25 +++++++++++++++++++------
 1 file 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")))
 



More information about the vc mailing list