[clang-tools-extra] [clang-tidy] Reject malformed -std spellings in `check_clang_tidy.py`. NFC. (PR #195609)
Zeyi Xu via cfe-commits
cfe-commits at lists.llvm.org
Wed May 6 22:36:51 PDT 2026
https://github.com/zeyi2 updated https://github.com/llvm/llvm-project/pull/195609
>From 4ca17bf32ba0aca05e9775baa5d8ec5273731974 Mon Sep 17 00:00:00 2001
From: Zeyi Xu <mitchell.xu2 at gmail.com>
Date: Mon, 4 May 2026 16:21:32 +0800
Subject: [PATCH 1/3] [clang-tidy] Reject malformed -std spellings. NFC.
---
clang-tools-extra/test/clang-tidy/check_clang_tidy.py | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/clang-tools-extra/test/clang-tidy/check_clang_tidy.py b/clang-tools-extra/test/clang-tidy/check_clang_tidy.py
index 71c072e62e3f2..f932b77ecaba3 100755
--- a/clang-tools-extra/test/clang-tidy/check_clang_tidy.py
+++ b/clang-tools-extra/test/clang-tidy/check_clang_tidy.py
@@ -460,11 +460,14 @@ def run(self) -> None:
def expand_std(std: str) -> List[str]:
- split_std, or_later, _ = std.partition("-or-later")
+ split_std, or_later, suffix = std.partition("-or-later")
if not or_later:
return [split_std]
+ if suffix:
+ return [std]
+
for standard_list in (CPP_STANDARDS, C_STANDARDS):
item = next(
(
>From 771bb947142d20b26ecdf2b7dad7a4250c6dc7fb Mon Sep 17 00:00:00 2001
From: Zeyi Xu <mitchell.xu2 at gmail.com>
Date: Mon, 4 May 2026 16:44:42 +0800
Subject: [PATCH 2/3] fixup
---
.../test/clang-tidy/check_clang_tidy.py | 41 ++++++++++---------
1 file changed, 22 insertions(+), 19 deletions(-)
diff --git a/clang-tools-extra/test/clang-tidy/check_clang_tidy.py b/clang-tools-extra/test/clang-tidy/check_clang_tidy.py
index f932b77ecaba3..557d637e3d44a 100755
--- a/clang-tools-extra/test/clang-tidy/check_clang_tidy.py
+++ b/clang-tools-extra/test/clang-tidy/check_clang_tidy.py
@@ -462,25 +462,28 @@ def run(self) -> None:
def expand_std(std: str) -> List[str]:
split_std, or_later, suffix = std.partition("-or-later")
- if not or_later:
- return [split_std]
-
- if suffix:
- return [std]
-
- for standard_list in (CPP_STANDARDS, C_STANDARDS):
- item = next(
- (
- i
- for i, v in enumerate(standard_list)
- if (split_std in v if isinstance(v, (list, tuple)) else split_std == v)
- ),
- None,
- )
- if item is not None:
- return [split_std] + [
- x if isinstance(x, str) else x[0] for x in standard_list[item + 1 :]
- ]
+ if or_later:
+ if suffix:
+ # Keep malformed -or-later spellings unchanged so clang diagnoses them.
+ return [std]
+
+ for standard_list in (CPP_STANDARDS, C_STANDARDS):
+ item = next(
+ (
+ i
+ for i, v in enumerate(standard_list)
+ if (
+ split_std in v
+ if isinstance(v, (list, tuple))
+ else split_std == v
+ )
+ ),
+ None,
+ )
+ if item is not None:
+ return [split_std] + [
+ x if isinstance(x, str) else x[0] for x in standard_list[item + 1 :]
+ ]
return [std]
>From 172092928016a58164d183fc99a02a190a27ae25 Mon Sep 17 00:00:00 2001
From: Zeyi Xu <mitchell.xu2 at gmail.com>
Date: Thu, 7 May 2026 13:35:48 +0800
Subject: [PATCH 3/3] fixup fixup fixup
---
.../test/clang-tidy/check_clang_tidy.py | 42 +++++++++----------
1 file changed, 20 insertions(+), 22 deletions(-)
diff --git a/clang-tools-extra/test/clang-tidy/check_clang_tidy.py b/clang-tools-extra/test/clang-tidy/check_clang_tidy.py
index 557d637e3d44a..7bd9647a66e89 100755
--- a/clang-tools-extra/test/clang-tidy/check_clang_tidy.py
+++ b/clang-tools-extra/test/clang-tidy/check_clang_tidy.py
@@ -462,28 +462,26 @@ def run(self) -> None:
def expand_std(std: str) -> List[str]:
split_std, or_later, suffix = std.partition("-or-later")
- if or_later:
- if suffix:
- # Keep malformed -or-later spellings unchanged so clang diagnoses them.
- return [std]
-
- for standard_list in (CPP_STANDARDS, C_STANDARDS):
- item = next(
- (
- i
- for i, v in enumerate(standard_list)
- if (
- split_std in v
- if isinstance(v, (list, tuple))
- else split_std == v
- )
- ),
- None,
- )
- if item is not None:
- return [split_std] + [
- x if isinstance(x, str) else x[0] for x in standard_list[item + 1 :]
- ]
+ if or_later and suffix:
+ # Keep malformed -or-later spellings unchanged so clang diagnoses them.
+ return [std]
+
+ if not or_later:
+ return [split_std]
+
+ for standard_list in (CPP_STANDARDS, C_STANDARDS):
+ item = next(
+ (
+ i
+ for i, v in enumerate(standard_list)
+ if (split_std in v if isinstance(v, (list, tuple)) else split_std == v)
+ ),
+ None,
+ )
+ if item is not None:
+ return [split_std] + [
+ x if isinstance(x, str) else x[0] for x in standard_list[item + 1 :]
+ ]
return [std]
More information about the cfe-commits
mailing list