diff options
-rw-r--r-- | lib9p/idl/__init__.py | 18 |
1 files changed, 14 insertions, 4 deletions
diff --git a/lib9p/idl/__init__.py b/lib9p/idl/__init__.py index f8e1a38..6fa26b4 100644 --- a/lib9p/idl/__init__.py +++ b/lib9p/idl/__init__.py @@ -414,15 +414,25 @@ def parse_members(ver: str, env: dict[str, Type], struct: Struct, specs: str) -> _ = member.max_cnt # force validation if maxstr := m.group("max"): - if (not isinstance(member.typ, Primitive)) or member.cnt: - raise ValueError("',max=' may only be specified on a non-repeated atom") + if ( + not isinstance(member.typ, Primitive) + and not isinstance(member.typ, Number) + ) or member.cnt: + raise ValueError( + "',max=' may only be specified on a non-repeated numeric type" + ) member.max = parse_expr(maxstr) else: member.max = Expr() if valstr := m.group("val"): - if (not isinstance(member.typ, Primitive)) or member.cnt: - raise ValueError("',val=' may only be specified on a non-repeated atom") + if ( + not isinstance(member.typ, Primitive) + and not isinstance(member.typ, Number) + ) or member.cnt: + raise ValueError( + "',val=' may only be specified on a non-repeated numeric type" + ) member.val = parse_expr(valstr) else: member.val = Expr() |