kbobyrev updated this revision to Diff 382608. kbobyrev added a comment. Also handle the Command-Line defines.
Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D112608/new/ https://reviews.llvm.org/D112608 Files: clang-tools-extra/clangd/IncludeCleaner.cpp clang-tools-extra/clangd/unittests/IncludeCleanerTests.cpp Index: clang-tools-extra/clangd/unittests/IncludeCleanerTests.cpp =================================================================== --- clang-tools-extra/clangd/unittests/IncludeCleanerTests.cpp +++ clang-tools-extra/clangd/unittests/IncludeCleanerTests.cpp @@ -234,7 +234,7 @@ "<system_header.h>")); } -TEST(IncludeCleaner, ScratchBuffer) { +TEST(IncludeCleaner, VirtualBuffers) { TestTU TU; TU.Filename = "foo.cpp"; TU.Code = R"cpp( @@ -242,6 +242,8 @@ using flags::FLAGS_FOO; + int y = CLI; + int concat(a, b) = 42; )cpp"; // The pasting operator in combination with DEFINE_FLAG will create @@ -258,6 +260,7 @@ #define ab x #define concat(x, y) x##y )cpp"; + TU.ExtraArgs = {"-DCLI=42"}; ParsedAST AST = TU.build(); auto &SM = AST.getSourceManager(); auto &Includes = AST.getIncludeStructure(); Index: clang-tools-extra/clangd/IncludeCleaner.cpp =================================================================== --- clang-tools-extra/clangd/IncludeCleaner.cpp +++ clang-tools-extra/clangd/IncludeCleaner.cpp @@ -133,7 +133,8 @@ void add(SourceLocation Loc) { add(SM.getFileID(Loc), Loc); } void add(FileID FID, SourceLocation Loc) { - if (FID.isInvalid()) + // Check if Loc is not written in a physical file. + if (FID.isInvalid() || SM.isWrittenInBuiltinFile(Loc)) return; assert(SM.isInFileID(Loc, FID)); if (Loc.isFileID()) {
Index: clang-tools-extra/clangd/unittests/IncludeCleanerTests.cpp =================================================================== --- clang-tools-extra/clangd/unittests/IncludeCleanerTests.cpp +++ clang-tools-extra/clangd/unittests/IncludeCleanerTests.cpp @@ -234,7 +234,7 @@ "<system_header.h>")); } -TEST(IncludeCleaner, ScratchBuffer) { +TEST(IncludeCleaner, VirtualBuffers) { TestTU TU; TU.Filename = "foo.cpp"; TU.Code = R"cpp( @@ -242,6 +242,8 @@ using flags::FLAGS_FOO; + int y = CLI; + int concat(a, b) = 42; )cpp"; // The pasting operator in combination with DEFINE_FLAG will create @@ -258,6 +260,7 @@ #define ab x #define concat(x, y) x##y )cpp"; + TU.ExtraArgs = {"-DCLI=42"}; ParsedAST AST = TU.build(); auto &SM = AST.getSourceManager(); auto &Includes = AST.getIncludeStructure(); Index: clang-tools-extra/clangd/IncludeCleaner.cpp =================================================================== --- clang-tools-extra/clangd/IncludeCleaner.cpp +++ clang-tools-extra/clangd/IncludeCleaner.cpp @@ -133,7 +133,8 @@ void add(SourceLocation Loc) { add(SM.getFileID(Loc), Loc); } void add(FileID FID, SourceLocation Loc) { - if (FID.isInvalid()) + // Check if Loc is not written in a physical file. + if (FID.isInvalid() || SM.isWrittenInBuiltinFile(Loc)) return; assert(SM.isInFileID(Loc, FID)); if (Loc.isFileID()) {
_______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits