blob: 60ece50333d90e54c736f97ef1cd1ed85561ce0d [file] [log] [blame]
From 3c642426ea83629c1eedbf5fc877fe51f01ed234 Mon Sep 17 00:00:00 2001
From: Henri Chataing <henrichataing@google.com>
Date: Thu, 2 Nov 2023 22:10:06 +0000
Subject: [PATCH] Ensure compatibility with python 3.8
Change-Id: I8db6ec0239fca889b39317c91f75bf0ddc4f3741
---
scripts/pdl/ast.py | 12 +++++++++---
1 file changed, 9 insertions(+), 3 deletions(-)
diff --git a/scripts/pdl/ast.py b/scripts/pdl/ast.py
index 4aff1cc..5ade0fa 100644
--- a/scripts/pdl/ast.py
+++ b/scripts/pdl/ast.py
@@ -66,7 +66,7 @@ class Constraint(Node):
@dataclass
class Field(Node):
parent: Node = field(init=False)
- cond: Optional[Constraint] = field(kw_only=True, default=None)
+ cond: Optional[Constraint] = field(init=False, default=None)
# Backlink to the (optional) optional field referencing
# this field as condition.
cond_for: Optional['Field'] = field(init=False, default=None)
@@ -277,8 +277,14 @@ def convert_(obj: object) -> object:
loc = SourceRange(loc['file'], SourceLocation(**loc['start']), SourceLocation(**loc['end']))
constructor = constructors_.get(kind)
members = {'loc': loc, 'kind': kind}
+ cond = None
for name, value in obj.items():
- if name != 'kind' and name != 'loc':
+ if name == 'cond':
+ cond = convert_(value)
+ elif name != 'kind' and name != 'loc':
members[name] = convert_(value)
- return constructor(**members)
+ val = constructor(**members)
+ if cond:
+ val.cond = cond
+ return val
raise Exception('Unhandled json object type')
--
2.42.0.869.gea05f2083d-goog