tests: pending-backend 격리를 없앤다

코드 생성기가 없어서 돌릴 수 없던 것들이다. 이제 돌아간다. 경계 트랩,
--no-checks 차등, 슬라이스 범위 검사, 소유권 해제가 전부 exec/ 에서
실행으로 검증되므로 격리할 이유가 없다.

run.py 205/205, exec.py 17/17.
This commit is contained in:
2026-08-17 06:32:57 +09:00
parent 3a01cb4c51
commit b0c9338cf3
10 changed files with 31 additions and 251 deletions
+6 -9
View File
@@ -1,9 +1,8 @@
"""Run every fixture through the front end and check what it reports.
The compiler is a front end now -- lexer, parser, types, ownership -- so a
fixture is checked by running `fec` on it and looking at two things: whether it
was accepted, and, when it was rejected, whether the diagnostic is the one the
fixture asked for.
A fixture is checked by running `fec` on it and looking at two things: whether
it was accepted, and, when it was rejected, whether the diagnostic is the one
the fixture asked for.
A fixture states its expectation in its first line:
@@ -17,8 +16,8 @@ not pin the message yet. Anything else must be accepted.
Fixtures under `parse/` are checked with --dump-ast rather than --check: they
exercise the grammar, and several are deliberately not well-typed.
This runs on the host in about a second. There is no VM: nothing here executes
generated code, because there is no code generator.
This runs on the host in about a second. It checks what the compiler says; what
the compiled programs actually do is `exec.py`.
"""
from __future__ import annotations
@@ -35,8 +34,6 @@ FIXTURES = ROOT / "fec" / "tests"
WATCOM = ROOT / ".dosboxx" / "watcom"
SOURCES = ("arena", "diag", "lexer", "ast", "parser", "types", "m7", "own",
"check", "resolve", "ir", "lower", "x86", "driver")
# Fixtures live here until there is a code generator to run them against.
QUARANTINE = "pending-backend"
MARKER = re.compile(r"^//\s*ERROR:(?:(\d+):)?(.*)$")
@@ -116,7 +113,7 @@ def main() -> int:
args = ap.parse_args()
fec = build(ROOT / ".build")
cases = sorted(p for p in FIXTURES.rglob("*.fe") if QUARANTINE not in p.parts)
cases = sorted(FIXTURES.rglob("*.fe"))
if args.select:
cases = [p for p in cases if args.select in p.as_posix()]