From c5c170bac070c1bbc0e008e05783109c2e49afab Mon Sep 17 00:00:00 2001 From: "Luke T. Shumaker" Date: Sat, 25 Jan 2025 22:44:59 -0700 Subject: lib9p: idl.gen: Detect when we try to import a sym that doesn't exist --- lib9p/idl/2010-9P2000.L.9p | 2 +- lib9p/idl/__init__.py | 6 ++++++ 2 files changed, 7 insertions(+), 1 deletion(-) (limited to 'lib9p/idl') diff --git a/lib9p/idl/2010-9P2000.L.9p b/lib9p/idl/2010-9P2000.L.9p index 3886265..8edf18d 100644 --- a/lib9p/idl/2010-9P2000.L.9p +++ b/lib9p/idl/2010-9P2000.L.9p @@ -9,7 +9,7 @@ version "9P2000.L" 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 ./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 diff --git a/lib9p/idl/__init__.py b/lib9p/idl/__init__.py index fec6c41..41664f1 100644 --- a/lib9p/idl/__init__.py +++ b/lib9p/idl/__init__.py @@ -449,8 +449,10 @@ def parse_file( other_version, other_typs = get_include(m.group("file")) for symname in m.group("syms").split(sep=","): symname = symname.strip() + found = False for typ in other_typs: if typ.name == symname or symname == "*": + found = True match typ: case Primitive(): pass @@ -467,6 +469,10 @@ def parse_file( if other_version in member.in_versions: member.in_versions.add(version) env[typ.name] = typ + if symname != "*" and not found: + raise ValueError( + f"import: {m.group('file')}: no symbol {repr(symname)}" + ) elif m := re.fullmatch(re_line_num, line): num = Number() num.name = m.group("name") -- cgit v1.2.3-2-g168b