[clang-tools-extra] [clang-tidy]fix crashing when self include cycles for misc-header-include-cycle (PR #94636)
Congcong Cai via cfe-commits
cfe-commits at lists.llvm.org
Thu Jun 6 09:12:27 PDT 2024
https://github.com/HerrCai0907 created https://github.com/llvm/llvm-project/pull/94636
Fixes: #94634
>From 28ef0936ee115720bbe6cc20cf255100d63780cc Mon Sep 17 00:00:00 2001
From: Congcong Cai <congcongcai0907 at 163.com>
Date: Fri, 7 Jun 2024 00:11:55 +0800
Subject: [PATCH] [clang-tidy]fix crashing when self include cycles for
misc-header-include-cycle
Fixes: #94634
---
.../clang-tidy/misc/HeaderIncludeCycleCheck.cpp | 6 ++++--
clang-tools-extra/docs/ReleaseNotes.rst | 4 ++++
.../clang-tidy/checkers/misc/header-include-cycle.self.cpp | 3 +++
3 files changed, 11 insertions(+), 2 deletions(-)
create mode 100644 clang-tools-extra/test/clang-tidy/checkers/misc/header-include-cycle.self.cpp
diff --git a/clang-tools-extra/clang-tidy/misc/HeaderIncludeCycleCheck.cpp b/clang-tools-extra/clang-tidy/misc/HeaderIncludeCycleCheck.cpp
index fadfdc869d37b..37bc577c646ab 100644
--- a/clang-tools-extra/clang-tidy/misc/HeaderIncludeCycleCheck.cpp
+++ b/clang-tools-extra/clang-tidy/misc/HeaderIncludeCycleCheck.cpp
@@ -139,8 +139,10 @@ class CyclicDependencyCallbacks : public PPCallbacks {
auto CurrentIt = Files.rbegin();
do {
- Check.diag(CurrentIt->Loc, "'%0' included from here", DiagnosticIDs::Note)
- << CurrentIt->Name;
+ if (CurrentIt->Loc.isValid())
+ Check.diag(CurrentIt->Loc, "'%0' included from here",
+ DiagnosticIDs::Note)
+ << CurrentIt->Name;
} while (CurrentIt++ != It);
}
diff --git a/clang-tools-extra/docs/ReleaseNotes.rst b/clang-tools-extra/docs/ReleaseNotes.rst
index 6947cf06f6e56..ec9b63cb2d046 100644
--- a/clang-tools-extra/docs/ReleaseNotes.rst
+++ b/clang-tools-extra/docs/ReleaseNotes.rst
@@ -317,6 +317,10 @@ Changes in existing checks
Additionally, the option `UseHeaderFileExtensions` is removed, so that the
check uses the `HeaderFileExtensions` option unconditionally.
+- Improved :doc:`misc-header-include-cycle
+ <clang-tidy/checks/misc/header-include-cycle>` check by avoiding crash for self
+ include cycles.
+
- Improved :doc:`misc-unused-using-decls
<clang-tidy/checks/misc/unused-using-decls>` check by replacing the local
option `HeaderFileExtensions` by the global option of the same name.
diff --git a/clang-tools-extra/test/clang-tidy/checkers/misc/header-include-cycle.self.cpp b/clang-tools-extra/test/clang-tidy/checkers/misc/header-include-cycle.self.cpp
new file mode 100644
index 0000000000000..245dd0a65a8b4
--- /dev/null
+++ b/clang-tools-extra/test/clang-tidy/checkers/misc/header-include-cycle.self.cpp
@@ -0,0 +1,3 @@
+// RUN: not clang-tidy %s -checks='-*,misc-header-include-cycle'
+
+#include "header-include-cycle.self.cpp"
More information about the cfe-commits
mailing list