[clang-tools-extra] r289952 - [include-fixer] Desugar incomplete types.

Benjamin Kramer via cfe-commits cfe-commits at lists.llvm.org
Fri Dec 16 08:09:06 PST 2016


Author: d0k
Date: Fri Dec 16 10:09:06 2016
New Revision: 289952

URL: http://llvm.org/viewvc/llvm-project?rev=289952&view=rev
Log:
[include-fixer] Desugar incomplete types.

This will look through typedefs so include-fixer will look up the target
of the typedef instead of the typedef itself (which is already in
scope).

Modified:
    clang-tools-extra/trunk/include-fixer/IncludeFixer.cpp
    clang-tools-extra/trunk/unittests/include-fixer/IncludeFixerTest.cpp

Modified: clang-tools-extra/trunk/include-fixer/IncludeFixer.cpp
URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/include-fixer/IncludeFixer.cpp?rev=289952&r1=289951&r2=289952&view=diff
==============================================================================
--- clang-tools-extra/trunk/include-fixer/IncludeFixer.cpp (original)
+++ clang-tools-extra/trunk/include-fixer/IncludeFixer.cpp Fri Dec 16 10:09:06 2016
@@ -153,8 +153,8 @@ bool IncludeFixerSemaSource::MaybeDiagno
     return false;
 
   clang::ASTContext &context = CI->getASTContext();
-  std::string QueryString =
-      T.getUnqualifiedType().getAsString(context.getPrintingPolicy());
+  std::string QueryString = QualType(T->getUnqualifiedDesugaredType(), 0)
+                                .getAsString(context.getPrintingPolicy());
   DEBUG(llvm::dbgs() << "Query missing complete type '" << QueryString << "'");
   // Pass an empty range here since we don't add qualifier in this case.
   std::vector<find_all_symbols::SymbolInfo> MatchedSymbols =

Modified: clang-tools-extra/trunk/unittests/include-fixer/IncludeFixerTest.cpp
URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/unittests/include-fixer/IncludeFixerTest.cpp?rev=289952&r1=289951&r2=289952&view=diff
==============================================================================
--- clang-tools-extra/trunk/unittests/include-fixer/IncludeFixerTest.cpp (original)
+++ clang-tools-extra/trunk/unittests/include-fixer/IncludeFixerTest.cpp Fri Dec 16 10:09:06 2016
@@ -136,6 +136,10 @@ TEST(IncludeFixer, IncompleteType) {
       "namespace std {\nclass string;\n}\nstd::string foo;\n",
       runIncludeFixer("#include \"foo.h\"\n"
                       "namespace std {\nclass string;\n}\nstring foo;\n"));
+
+  EXPECT_EQ("#include <string>\n"
+            "class string;\ntypedef string foo;\nfoo f;\n",
+            runIncludeFixer("class string;\ntypedef string foo;\nfoo f;\n"));
 }
 
 TEST(IncludeFixer, MinimizeInclude) {




More information about the cfe-commits mailing list