[PATCH] D143197: [clangd] Patch includes even without any changes
Kadir Cetinkaya via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Thu Feb 2 09:03:07 PST 2023
kadircet created this revision.
kadircet added a reviewer: sammccall.
Herald added a subscriber: arphaman.
Herald added a project: All.
kadircet requested review of this revision.
Herald added subscribers: cfe-commits, MaskRay, ilya-biryukov.
Herald added a project: clang-tools-extra.
Repository:
rG LLVM Github Monorepo
https://reviews.llvm.org/D143197
Files:
clang-tools-extra/clangd/Preamble.cpp
clang-tools-extra/clangd/unittests/PreambleTests.cpp
Index: clang-tools-extra/clangd/unittests/PreambleTests.cpp
===================================================================
--- clang-tools-extra/clangd/unittests/PreambleTests.cpp
+++ clang-tools-extra/clangd/unittests/PreambleTests.cpp
@@ -225,6 +225,20 @@
.str();
}
+TEST(PreamblePatchTest, IncludesArePreserved) {
+ llvm::StringLiteral Baseline = "//error-ok\n#include <foo>\n#include <bar>\n";
+ auto Modified = Baseline + "#define FOO\n";
+
+ auto Includes = createPatchedAST(Baseline, Modified.str())
+ ->getIncludeStructure()
+ .MainFileIncludes;
+ EXPECT_TRUE(!Includes.empty());
+ EXPECT_EQ(Includes, TestTU::withCode(Baseline)
+ .build()
+ .getIncludeStructure()
+ .MainFileIncludes);
+}
+
TEST(PreamblePatchTest, Define) {
// BAR should be defined while parsing the AST.
struct {
Index: clang-tools-extra/clangd/Preamble.cpp
===================================================================
--- clang-tools-extra/clangd/Preamble.cpp
+++ clang-tools-extra/clangd/Preamble.cpp
@@ -696,6 +696,10 @@
Patch << llvm::formatv(
"#{0} {1}\n", spellingForIncDirective(Inc.Directive), Inc.Written);
}
+ } else {
+ // Includes haven't changed or we're not patching.
+ // So, copy them over from the baseline.
+ PP.PreambleIncludes = Baseline.Includes.MainFileIncludes;
}
if (DirectivesChanged) {
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D143197.494330.patch
Type: text/x-patch
Size: 1482 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20230202/13e7588b/attachment.bin>
More information about the cfe-commits
mailing list