From 6e60a6d4cc69b0f03c31b9cf4cd042422e49e2f6 Mon Sep 17 00:00:00 2001 From: "Luke T. Shumaker" Date: Thu, 23 Jan 2025 01:48:23 -0700 Subject: lib9p: idl: 9P2000.L: Also import Rerror For some of the imported methods, it doesn't specify to use Rlerror instead of Rerror. --- lib9p/idl/2010-9P2000.L.9p | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'lib9p/idl') diff --git a/lib9p/idl/2010-9P2000.L.9p b/lib9p/idl/2010-9P2000.L.9p index 972e7d0..bc36f01 100644 --- a/lib9p/idl/2010-9P2000.L.9p +++ b/lib9p/idl/2010-9P2000.L.9p @@ -7,7 +7,9 @@ # https://github.com/chaos/diod/blob/master/protocol.md version "9P2000.L" -from ./2002-9P2000.9p import tag, fid, s, qt, qid, Tversion, Rversion, Tflush, Rflush, Twalk, Rwalk, Tread, Rread, Twrite, Rwrite, Tclunk, RClunk, Tremove, Rremove +from ./2002-9P2000.9p import tag, fid, s, qt, qid +from ./2002-9P2000.9p import Rerror +from ./2002-9P2000.9p import Tversion, Rversion, Tflush, Rflush, Twalk, Rwalk, Tread, Rread, Twrite, Rwrite, Tclunk, RClunk, Tremove, Rremove from ./2005-9P2000.u.9p import nuid, Tauth, Rauth, Tattach, Rattach bitfield getattr = 8 -- cgit v1.2.3-2-g168b From 990dcf244fc4bc09d1395f2a0415a22517db72b7 Mon Sep 17 00:00:00 2001 From: "Luke T. Shumaker" Date: Thu, 23 Jan 2025 12:21:17 -0700 Subject: lib9p: idl.gen: Validate that member types exist --- lib9p/idl/2010-9P2000.L.9p | 2 +- lib9p/idl/__init__.py | 7 +++++++ 2 files changed, 8 insertions(+), 1 deletion(-) (limited to 'lib9p/idl') diff --git a/lib9p/idl/2010-9P2000.L.9p b/lib9p/idl/2010-9P2000.L.9p index bc36f01..3886265 100644 --- a/lib9p/idl/2010-9P2000.L.9p +++ b/lib9p/idl/2010-9P2000.L.9p @@ -7,7 +7,7 @@ # https://github.com/chaos/diod/blob/master/protocol.md version "9P2000.L" -from ./2002-9P2000.9p import tag, fid, s, qt, qid +from ./2002-9P2000.9p import tag, fid, s, d, qt, qid from ./2002-9P2000.9p import Rerror from ./2002-9P2000.9p import Tversion, Rversion, Tflush, Rflush, Twalk, Rwalk, Tread, Rread, Twrite, Rwrite, Tclunk, RClunk, Tremove, Rremove from ./2005-9P2000.u.9p import nuid, Tauth, Rauth, Tattach, Rattach diff --git a/lib9p/idl/__init__.py b/lib9p/idl/__init__.py index 8fd7e25..fec6c41 100644 --- a/lib9p/idl/__init__.py +++ b/lib9p/idl/__init__.py @@ -550,6 +550,13 @@ def parse_file( for typ in [typ for typ in typs if isinstance(typ, Struct)]: valid_syms = ["end", "s32_max", "s64_max", *["&" + m.name for m in typ.members]] for member in typ.members: + if ( + not isinstance(member.typ, Primitive) + and member.typ.in_versions < member.in_versions + ): + raise ValueError( + f"{typ.name}.{member.name}: type {member.typ.name} does not exist in {member.in_versions.difference(member.typ.in_versions)}" + ) for tok in [*member.max.tokens, *member.val.tokens]: if isinstance(tok, ExprSym) and tok.name not in valid_syms: raise ValueError( -- cgit v1.2.3-2-g168b