RMUL2025/lib/cmsis_5/CMSIS/DSP/Testing/TestScripts/Deprecate.py

49 lines
1.6 KiB
Python
Executable File

from collections import deque
import TestScripts.Parser
# When deprecation is forced on some nodes
# we ensure that a parent of a valid node is also valid
def correctDeprecation(node):
current = node.data["deprecated"]
for c in node.children:
if not correctDeprecation(c):
current = False
node.data["deprecated"] = current
return(current)
def inheritDeprecation(node,deprecated):
current = node.data["deprecated"] or deprecated
node.data["deprecated"] = current
if node.kind != TestScripts.Parser.TreeElem.TEST:
for c in node.children:
inheritDeprecation(c,current)
def deprecateRec(root,others,deprecated):
if others:
newOthers=others.copy()
newOthers.popleft()
if root.kind == TestScripts.Parser.TreeElem.TEST:
if others[0].isdigit() and int(root.id) == int(others[0]):
root.data["deprecated"]=False
for c in root.children:
deprecateRec(c,newOthers,False)
else:
root.data["deprecated"]=True
for c in root.children:
deprecateRec(c,others,deprecated)
else:
if root.data["class"] == others[0]:
root.data["deprecated"]=False
for c in root.children:
deprecateRec(c,newOthers,False)
else:
root.data["deprecated"]=deprecated
for c in root.children:
deprecateRec(c,others,deprecated)
def deprecate(root,others):
inheritDeprecation(root,False)
if others:
deprecateRec(root,deque(others),True)
correctDeprecation(root)