From df875cd9301090a533f877df69e0e75c4d5adc31 Mon Sep 17 00:00:00 2001 From: Mike Lin Date: Tue, 30 Apr 2024 17:11:22 -0700 Subject: [PATCH] wip --- WDL/Expr.py | 3 ++- WDL/Value.py | 2 +- WDL/_parser.py | 4 ++-- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/WDL/Expr.py b/WDL/Expr.py index be672435..e0da0854 100644 --- a/WDL/Expr.py +++ b/WDL/Expr.py @@ -942,7 +942,8 @@ class Get(Base): def __init__(self, pos: SourcePosition, expr: Base, member: Optional[str]) -> None: super().__init__(pos) - assert expr + assert isinstance(expr, Base) + assert isinstance(member, (str, type(None))) self.expr = expr self.member = member diff --git a/WDL/Value.py b/WDL/Value.py index 4a88d7dc..55d6e91b 100644 --- a/WDL/Value.py +++ b/WDL/Value.py @@ -579,7 +579,7 @@ def from_json(type: Type.Base, value: Any) -> Base: raise Error.InputError( f"couldn't initialize struct {str(type)} {type.members[k]} {k} from {json.dumps(v)}" ) from None - return Struct(Type.Object(type.members), items, extra=extra) + return Struct(type, items, extra=extra) if type.optional and value is None: return Null() raise Error.InputError(f"couldn't construct {str(type)} from {json.dumps(value)}") diff --git a/WDL/_parser.py b/WDL/_parser.py index fcbadaed..5c316e5c 100644 --- a/WDL/_parser.py +++ b/WDL/_parser.py @@ -257,8 +257,8 @@ def left_name(self, meta, items) -> Expr.Base: return Expr.Get(self._sp(meta), Expr._LeftName(self._sp(meta), items[0]), None) def get_name(self, meta, items) -> Expr.Base: - assert len(items) == 2 and isinstance(items[0], Expr.Base) and isinstance(items[1], str) - return Expr.Get(self._sp(meta), items[0], items[1]) + assert len(items) == 2 and isinstance(items[0], Expr.Base) and isinstance(items[1].value, str) + return Expr.Get(self._sp(meta), items[0], items[1].value) # _ExprTransformer infix operators