From d67db573786da4780653e72879033b9e24e83e28 Mon Sep 17 00:00:00 2001 From: "Luke T. Shumaker" Date: Fri, 28 Mar 2025 10:54:08 -0600 Subject: lib9p: idl: Allow Numbers to have ,val= or ,max= --- lib9p/idl/__init__.py | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) (limited to 'lib9p/idl/__init__.py') 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() -- cgit v1.2.3-2-g168b