llvmbot wrote:

<!--LLVM PR SUMMARY COMMENT-->

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

Author: mitchell (zeyi2)

<details>
<summary>Changes</summary>

Closes #<!-- -->180894

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


3 Files Affected:

- (modified) 
clang-tools-extra/clang-tidy/cppcoreguidelines/InitVariablesCheck.cpp (+1-1) 
- (modified) clang-tools-extra/docs/ReleaseNotes.rst (+4) 
- (modified) 
clang-tools-extra/test/clang-tidy/checkers/cppcoreguidelines/init-variables.cpp 
(+33) 


``````````diff
diff --git 
a/clang-tools-extra/clang-tidy/cppcoreguidelines/InitVariablesCheck.cpp 
b/clang-tools-extra/clang-tidy/cppcoreguidelines/InitVariablesCheck.cpp
index 93b5b96926865..770d1c8e55fef 100644
--- a/clang-tools-extra/clang-tidy/cppcoreguidelines/InitVariablesCheck.cpp
+++ b/clang-tools-extra/clang-tidy/cppcoreguidelines/InitVariablesCheck.cpp
@@ -95,7 +95,7 @@ void InitVariablesCheck::check(const MatchFinder::MatchResult 
&Result) {
   else if (TypePtr->isFloatingType()) {
     InitializationString = " = NAN";
     AddMathInclude = true;
-  } else if (TypePtr->isAnyPointerType()) {
+  } else if (TypePtr->isAnyPointerType() || TypePtr->isMemberPointerType()) {
     if (getLangOpts().CPlusPlus11)
       InitializationString = " = nullptr";
     else
diff --git a/clang-tools-extra/docs/ReleaseNotes.rst 
b/clang-tools-extra/docs/ReleaseNotes.rst
index 0ad69f5fdc5aa..d1ddc57a02c5d 100644
--- a/clang-tools-extra/docs/ReleaseNotes.rst
+++ b/clang-tools-extra/docs/ReleaseNotes.rst
@@ -158,6 +158,10 @@ Changes in existing checks
   the invalidating function in the warning message when a custom invalidation
   function is used (via the `InvalidationFunctions` option).
 
+- Improved :doc:`cppcoreguidelines-init-variables
+  <clang-tidy/checks/cppcoreguidelines/init-variables>` check by ensuring that
+  member pointers are correctly flagged as uninitialized.
+
 - Improved :doc:`cppcoreguidelines-pro-type-vararg
   <clang-tidy/checks/cppcoreguidelines/pro-type-vararg>` check by no longer
   warning on builtins with custom type checking (e.g., type-generic builtins
diff --git 
a/clang-tools-extra/test/clang-tidy/checkers/cppcoreguidelines/init-variables.cpp
 
b/clang-tools-extra/test/clang-tidy/checkers/cppcoreguidelines/init-variables.cpp
index 8a8973a032bf2..e4a68fea59b52 100644
--- 
a/clang-tools-extra/test/clang-tidy/checkers/cppcoreguidelines/init-variables.cpp
+++ 
b/clang-tools-extra/test/clang-tidy/checkers/cppcoreguidelines/init-variables.cpp
@@ -168,3 +168,36 @@ namespace gh161978 {
     // CHECK-FIXES: bool (*fp5)(int, int) = nullptr, (*fp6)(int, int) = 
nullptr;
   }
 }
+
+void gh180894() {
+  struct S {
+    int x;
+  };
+
+  int S::* mp;
+  // CHECK-MESSAGES: :[[@LINE-1]]:12: warning: variable 'mp' is not 
initialized [cppcoreguidelines-init-variables]
+  // CHECK-FIXES: int S::* mp = nullptr;
+
+  int S::* mp1 = nullptr, S::* mp2;
+  // CHECK-MESSAGES: :[[@LINE-1]]:32: warning: variable 'mp2' is not 
initialized [cppcoreguidelines-init-variables]
+  // CHECK-FIXES: int S::* mp1 = nullptr, S::* mp2 = nullptr;
+
+  int S::* mp3, S::* mp4 = &S::x;
+  // CHECK-MESSAGES: :[[@LINE-1]]:12: warning: variable 'mp3' is not 
initialized [cppcoreguidelines-init-variables]
+  // CHECK-FIXES: int S::* mp3 = nullptr, S::* mp4 = &S::x;
+
+  using MemPtr = int S::*;
+  MemPtr mp5;
+  // CHECK-MESSAGES: :[[@LINE-1]]:10: warning: variable 'mp5' is not 
initialized [cppcoreguidelines-init-variables]
+  // CHECK-FIXES: MemPtr mp5 = nullptr;
+
+  struct S1 {
+    int x;
+    int y;
+  };
+
+  int S::* mp6, S1::* mp7;
+  // CHECK-MESSAGES: :[[@LINE-1]]:12: warning: variable 'mp6' is not 
initialized [cppcoreguidelines-init-variables]
+  // CHECK-MESSAGES: :[[@LINE-2]]:23: warning: variable 'mp7' is not 
initialized [cppcoreguidelines-init-variables]
+  // CHECK-FIXES: int S::* mp6 = nullptr, S1::* mp7 = nullptr;
+}

``````````

</details>


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

Reply via email to