summaryrefslogtreecommitdiffstats
path: root/clang/lib/Format
diff options
context:
space:
mode:
authorEric Liu <ioeric@google.com>2016-06-14 14:09:21 +0000
committerEric Liu <ioeric@google.com>2016-06-14 14:09:21 +0000
commit3753f912bf2218ab02afae404ca7d39cebe94811 (patch)
tree94c6c77c00bbaa587bfbb145147680061a9b35c0 /clang/lib/Format
parent887a399418dba637d19e6aeec2071dfc03077583 (diff)
downloadbcm5719-llvm-3753f912bf2218ab02afae404ca7d39cebe94811.tar.gz
bcm5719-llvm-3753f912bf2218ab02afae404ca7d39cebe94811.zip
[clang-format] do not add existing includes.
Summary: do not add existing includes. Reviewers: djasper Subscribers: klimek, cfe-commits Differential Revision: http://reviews.llvm.org/D21323 llvm-svn: 272669
Diffstat (limited to 'clang/lib/Format')
-rw-r--r--clang/lib/Format/Format.cpp8
1 files changed, 7 insertions, 1 deletions
diff --git a/clang/lib/Format/Format.cpp b/clang/lib/Format/Format.cpp
index 45ae4338fc8..4e136941162 100644
--- a/clang/lib/Format/Format.cpp
+++ b/clang/lib/Format/Format.cpp
@@ -1486,7 +1486,6 @@ unsigned getOffsetAfterHeaderGuardsAndComments(StringRef FileName,
// code.
// FIXME: do not insert headers into conditional #include blocks, e.g. #includes
// surrounded by compile condition "#if...".
-// FIXME: do not insert existing headers.
// FIXME: insert empty lines between newly created blocks.
tooling::Replacements
fixCppIncludeInsertions(StringRef Code, const tooling::Replacements &Replaces,
@@ -1533,10 +1532,12 @@ fixCppIncludeInsertions(StringRef Code, const tooling::Replacements &Replaces,
TrimmedCode.split(Lines, '\n');
unsigned Offset = MinInsertOffset;
unsigned NextLineOffset;
+ std::set<StringRef> ExistingIncludes;
for (auto Line : Lines) {
NextLineOffset = std::min(Code.size(), Offset + Line.size() + 1);
if (IncludeRegex.match(Line, &Matches)) {
StringRef IncludeName = Matches[2];
+ ExistingIncludes.insert(IncludeName);
int Category = Categories.getIncludePriority(
IncludeName, /*CheckMainHeader=*/FirstIncludeOffset < 0);
CategoryEndOffsets[Category] = NextLineOffset;
@@ -1572,6 +1573,11 @@ fixCppIncludeInsertions(StringRef Code, const tooling::Replacements &Replaces,
"'#include ...'");
(void)Matched;
auto IncludeName = Matches[2];
+ if (ExistingIncludes.find(IncludeName) != ExistingIncludes.end()) {
+ DEBUG(llvm::dbgs() << "Skip adding existing include : " << IncludeName
+ << "\n");
+ continue;
+ }
int Category =
Categories.getIncludePriority(IncludeName, /*CheckMainHeader=*/true);
Offset = CategoryEndOffsets[Category];
OpenPOWER on IntegriCloud