Files
RedBear-OS/local/recipes/dev/libclc/source/llvm/test/TableGen/exists.td
T
vasilito cb424d7448 build: static patch-sanity linter (shift-left the malformed-patch class)
verify-patch-sanity.py validates every active recipe .patch has internally-
consistent hunk line counts — catching the 'malformed patch at line N' failure
at commit/CI/preflight time instead of hours into a cook. This cycle hit that
class three times (qtwaylandscanner, sddm, xwayland), each only discovered when
cookbook tried to apply the patch.

Running it across the repo found 29 latent malformed patches (validated against
GNU patch: e.g. relibc/P3-sysv-ipc reproduces 'malformed patch at line 22').
They were harmless only because they sit in vendored recipes (baked, not re-
applied) — but would fail on any version-bump re-derivation. --fix recounts the
hunk headers (body untouched) and repaired all 29.

Wired into build-preflight.sh (Phase 1.0D) and redbear-ci.yml, with a unit test
(test-patch-sanity.sh). Skips archived/legacy trees and unvalidatable formats
(empty placeholders, bare-@@ git hunks).
2026-08-01 05:13:02 +03:00

102 lines
2.0 KiB
TableGen

// RUN: llvm-tblgen --no-warn-on-unused-template-args %s | FileCheck %s
// XFAIL: vg_leak
class A;
def a0 : A;
class A_check<string name>{
int exists = !exists<A>(name);
}
def a0_exists : A_check<"a0">;
def a1_missing : A_check<"a1">;
// Subclasses are allowed.
class B;
class SubOfB : B;
class B_check<string name> {
int exists = !exists<B>(name);
}
def sub : SubOfB;
def sub_exists : B_check<"sub">;
def a0_is_not_sub_of_B : B_check<"a0">;
// Self-references are allowed.
class Self_check<string name> {
int exists = !exists<Self_check>(name);
}
def self_reference : Self_check<"self_reference">; // Self-reference
// There is no record called `current` in current context though we will define it below.
def current_missing : Self_check<"current">;
def current : Self_check<"current">;
// Check that conditional definitions dependent on the resolution of an
// exists clause work as expected.
// Reminder: a0 exists, a1 does not.
class C {
int exists = 1;
}
if !exists<A>("a0") then
def if_exists : C;
if !exists<A>("a1") then
def if_no_exists: C;
foreach e = ["a0", "a1"] in {
if !exists<A>(e) then
def for_exists_ # e: C;
}
multiclass mc {
foreach e = ["a0", "a1"] in {
if !exists<A>(e) then
def _ # e: C;
}
}
defm multiclass_exists : mc<>;
// CHECK: def a0_exists {
// CHECK: int exists = 1;
// CHECK: }
// CHECK: def a0_is_not_sub_of_B {
// CHECK: int exists = 0;
// CHECK: }
// CHECK: def a1_missing {
// CHECK: int exists = 0;
// CHECK: }
// CHECK: def current {
// CHECK: int exists = 1;
// CHECK: }
// `current` doesn't exist because we define it below `current_missing`.
// CHECK: def current_missing {
// CHECK: int exists = 0;
// CHECK: }
// CHECK: def for_exists_a0 {
// CHECK: int exists = 1;
// CHECK: }
// CHECK: def if_exists {
// CHECK: int exists = 1;
// CHECK: }
// CHECK: def multiclass_exists_a0 {
// CHECK: int exists = 1;
// CHECK: }
// CHECK: def self_reference {
// CHECK: int exists = 1;
// CHECK: }
// CHECK: def sub_exists {
// CHECK: int exists = 1;
// CHECK: }