From 0ba01fe5e2ee7468d55fe8d096ab4e9a7cc687b7 Mon Sep 17 00:00:00 2001 From: dela Date: Sat, 22 Aug 2026 10:13:49 +0800 Subject: [PATCH] fix: align lint role-before-use check with siblings supertensor lint.py now rejects role= used before \stsetrole, matching superfig and superderive lint behavior. Previously this was only caught at TeX compile time by \stcheckrole. --- scripts/lint.py | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/scripts/lint.py b/scripts/lint.py index 04912fb..3c45b15 100755 --- a/scripts/lint.py +++ b/scripts/lint.py @@ -68,6 +68,14 @@ def lint(path: Path) -> list[str]: dimensions = check_unique(source, DIM_RE, "axis", errors) roles = check_unique(source, ROLE_RE, "role", errors) + for match in ROLE_KEY_RE.finditer(source): + role = match.group(1) + if role not in roles: + errors.append( + f"line {line_of(source, match.start())}: role {role!r} is used " + f"before \\stsetrole" + ) + formula_positions = [m.start() for m in re.finditer(r"\\sttopformula\b", source)] row_ends = [m.start() for m in re.finditer(r"\\strowend\b", source)] if not formula_positions and "allow-missing-formula" not in allowed: