Author: djasper Date: Mon Dec 21 11:28:24 2015 New Revision: 256170 URL: http://llvm.org/viewvc/llvm-project?rev=256170&view=rev Log: clang-format: Only consider the first #include that looks right to be the main #include.
Modified: cfe/trunk/lib/Format/Format.cpp cfe/trunk/unittests/Format/SortIncludesTest.cpp Modified: cfe/trunk/lib/Format/Format.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Format/Format.cpp?rev=256170&r1=256169&r2=256170&view=diff ============================================================================== --- cfe/trunk/lib/Format/Format.cpp (original) +++ cfe/trunk/lib/Format/Format.cpp Mon Dec 21 11:28:24 2015 @@ -1816,6 +1816,7 @@ tooling::Replacements sortIncludes(const FileName.endswith(".mm"); StringRef FileStem = llvm::sys::path::stem(FileName); bool FirstIncludeBlock = true; + bool MainIncludeFound = false; // Create pre-compiled regular expressions for the #include categories. SmallVector<llvm::Regex, 4> CategoryRegexs; @@ -1845,12 +1846,14 @@ tooling::Replacements sortIncludes(const break; } } - if (IsSource && Category > 0 && FirstIncludeBlock && - IncludeName.startswith("\"")) { + if (IsSource && !MainIncludeFound && Category > 0 && + FirstIncludeBlock && IncludeName.startswith("\"")) { StringRef HeaderStem = llvm::sys::path::stem(IncludeName.drop_front(1).drop_back(1)); - if (FileStem.startswith(HeaderStem)) + if (FileStem.startswith(HeaderStem)) { Category = 0; + MainIncludeFound = true; + } } IncludesInBlock.push_back({IncludeName, Line, Prev, Category}); } else if (!IncludesInBlock.empty()) { Modified: cfe/trunk/unittests/Format/SortIncludesTest.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/unittests/Format/SortIncludesTest.cpp?rev=256170&r1=256169&r2=256170&view=diff ============================================================================== --- cfe/trunk/unittests/Format/SortIncludesTest.cpp (original) +++ cfe/trunk/unittests/Format/SortIncludesTest.cpp Mon Dec 21 11:28:24 2015 @@ -204,6 +204,17 @@ TEST_F(SortIncludesTest, LeavesMainHeade "#include \"c.h\"\n" "#include \"b.h\"\n", "a.cc")); + + // Only recognize the first #include with a matching basename as main include. + EXPECT_EQ("#include \"a.h\"\n" + "#include \"b.h\"\n" + "#include \"c.h\"\n" + "#include \"llvm/a.h\"\n", + sort("#include \"b.h\"\n" + "#include \"a.h\"\n" + "#include \"c.h\"\n" + "#include \"llvm/a.h\"\n", + "a.cc")); } TEST_F(SortIncludesTest, NegativePriorities) { _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits