From 3c642426ea83629c1eedbf5fc877fe51f01ed234 Mon Sep 17 00:00:00 2001 From: Henri Chataing 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