Author: ioeric Date: Tue May 22 01:33:30 2018 New Revision: 332959 URL: http://llvm.org/viewvc/llvm-project?rev=332959&view=rev Log: [clangd] Correctly handle IWYU prama with verbatim #include header.
Modified: clang-tools-extra/trunk/clangd/index/CanonicalIncludes.cpp clang-tools-extra/trunk/unittests/clangd/SymbolCollectorTests.cpp Modified: clang-tools-extra/trunk/clangd/index/CanonicalIncludes.cpp URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/clangd/index/CanonicalIncludes.cpp?rev=332959&r1=332958&r2=332959&view=diff ============================================================================== --- clang-tools-extra/trunk/clangd/index/CanonicalIncludes.cpp (original) +++ clang-tools-extra/trunk/clangd/index/CanonicalIncludes.cpp Tue May 22 01:33:30 2018 @@ -65,8 +65,9 @@ collectIWYUHeaderMaps(CanonicalIncludes // FIXME(ioeric): resolve the header and store actual file path. For now, // we simply assume the written header is suitable to be #included. Includes->addMapping(PP.getSourceManager().getFilename(Range.getBegin()), - Text.startswith("<") ? Text.str() - : ("\"" + Text + "\"").str()); + (Text.startswith("<") || Text.startswith("\"")) + ? Text.str() + : ("\"" + Text + "\"").str()); return false; } Modified: clang-tools-extra/trunk/unittests/clangd/SymbolCollectorTests.cpp URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/unittests/clangd/SymbolCollectorTests.cpp?rev=332959&r1=332958&r2=332959&view=diff ============================================================================== --- clang-tools-extra/trunk/unittests/clangd/SymbolCollectorTests.cpp (original) +++ clang-tools-extra/trunk/unittests/clangd/SymbolCollectorTests.cpp Tue May 22 01:33:30 2018 @@ -651,6 +651,21 @@ TEST_F(SymbolCollectorTest, IWYUPragma) IncludeHeader("\"the/good/header.h\"")))); } +TEST_F(SymbolCollectorTest, IWYUPragmaWithDoubleQuotes) { + CollectorOpts.CollectIncludePath = true; + CanonicalIncludes Includes; + PragmaHandler = collectIWYUHeaderMaps(&Includes); + CollectorOpts.Includes = &Includes; + const std::string Header = R"( + // IWYU pragma: private, include "the/good/header.h" + class Foo {}; + )"; + runSymbolCollector(Header, /*Main=*/""); + EXPECT_THAT(Symbols, UnorderedElementsAre( + AllOf(QName("Foo"), DeclURI(TestHeaderURI), + IncludeHeader("\"the/good/header.h\"")))); +} + TEST_F(SymbolCollectorTest, AvoidUsingFwdDeclsAsCanonicalDecls) { CollectorOpts.CollectIncludePath = true; Annotations Header(R"( _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits