[clang-tools-extra] [clang-tidy] Raise minimum standard level for several checks from C++98 to C++11 (PR #152401)

2025-09-04 Thread Victor Chernyakin via cfe-commits

https://github.com/localspook closed 
https://github.com/llvm/llvm-project/pull/152401
___
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[clang-tools-extra] [clang-tidy] Raise minimum standard level for several checks from C++98 to C++11 (PR #152401)

2025-08-31 Thread Julian Schmidt via cfe-commits

https://github.com/5chmidti approved this pull request.


https://github.com/llvm/llvm-project/pull/152401
___
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[clang-tools-extra] [clang-tidy] Raise minimum standard level for several checks from C++98 to C++11 (PR #152401)

2025-08-08 Thread Victor Chernyakin via cfe-commits

https://github.com/localspook updated 
https://github.com/llvm/llvm-project/pull/152401

>From f09e05a1aee29d94e908c3ef73d422bad65a3b34 Mon Sep 17 00:00:00 2001
From: Victor Chernyakin 
Date: Wed, 6 Aug 2025 15:31:55 -0700
Subject: [PATCH 1/5] [clang-tidy] Raise minimum standard level for several
 checks from C++98 to C++11

---
 .../modernize/ReplaceAutoPtrCheck.h   |   2 +-
 .../clang-tidy/modernize/UseAutoCheck.h   |   2 +-
 .../modernize/UseEqualsDeleteCheck.h  |   2 +-
 .../clang-tidy/modernize/UseNullptrCheck.h|   4 +-
 .../checkers/modernize/use-nullptr-basic.cpp  | 102 +-
 5 files changed, 29 insertions(+), 83 deletions(-)

diff --git a/clang-tools-extra/clang-tidy/modernize/ReplaceAutoPtrCheck.h 
b/clang-tools-extra/clang-tidy/modernize/ReplaceAutoPtrCheck.h
index 636481300d730..c91f5f580c524 100644
--- a/clang-tools-extra/clang-tidy/modernize/ReplaceAutoPtrCheck.h
+++ b/clang-tools-extra/clang-tidy/modernize/ReplaceAutoPtrCheck.h
@@ -42,7 +42,7 @@ class ReplaceAutoPtrCheck : public ClangTidyCheck {
 public:
   ReplaceAutoPtrCheck(StringRef Name, ClangTidyContext *Context);
   bool isLanguageVersionSupported(const LangOptions &LangOpts) const override {
-return LangOpts.CPlusPlus;
+return LangOpts.CPlusPlus11;
   }
   void storeOptions(ClangTidyOptions::OptionMap &Opts) override;
   void registerMatchers(ast_matchers::MatchFinder *Finder) override;
diff --git a/clang-tools-extra/clang-tidy/modernize/UseAutoCheck.h 
b/clang-tools-extra/clang-tidy/modernize/UseAutoCheck.h
index 76c52b2d28139..7a9bbbe1cdf77 100644
--- a/clang-tools-extra/clang-tidy/modernize/UseAutoCheck.h
+++ b/clang-tools-extra/clang-tidy/modernize/UseAutoCheck.h
@@ -17,7 +17,7 @@ class UseAutoCheck : public ClangTidyCheck {
 public:
   UseAutoCheck(StringRef Name, ClangTidyContext *Context);
   bool isLanguageVersionSupported(const LangOptions &LangOpts) const override {
-return LangOpts.CPlusPlus;
+return LangOpts.CPlusPlus11;
   }
   void storeOptions(ClangTidyOptions::OptionMap &Opts) override;
   void registerMatchers(ast_matchers::MatchFinder *Finder) override;
diff --git a/clang-tools-extra/clang-tidy/modernize/UseEqualsDeleteCheck.h 
b/clang-tools-extra/clang-tidy/modernize/UseEqualsDeleteCheck.h
index 64f60351c0657..dc3e712482c21 100644
--- a/clang-tools-extra/clang-tidy/modernize/UseEqualsDeleteCheck.h
+++ b/clang-tools-extra/clang-tidy/modernize/UseEqualsDeleteCheck.h
@@ -23,7 +23,7 @@ class UseEqualsDeleteCheck : public ClangTidyCheck {
 public:
   UseEqualsDeleteCheck(StringRef Name, ClangTidyContext *Context);
   bool isLanguageVersionSupported(const LangOptions &LangOpts) const override {
-return LangOpts.CPlusPlus;
+return LangOpts.CPlusPlus11;
   }
   void storeOptions(ClangTidyOptions::OptionMap &Opts) override;
   void registerMatchers(ast_matchers::MatchFinder *Finder) override;
diff --git a/clang-tools-extra/clang-tidy/modernize/UseNullptrCheck.h 
b/clang-tools-extra/clang-tidy/modernize/UseNullptrCheck.h
index f1591bae44657..4c02f8ccdf303 100644
--- a/clang-tools-extra/clang-tidy/modernize/UseNullptrCheck.h
+++ b/clang-tools-extra/clang-tidy/modernize/UseNullptrCheck.h
@@ -17,9 +17,7 @@ class UseNullptrCheck : public ClangTidyCheck {
 public:
   UseNullptrCheck(StringRef Name, ClangTidyContext *Context);
   bool isLanguageVersionSupported(const LangOptions &LangOpts) const override {
-// FIXME this should be CPlusPlus11 but that causes test cases to
-// erroneously fail.
-return LangOpts.CPlusPlus || LangOpts.C23;
+return LangOpts.CPlusPlus11 || LangOpts.C23;
   }
   void storeOptions(ClangTidyOptions::OptionMap &Opts) override;
   void registerMatchers(ast_matchers::MatchFinder *Finder) override;
diff --git 
a/clang-tools-extra/test/clang-tidy/checkers/modernize/use-nullptr-basic.cpp 
b/clang-tools-extra/test/clang-tidy/checkers/modernize/use-nullptr-basic.cpp
index 2579099148e3a..4f69ec5aeeb4c 100644
--- a/clang-tools-extra/test/clang-tidy/checkers/modernize/use-nullptr-basic.cpp
+++ b/clang-tools-extra/test/clang-tidy/checkers/modernize/use-nullptr-basic.cpp
@@ -1,9 +1,4 @@
-// RUN: %check_clang_tidy -std=c++98 %s modernize-use-nullptr %t -- -- 
-Wno-non-literal-null-conversion
-//
-// Some parts of the test (e.g. assignment of `const int` to `int *`) fail in
-// C++11, so we need to run the test in C++98 mode.
-//
-// FIXME: Make the test work in all language modes.
+// RUN: %check_clang_tidy %s modernize-use-nullptr %t -- -- 
-Wno-non-literal-null-conversion
 
 const unsigned int g_null = 0;
 #define NULL 0
@@ -23,11 +18,7 @@ void test_assignment() {
   p2 = p1;
   // CHECK-FIXES: p2 = p1;
 
-  const int null = 0;
-  int *p3 = null;
-  // CHECK-MESSAGES: :[[@LINE-1]]:13: warning: use nullptr
-  // CHECK-FIXES: int *p3 = nullptr;
-
+  int *p3;
   p3 = NULL;
   // CHECK-MESSAGES: :[[@LINE-1]]:8: warning: use nullptr
   // CHECK-FIXES: p3 = nullptr;
@@ -35,14 +26,11 @@ void test_assignment() {
   int *p4 = p3;
   // CHECK-FIXES:

[clang-tools-extra] [clang-tidy] Raise minimum standard level for several checks from C++98 to C++11 (PR #152401)

2025-08-08 Thread Victor Chernyakin via cfe-commits

https://github.com/localspook edited 
https://github.com/llvm/llvm-project/pull/152401
___
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[clang-tools-extra] [clang-tidy] Raise minimum standard level for several checks from C++98 to C++11 (PR #152401)

2025-08-08 Thread Victor Chernyakin via cfe-commits

https://github.com/localspook edited 
https://github.com/llvm/llvm-project/pull/152401
___
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[clang-tools-extra] [clang-tidy] Raise minimum standard level for several checks from C++98 to C++11 (PR #152401)

2025-08-08 Thread Victor Chernyakin via cfe-commits

https://github.com/localspook edited 
https://github.com/llvm/llvm-project/pull/152401
___
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[clang-tools-extra] [clang-tidy] Raise minimum standard level for several checks from C++98 to C++11 (PR #152401)

2025-08-08 Thread Victor Chernyakin via cfe-commits

localspook wrote:

`-fno-delayed-template-parsing` did the trick for some tests! And it was a good 
hint that helped me figure out why the others were inconsistent: 
`-fms-extensions` apparently enables C++98-style int-to-pointer conversions in 
higher language versions, which affects the generated AST. I've updated the PR 
description to cover the changes.

https://github.com/llvm/llvm-project/pull/152401
___
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[clang-tools-extra] [clang-tidy] Raise minimum standard level for several checks from C++98 to C++11 (PR #152401)

2025-08-08 Thread Victor Chernyakin via cfe-commits

https://github.com/localspook updated 
https://github.com/llvm/llvm-project/pull/152401

>From f09e05a1aee29d94e908c3ef73d422bad65a3b34 Mon Sep 17 00:00:00 2001
From: Victor Chernyakin 
Date: Wed, 6 Aug 2025 15:31:55 -0700
Subject: [PATCH 1/4] [clang-tidy] Raise minimum standard level for several
 checks from C++98 to C++11

---
 .../modernize/ReplaceAutoPtrCheck.h   |   2 +-
 .../clang-tidy/modernize/UseAutoCheck.h   |   2 +-
 .../modernize/UseEqualsDeleteCheck.h  |   2 +-
 .../clang-tidy/modernize/UseNullptrCheck.h|   4 +-
 .../checkers/modernize/use-nullptr-basic.cpp  | 102 +-
 5 files changed, 29 insertions(+), 83 deletions(-)

diff --git a/clang-tools-extra/clang-tidy/modernize/ReplaceAutoPtrCheck.h 
b/clang-tools-extra/clang-tidy/modernize/ReplaceAutoPtrCheck.h
index 636481300d730..c91f5f580c524 100644
--- a/clang-tools-extra/clang-tidy/modernize/ReplaceAutoPtrCheck.h
+++ b/clang-tools-extra/clang-tidy/modernize/ReplaceAutoPtrCheck.h
@@ -42,7 +42,7 @@ class ReplaceAutoPtrCheck : public ClangTidyCheck {
 public:
   ReplaceAutoPtrCheck(StringRef Name, ClangTidyContext *Context);
   bool isLanguageVersionSupported(const LangOptions &LangOpts) const override {
-return LangOpts.CPlusPlus;
+return LangOpts.CPlusPlus11;
   }
   void storeOptions(ClangTidyOptions::OptionMap &Opts) override;
   void registerMatchers(ast_matchers::MatchFinder *Finder) override;
diff --git a/clang-tools-extra/clang-tidy/modernize/UseAutoCheck.h 
b/clang-tools-extra/clang-tidy/modernize/UseAutoCheck.h
index 76c52b2d28139..7a9bbbe1cdf77 100644
--- a/clang-tools-extra/clang-tidy/modernize/UseAutoCheck.h
+++ b/clang-tools-extra/clang-tidy/modernize/UseAutoCheck.h
@@ -17,7 +17,7 @@ class UseAutoCheck : public ClangTidyCheck {
 public:
   UseAutoCheck(StringRef Name, ClangTidyContext *Context);
   bool isLanguageVersionSupported(const LangOptions &LangOpts) const override {
-return LangOpts.CPlusPlus;
+return LangOpts.CPlusPlus11;
   }
   void storeOptions(ClangTidyOptions::OptionMap &Opts) override;
   void registerMatchers(ast_matchers::MatchFinder *Finder) override;
diff --git a/clang-tools-extra/clang-tidy/modernize/UseEqualsDeleteCheck.h 
b/clang-tools-extra/clang-tidy/modernize/UseEqualsDeleteCheck.h
index 64f60351c0657..dc3e712482c21 100644
--- a/clang-tools-extra/clang-tidy/modernize/UseEqualsDeleteCheck.h
+++ b/clang-tools-extra/clang-tidy/modernize/UseEqualsDeleteCheck.h
@@ -23,7 +23,7 @@ class UseEqualsDeleteCheck : public ClangTidyCheck {
 public:
   UseEqualsDeleteCheck(StringRef Name, ClangTidyContext *Context);
   bool isLanguageVersionSupported(const LangOptions &LangOpts) const override {
-return LangOpts.CPlusPlus;
+return LangOpts.CPlusPlus11;
   }
   void storeOptions(ClangTidyOptions::OptionMap &Opts) override;
   void registerMatchers(ast_matchers::MatchFinder *Finder) override;
diff --git a/clang-tools-extra/clang-tidy/modernize/UseNullptrCheck.h 
b/clang-tools-extra/clang-tidy/modernize/UseNullptrCheck.h
index f1591bae44657..4c02f8ccdf303 100644
--- a/clang-tools-extra/clang-tidy/modernize/UseNullptrCheck.h
+++ b/clang-tools-extra/clang-tidy/modernize/UseNullptrCheck.h
@@ -17,9 +17,7 @@ class UseNullptrCheck : public ClangTidyCheck {
 public:
   UseNullptrCheck(StringRef Name, ClangTidyContext *Context);
   bool isLanguageVersionSupported(const LangOptions &LangOpts) const override {
-// FIXME this should be CPlusPlus11 but that causes test cases to
-// erroneously fail.
-return LangOpts.CPlusPlus || LangOpts.C23;
+return LangOpts.CPlusPlus11 || LangOpts.C23;
   }
   void storeOptions(ClangTidyOptions::OptionMap &Opts) override;
   void registerMatchers(ast_matchers::MatchFinder *Finder) override;
diff --git 
a/clang-tools-extra/test/clang-tidy/checkers/modernize/use-nullptr-basic.cpp 
b/clang-tools-extra/test/clang-tidy/checkers/modernize/use-nullptr-basic.cpp
index 2579099148e3a..4f69ec5aeeb4c 100644
--- a/clang-tools-extra/test/clang-tidy/checkers/modernize/use-nullptr-basic.cpp
+++ b/clang-tools-extra/test/clang-tidy/checkers/modernize/use-nullptr-basic.cpp
@@ -1,9 +1,4 @@
-// RUN: %check_clang_tidy -std=c++98 %s modernize-use-nullptr %t -- -- 
-Wno-non-literal-null-conversion
-//
-// Some parts of the test (e.g. assignment of `const int` to `int *`) fail in
-// C++11, so we need to run the test in C++98 mode.
-//
-// FIXME: Make the test work in all language modes.
+// RUN: %check_clang_tidy %s modernize-use-nullptr %t -- -- 
-Wno-non-literal-null-conversion
 
 const unsigned int g_null = 0;
 #define NULL 0
@@ -23,11 +18,7 @@ void test_assignment() {
   p2 = p1;
   // CHECK-FIXES: p2 = p1;
 
-  const int null = 0;
-  int *p3 = null;
-  // CHECK-MESSAGES: :[[@LINE-1]]:13: warning: use nullptr
-  // CHECK-FIXES: int *p3 = nullptr;
-
+  int *p3;
   p3 = NULL;
   // CHECK-MESSAGES: :[[@LINE-1]]:8: warning: use nullptr
   // CHECK-FIXES: p3 = nullptr;
@@ -35,14 +26,11 @@ void test_assignment() {
   int *p4 = p3;
   // CHECK-FIXES:

[clang-tools-extra] [clang-tidy] Raise minimum standard level for several checks from C++98 to C++11 (PR #152401)

2025-08-08 Thread Baranov Victor via cfe-commits

vbvictor wrote:

> For some reason, there's also variation between OSes.

Some warnings on Windows doesn't show probably because there is no 
`-fno-delayed-template-parsing`. You could add this flag and check if some 
tests begin to pass.

Also, I think we could use `-target` flag to specify the OS and not disable 
tests for all OSes.

https://github.com/llvm/llvm-project/pull/152401
___
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[clang-tools-extra] [clang-tidy] Raise minimum standard level for several checks from C++98 to C++11 (PR #152401)

2025-08-06 Thread Victor Chernyakin via cfe-commits

https://github.com/localspook edited 
https://github.com/llvm/llvm-project/pull/152401
___
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[clang-tools-extra] [clang-tidy] Raise minimum standard level for several checks from C++98 to C++11 (PR #152401)

2025-08-06 Thread Victor Chernyakin via cfe-commits

https://github.com/localspook updated 
https://github.com/llvm/llvm-project/pull/152401

>From f09e05a1aee29d94e908c3ef73d422bad65a3b34 Mon Sep 17 00:00:00 2001
From: Victor Chernyakin 
Date: Wed, 6 Aug 2025 15:31:55 -0700
Subject: [PATCH 1/3] [clang-tidy] Raise minimum standard level for several
 checks from C++98 to C++11

---
 .../modernize/ReplaceAutoPtrCheck.h   |   2 +-
 .../clang-tidy/modernize/UseAutoCheck.h   |   2 +-
 .../modernize/UseEqualsDeleteCheck.h  |   2 +-
 .../clang-tidy/modernize/UseNullptrCheck.h|   4 +-
 .../checkers/modernize/use-nullptr-basic.cpp  | 102 +-
 5 files changed, 29 insertions(+), 83 deletions(-)

diff --git a/clang-tools-extra/clang-tidy/modernize/ReplaceAutoPtrCheck.h 
b/clang-tools-extra/clang-tidy/modernize/ReplaceAutoPtrCheck.h
index 636481300d730..c91f5f580c524 100644
--- a/clang-tools-extra/clang-tidy/modernize/ReplaceAutoPtrCheck.h
+++ b/clang-tools-extra/clang-tidy/modernize/ReplaceAutoPtrCheck.h
@@ -42,7 +42,7 @@ class ReplaceAutoPtrCheck : public ClangTidyCheck {
 public:
   ReplaceAutoPtrCheck(StringRef Name, ClangTidyContext *Context);
   bool isLanguageVersionSupported(const LangOptions &LangOpts) const override {
-return LangOpts.CPlusPlus;
+return LangOpts.CPlusPlus11;
   }
   void storeOptions(ClangTidyOptions::OptionMap &Opts) override;
   void registerMatchers(ast_matchers::MatchFinder *Finder) override;
diff --git a/clang-tools-extra/clang-tidy/modernize/UseAutoCheck.h 
b/clang-tools-extra/clang-tidy/modernize/UseAutoCheck.h
index 76c52b2d28139..7a9bbbe1cdf77 100644
--- a/clang-tools-extra/clang-tidy/modernize/UseAutoCheck.h
+++ b/clang-tools-extra/clang-tidy/modernize/UseAutoCheck.h
@@ -17,7 +17,7 @@ class UseAutoCheck : public ClangTidyCheck {
 public:
   UseAutoCheck(StringRef Name, ClangTidyContext *Context);
   bool isLanguageVersionSupported(const LangOptions &LangOpts) const override {
-return LangOpts.CPlusPlus;
+return LangOpts.CPlusPlus11;
   }
   void storeOptions(ClangTidyOptions::OptionMap &Opts) override;
   void registerMatchers(ast_matchers::MatchFinder *Finder) override;
diff --git a/clang-tools-extra/clang-tidy/modernize/UseEqualsDeleteCheck.h 
b/clang-tools-extra/clang-tidy/modernize/UseEqualsDeleteCheck.h
index 64f60351c0657..dc3e712482c21 100644
--- a/clang-tools-extra/clang-tidy/modernize/UseEqualsDeleteCheck.h
+++ b/clang-tools-extra/clang-tidy/modernize/UseEqualsDeleteCheck.h
@@ -23,7 +23,7 @@ class UseEqualsDeleteCheck : public ClangTidyCheck {
 public:
   UseEqualsDeleteCheck(StringRef Name, ClangTidyContext *Context);
   bool isLanguageVersionSupported(const LangOptions &LangOpts) const override {
-return LangOpts.CPlusPlus;
+return LangOpts.CPlusPlus11;
   }
   void storeOptions(ClangTidyOptions::OptionMap &Opts) override;
   void registerMatchers(ast_matchers::MatchFinder *Finder) override;
diff --git a/clang-tools-extra/clang-tidy/modernize/UseNullptrCheck.h 
b/clang-tools-extra/clang-tidy/modernize/UseNullptrCheck.h
index f1591bae44657..4c02f8ccdf303 100644
--- a/clang-tools-extra/clang-tidy/modernize/UseNullptrCheck.h
+++ b/clang-tools-extra/clang-tidy/modernize/UseNullptrCheck.h
@@ -17,9 +17,7 @@ class UseNullptrCheck : public ClangTidyCheck {
 public:
   UseNullptrCheck(StringRef Name, ClangTidyContext *Context);
   bool isLanguageVersionSupported(const LangOptions &LangOpts) const override {
-// FIXME this should be CPlusPlus11 but that causes test cases to
-// erroneously fail.
-return LangOpts.CPlusPlus || LangOpts.C23;
+return LangOpts.CPlusPlus11 || LangOpts.C23;
   }
   void storeOptions(ClangTidyOptions::OptionMap &Opts) override;
   void registerMatchers(ast_matchers::MatchFinder *Finder) override;
diff --git 
a/clang-tools-extra/test/clang-tidy/checkers/modernize/use-nullptr-basic.cpp 
b/clang-tools-extra/test/clang-tidy/checkers/modernize/use-nullptr-basic.cpp
index 2579099148e3a..4f69ec5aeeb4c 100644
--- a/clang-tools-extra/test/clang-tidy/checkers/modernize/use-nullptr-basic.cpp
+++ b/clang-tools-extra/test/clang-tidy/checkers/modernize/use-nullptr-basic.cpp
@@ -1,9 +1,4 @@
-// RUN: %check_clang_tidy -std=c++98 %s modernize-use-nullptr %t -- -- 
-Wno-non-literal-null-conversion
-//
-// Some parts of the test (e.g. assignment of `const int` to `int *`) fail in
-// C++11, so we need to run the test in C++98 mode.
-//
-// FIXME: Make the test work in all language modes.
+// RUN: %check_clang_tidy %s modernize-use-nullptr %t -- -- 
-Wno-non-literal-null-conversion
 
 const unsigned int g_null = 0;
 #define NULL 0
@@ -23,11 +18,7 @@ void test_assignment() {
   p2 = p1;
   // CHECK-FIXES: p2 = p1;
 
-  const int null = 0;
-  int *p3 = null;
-  // CHECK-MESSAGES: :[[@LINE-1]]:13: warning: use nullptr
-  // CHECK-FIXES: int *p3 = nullptr;
-
+  int *p3;
   p3 = NULL;
   // CHECK-MESSAGES: :[[@LINE-1]]:8: warning: use nullptr
   // CHECK-FIXES: p3 = nullptr;
@@ -35,14 +26,11 @@ void test_assignment() {
   int *p4 = p3;
   // CHECK-FIXES:

[clang-tools-extra] [clang-tidy] Raise minimum standard level for several checks from C++98 to C++11 (PR #152401)

2025-08-06 Thread via cfe-commits

llvmbot wrote:




@llvm/pr-subscribers-clang-tidy

Author: Victor Chernyakin (localspook)


Changes

`modernize-replace-auto-ptr`, `modernize-use-equals-delete`, and 
`modernize-use-auto` use `std::unique_ptr`, `= delete`, and `auto` 
respectively, which are all C++11 features.

The interesting bit is `modernize-use-nullptr`'s tests:

- Some relied on int-to-pointer conversions that were removed in C++11. I just 
deleted these cases; if they're ill-formed, we're not losing anything, right?
- Uncovered some cases that are false negatives in C++11 mode.

---
Full diff: https://github.com/llvm/llvm-project/pull/152401.diff


5 Files Affected:

- (modified) clang-tools-extra/clang-tidy/modernize/ReplaceAutoPtrCheck.h 
(+1-1) 
- (modified) clang-tools-extra/clang-tidy/modernize/UseAutoCheck.h (+1-1) 
- (modified) clang-tools-extra/clang-tidy/modernize/UseEqualsDeleteCheck.h 
(+1-1) 
- (modified) clang-tools-extra/clang-tidy/modernize/UseNullptrCheck.h (+1-3) 
- (modified) 
clang-tools-extra/test/clang-tidy/checkers/modernize/use-nullptr-basic.cpp 
(+25-77) 


``diff
diff --git a/clang-tools-extra/clang-tidy/modernize/ReplaceAutoPtrCheck.h 
b/clang-tools-extra/clang-tidy/modernize/ReplaceAutoPtrCheck.h
index 636481300d730..c91f5f580c524 100644
--- a/clang-tools-extra/clang-tidy/modernize/ReplaceAutoPtrCheck.h
+++ b/clang-tools-extra/clang-tidy/modernize/ReplaceAutoPtrCheck.h
@@ -42,7 +42,7 @@ class ReplaceAutoPtrCheck : public ClangTidyCheck {
 public:
   ReplaceAutoPtrCheck(StringRef Name, ClangTidyContext *Context);
   bool isLanguageVersionSupported(const LangOptions &LangOpts) const override {
-return LangOpts.CPlusPlus;
+return LangOpts.CPlusPlus11;
   }
   void storeOptions(ClangTidyOptions::OptionMap &Opts) override;
   void registerMatchers(ast_matchers::MatchFinder *Finder) override;
diff --git a/clang-tools-extra/clang-tidy/modernize/UseAutoCheck.h 
b/clang-tools-extra/clang-tidy/modernize/UseAutoCheck.h
index 76c52b2d28139..7a9bbbe1cdf77 100644
--- a/clang-tools-extra/clang-tidy/modernize/UseAutoCheck.h
+++ b/clang-tools-extra/clang-tidy/modernize/UseAutoCheck.h
@@ -17,7 +17,7 @@ class UseAutoCheck : public ClangTidyCheck {
 public:
   UseAutoCheck(StringRef Name, ClangTidyContext *Context);
   bool isLanguageVersionSupported(const LangOptions &LangOpts) const override {
-return LangOpts.CPlusPlus;
+return LangOpts.CPlusPlus11;
   }
   void storeOptions(ClangTidyOptions::OptionMap &Opts) override;
   void registerMatchers(ast_matchers::MatchFinder *Finder) override;
diff --git a/clang-tools-extra/clang-tidy/modernize/UseEqualsDeleteCheck.h 
b/clang-tools-extra/clang-tidy/modernize/UseEqualsDeleteCheck.h
index 64f60351c0657..dc3e712482c21 100644
--- a/clang-tools-extra/clang-tidy/modernize/UseEqualsDeleteCheck.h
+++ b/clang-tools-extra/clang-tidy/modernize/UseEqualsDeleteCheck.h
@@ -23,7 +23,7 @@ class UseEqualsDeleteCheck : public ClangTidyCheck {
 public:
   UseEqualsDeleteCheck(StringRef Name, ClangTidyContext *Context);
   bool isLanguageVersionSupported(const LangOptions &LangOpts) const override {
-return LangOpts.CPlusPlus;
+return LangOpts.CPlusPlus11;
   }
   void storeOptions(ClangTidyOptions::OptionMap &Opts) override;
   void registerMatchers(ast_matchers::MatchFinder *Finder) override;
diff --git a/clang-tools-extra/clang-tidy/modernize/UseNullptrCheck.h 
b/clang-tools-extra/clang-tidy/modernize/UseNullptrCheck.h
index f1591bae44657..4c02f8ccdf303 100644
--- a/clang-tools-extra/clang-tidy/modernize/UseNullptrCheck.h
+++ b/clang-tools-extra/clang-tidy/modernize/UseNullptrCheck.h
@@ -17,9 +17,7 @@ class UseNullptrCheck : public ClangTidyCheck {
 public:
   UseNullptrCheck(StringRef Name, ClangTidyContext *Context);
   bool isLanguageVersionSupported(const LangOptions &LangOpts) const override {
-// FIXME this should be CPlusPlus11 but that causes test cases to
-// erroneously fail.
-return LangOpts.CPlusPlus || LangOpts.C23;
+return LangOpts.CPlusPlus11 || LangOpts.C23;
   }
   void storeOptions(ClangTidyOptions::OptionMap &Opts) override;
   void registerMatchers(ast_matchers::MatchFinder *Finder) override;
diff --git 
a/clang-tools-extra/test/clang-tidy/checkers/modernize/use-nullptr-basic.cpp 
b/clang-tools-extra/test/clang-tidy/checkers/modernize/use-nullptr-basic.cpp
index 2579099148e3a..4f69ec5aeeb4c 100644
--- a/clang-tools-extra/test/clang-tidy/checkers/modernize/use-nullptr-basic.cpp
+++ b/clang-tools-extra/test/clang-tidy/checkers/modernize/use-nullptr-basic.cpp
@@ -1,9 +1,4 @@
-// RUN: %check_clang_tidy -std=c++98 %s modernize-use-nullptr %t -- -- 
-Wno-non-literal-null-conversion
-//
-// Some parts of the test (e.g. assignment of `const int` to `int *`) fail in
-// C++11, so we need to run the test in C++98 mode.
-//
-// FIXME: Make the test work in all language modes.
+// RUN: %check_clang_tidy %s modernize-use-nullptr %t -- -- 
-Wno-non-literal-null-conversion
 
 const unsigned int g_null = 0;
 #define NULL 0
@@ -23,11 +18,7 @@ 

[clang-tools-extra] [clang-tidy] Raise minimum standard level for several checks from C++98 to C++11 (PR #152401)

2025-08-06 Thread via cfe-commits

llvmbot wrote:




@llvm/pr-subscribers-clang-tools-extra

Author: Victor Chernyakin (localspook)


Changes

`modernize-replace-auto-ptr`, `modernize-use-equals-delete`, and 
`modernize-use-auto` use `std::unique_ptr`, `= delete`, and `auto` 
respectively, which are all C++11 features.

The interesting bit is `modernize-use-nullptr`'s tests:

- Some relied on int-to-pointer conversions that were removed in C++11. I just 
deleted these cases; if they're ill-formed, we're not losing anything, right?
- Uncovered some cases that are false negatives in C++11 mode.

---
Full diff: https://github.com/llvm/llvm-project/pull/152401.diff


5 Files Affected:

- (modified) clang-tools-extra/clang-tidy/modernize/ReplaceAutoPtrCheck.h 
(+1-1) 
- (modified) clang-tools-extra/clang-tidy/modernize/UseAutoCheck.h (+1-1) 
- (modified) clang-tools-extra/clang-tidy/modernize/UseEqualsDeleteCheck.h 
(+1-1) 
- (modified) clang-tools-extra/clang-tidy/modernize/UseNullptrCheck.h (+1-3) 
- (modified) 
clang-tools-extra/test/clang-tidy/checkers/modernize/use-nullptr-basic.cpp 
(+25-77) 


``diff
diff --git a/clang-tools-extra/clang-tidy/modernize/ReplaceAutoPtrCheck.h 
b/clang-tools-extra/clang-tidy/modernize/ReplaceAutoPtrCheck.h
index 636481300d730..c91f5f580c524 100644
--- a/clang-tools-extra/clang-tidy/modernize/ReplaceAutoPtrCheck.h
+++ b/clang-tools-extra/clang-tidy/modernize/ReplaceAutoPtrCheck.h
@@ -42,7 +42,7 @@ class ReplaceAutoPtrCheck : public ClangTidyCheck {
 public:
   ReplaceAutoPtrCheck(StringRef Name, ClangTidyContext *Context);
   bool isLanguageVersionSupported(const LangOptions &LangOpts) const override {
-return LangOpts.CPlusPlus;
+return LangOpts.CPlusPlus11;
   }
   void storeOptions(ClangTidyOptions::OptionMap &Opts) override;
   void registerMatchers(ast_matchers::MatchFinder *Finder) override;
diff --git a/clang-tools-extra/clang-tidy/modernize/UseAutoCheck.h 
b/clang-tools-extra/clang-tidy/modernize/UseAutoCheck.h
index 76c52b2d28139..7a9bbbe1cdf77 100644
--- a/clang-tools-extra/clang-tidy/modernize/UseAutoCheck.h
+++ b/clang-tools-extra/clang-tidy/modernize/UseAutoCheck.h
@@ -17,7 +17,7 @@ class UseAutoCheck : public ClangTidyCheck {
 public:
   UseAutoCheck(StringRef Name, ClangTidyContext *Context);
   bool isLanguageVersionSupported(const LangOptions &LangOpts) const override {
-return LangOpts.CPlusPlus;
+return LangOpts.CPlusPlus11;
   }
   void storeOptions(ClangTidyOptions::OptionMap &Opts) override;
   void registerMatchers(ast_matchers::MatchFinder *Finder) override;
diff --git a/clang-tools-extra/clang-tidy/modernize/UseEqualsDeleteCheck.h 
b/clang-tools-extra/clang-tidy/modernize/UseEqualsDeleteCheck.h
index 64f60351c0657..dc3e712482c21 100644
--- a/clang-tools-extra/clang-tidy/modernize/UseEqualsDeleteCheck.h
+++ b/clang-tools-extra/clang-tidy/modernize/UseEqualsDeleteCheck.h
@@ -23,7 +23,7 @@ class UseEqualsDeleteCheck : public ClangTidyCheck {
 public:
   UseEqualsDeleteCheck(StringRef Name, ClangTidyContext *Context);
   bool isLanguageVersionSupported(const LangOptions &LangOpts) const override {
-return LangOpts.CPlusPlus;
+return LangOpts.CPlusPlus11;
   }
   void storeOptions(ClangTidyOptions::OptionMap &Opts) override;
   void registerMatchers(ast_matchers::MatchFinder *Finder) override;
diff --git a/clang-tools-extra/clang-tidy/modernize/UseNullptrCheck.h 
b/clang-tools-extra/clang-tidy/modernize/UseNullptrCheck.h
index f1591bae44657..4c02f8ccdf303 100644
--- a/clang-tools-extra/clang-tidy/modernize/UseNullptrCheck.h
+++ b/clang-tools-extra/clang-tidy/modernize/UseNullptrCheck.h
@@ -17,9 +17,7 @@ class UseNullptrCheck : public ClangTidyCheck {
 public:
   UseNullptrCheck(StringRef Name, ClangTidyContext *Context);
   bool isLanguageVersionSupported(const LangOptions &LangOpts) const override {
-// FIXME this should be CPlusPlus11 but that causes test cases to
-// erroneously fail.
-return LangOpts.CPlusPlus || LangOpts.C23;
+return LangOpts.CPlusPlus11 || LangOpts.C23;
   }
   void storeOptions(ClangTidyOptions::OptionMap &Opts) override;
   void registerMatchers(ast_matchers::MatchFinder *Finder) override;
diff --git 
a/clang-tools-extra/test/clang-tidy/checkers/modernize/use-nullptr-basic.cpp 
b/clang-tools-extra/test/clang-tidy/checkers/modernize/use-nullptr-basic.cpp
index 2579099148e3a..4f69ec5aeeb4c 100644
--- a/clang-tools-extra/test/clang-tidy/checkers/modernize/use-nullptr-basic.cpp
+++ b/clang-tools-extra/test/clang-tidy/checkers/modernize/use-nullptr-basic.cpp
@@ -1,9 +1,4 @@
-// RUN: %check_clang_tidy -std=c++98 %s modernize-use-nullptr %t -- -- 
-Wno-non-literal-null-conversion
-//
-// Some parts of the test (e.g. assignment of `const int` to `int *`) fail in
-// C++11, so we need to run the test in C++98 mode.
-//
-// FIXME: Make the test work in all language modes.
+// RUN: %check_clang_tidy %s modernize-use-nullptr %t -- -- 
-Wno-non-literal-null-conversion
 
 const unsigned int g_null = 0;
 #define NULL 0
@@ -23,11 +1

[clang-tools-extra] [clang-tidy] Raise minimum standard level for several checks from C++98 to C++11 (PR #152401)

2025-08-06 Thread Victor Chernyakin via cfe-commits

https://github.com/localspook created 
https://github.com/llvm/llvm-project/pull/152401

`modernize-replace-auto-ptr`, `modernize-use-equals-delete`, and 
`modernize-use-auto` use `std::unique_ptr`, `= delete`, and `auto` 
respectively, which are all C++11 features.

The interesting bit is `modernize-use-nullptr`'s tests:

- Some relied on int-to-pointer conversions that were removed in C++11. I just 
deleted these cases; if they're ill-formed, we're not losing anything, right?
- Uncovered some cases that are false negatives in C++11 mode.

>From f09e05a1aee29d94e908c3ef73d422bad65a3b34 Mon Sep 17 00:00:00 2001
From: Victor Chernyakin 
Date: Wed, 6 Aug 2025 15:31:55 -0700
Subject: [PATCH] [clang-tidy] Raise minimum standard level for several checks
 from C++98 to C++11

---
 .../modernize/ReplaceAutoPtrCheck.h   |   2 +-
 .../clang-tidy/modernize/UseAutoCheck.h   |   2 +-
 .../modernize/UseEqualsDeleteCheck.h  |   2 +-
 .../clang-tidy/modernize/UseNullptrCheck.h|   4 +-
 .../checkers/modernize/use-nullptr-basic.cpp  | 102 +-
 5 files changed, 29 insertions(+), 83 deletions(-)

diff --git a/clang-tools-extra/clang-tidy/modernize/ReplaceAutoPtrCheck.h 
b/clang-tools-extra/clang-tidy/modernize/ReplaceAutoPtrCheck.h
index 636481300d730..c91f5f580c524 100644
--- a/clang-tools-extra/clang-tidy/modernize/ReplaceAutoPtrCheck.h
+++ b/clang-tools-extra/clang-tidy/modernize/ReplaceAutoPtrCheck.h
@@ -42,7 +42,7 @@ class ReplaceAutoPtrCheck : public ClangTidyCheck {
 public:
   ReplaceAutoPtrCheck(StringRef Name, ClangTidyContext *Context);
   bool isLanguageVersionSupported(const LangOptions &LangOpts) const override {
-return LangOpts.CPlusPlus;
+return LangOpts.CPlusPlus11;
   }
   void storeOptions(ClangTidyOptions::OptionMap &Opts) override;
   void registerMatchers(ast_matchers::MatchFinder *Finder) override;
diff --git a/clang-tools-extra/clang-tidy/modernize/UseAutoCheck.h 
b/clang-tools-extra/clang-tidy/modernize/UseAutoCheck.h
index 76c52b2d28139..7a9bbbe1cdf77 100644
--- a/clang-tools-extra/clang-tidy/modernize/UseAutoCheck.h
+++ b/clang-tools-extra/clang-tidy/modernize/UseAutoCheck.h
@@ -17,7 +17,7 @@ class UseAutoCheck : public ClangTidyCheck {
 public:
   UseAutoCheck(StringRef Name, ClangTidyContext *Context);
   bool isLanguageVersionSupported(const LangOptions &LangOpts) const override {
-return LangOpts.CPlusPlus;
+return LangOpts.CPlusPlus11;
   }
   void storeOptions(ClangTidyOptions::OptionMap &Opts) override;
   void registerMatchers(ast_matchers::MatchFinder *Finder) override;
diff --git a/clang-tools-extra/clang-tidy/modernize/UseEqualsDeleteCheck.h 
b/clang-tools-extra/clang-tidy/modernize/UseEqualsDeleteCheck.h
index 64f60351c0657..dc3e712482c21 100644
--- a/clang-tools-extra/clang-tidy/modernize/UseEqualsDeleteCheck.h
+++ b/clang-tools-extra/clang-tidy/modernize/UseEqualsDeleteCheck.h
@@ -23,7 +23,7 @@ class UseEqualsDeleteCheck : public ClangTidyCheck {
 public:
   UseEqualsDeleteCheck(StringRef Name, ClangTidyContext *Context);
   bool isLanguageVersionSupported(const LangOptions &LangOpts) const override {
-return LangOpts.CPlusPlus;
+return LangOpts.CPlusPlus11;
   }
   void storeOptions(ClangTidyOptions::OptionMap &Opts) override;
   void registerMatchers(ast_matchers::MatchFinder *Finder) override;
diff --git a/clang-tools-extra/clang-tidy/modernize/UseNullptrCheck.h 
b/clang-tools-extra/clang-tidy/modernize/UseNullptrCheck.h
index f1591bae44657..4c02f8ccdf303 100644
--- a/clang-tools-extra/clang-tidy/modernize/UseNullptrCheck.h
+++ b/clang-tools-extra/clang-tidy/modernize/UseNullptrCheck.h
@@ -17,9 +17,7 @@ class UseNullptrCheck : public ClangTidyCheck {
 public:
   UseNullptrCheck(StringRef Name, ClangTidyContext *Context);
   bool isLanguageVersionSupported(const LangOptions &LangOpts) const override {
-// FIXME this should be CPlusPlus11 but that causes test cases to
-// erroneously fail.
-return LangOpts.CPlusPlus || LangOpts.C23;
+return LangOpts.CPlusPlus11 || LangOpts.C23;
   }
   void storeOptions(ClangTidyOptions::OptionMap &Opts) override;
   void registerMatchers(ast_matchers::MatchFinder *Finder) override;
diff --git 
a/clang-tools-extra/test/clang-tidy/checkers/modernize/use-nullptr-basic.cpp 
b/clang-tools-extra/test/clang-tidy/checkers/modernize/use-nullptr-basic.cpp
index 2579099148e3a..4f69ec5aeeb4c 100644
--- a/clang-tools-extra/test/clang-tidy/checkers/modernize/use-nullptr-basic.cpp
+++ b/clang-tools-extra/test/clang-tidy/checkers/modernize/use-nullptr-basic.cpp
@@ -1,9 +1,4 @@
-// RUN: %check_clang_tidy -std=c++98 %s modernize-use-nullptr %t -- -- 
-Wno-non-literal-null-conversion
-//
-// Some parts of the test (e.g. assignment of `const int` to `int *`) fail in
-// C++11, so we need to run the test in C++98 mode.
-//
-// FIXME: Make the test work in all language modes.
+// RUN: %check_clang_tidy %s modernize-use-nullptr %t -- -- 
-Wno-non-literal-null-conversion
 
 const unsigned int