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 <congcongcai0...@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" _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits