Re: [PATCH] D19253: [Tooling] Fix getting fully qualified names of template alias types.

2016-04-20 Thread Chaoren Lin via cfe-commits
This revision was automatically updated to reflect the committed changes.
Closed by commit rL266925: [Tooling] Fix getting fully qualified names of 
template alias types. (authored by chaoren).

Changed prior to commit:
  http://reviews.llvm.org/D19253?vs=54225=54435#toc

Repository:
  rL LLVM

http://reviews.llvm.org/D19253

Files:
  cfe/trunk/lib/Tooling/Core/QualTypeNames.cpp
  cfe/trunk/unittests/Tooling/QualTypeNamesTest.cpp

Index: cfe/trunk/lib/Tooling/Core/QualTypeNames.cpp
===
--- cfe/trunk/lib/Tooling/Core/QualTypeNames.cpp
+++ cfe/trunk/lib/Tooling/Core/QualTypeNames.cpp
@@ -304,6 +304,8 @@
 Decl = TDT->getDecl();
   } else if (const auto *TagDeclType = dyn_cast(TypePtr)) {
 Decl = TagDeclType->getDecl();
+  } else if (const auto *TST = dyn_cast(TypePtr)) {
+Decl = TST->getTemplateName().getAsTemplateDecl();
   } else {
 Decl = TypePtr->getAsCXXRecordDecl();
   }
Index: cfe/trunk/unittests/Tooling/QualTypeNamesTest.cpp
===
--- cfe/trunk/unittests/Tooling/QualTypeNamesTest.cpp
+++ cfe/trunk/unittests/Tooling/QualTypeNamesTest.cpp
@@ -87,13 +87,19 @@
   Visitor.ExpectedQualTypeNames["non_dependent_type_var"] =
   "Foo::non_dependent_type";
   Visitor.ExpectedQualTypeNames["AnEnumVar"] = "EnumScopeClass::AnEnum";
+  Visitor.ExpectedQualTypeNames["AliasTypeVal"] = "A::B::C::InnerAlias";
   Visitor.runOver(
   "int CheckInt;\n"
+  "template \n"
+  "class OuterTemplateClass { };\n"
   "namespace A {\n"
   " namespace B {\n"
   "   class Class0 { };\n"
   "   namespace C {\n"
   " typedef int MyInt;"
+  " template \n"
+  " using InnerAlias = OuterTemplateClass;\n"
+  " InnerAlias AliasTypeVal;\n"
   "   }\n"
   "   template class Template0;"
   "   template class Template1;"
@@ -148,7 +154,8 @@
   "public:\n"
   "  enum AnEnum { ZERO, ONE };\n"
   "};\n"
-  "EnumScopeClass::AnEnum AnEnumVar;\n"
+  "EnumScopeClass::AnEnum AnEnumVar;\n",
+  TypeNameVisitor::Lang_CXX11
 );
 
   TypeNameVisitor Complex;


Index: cfe/trunk/lib/Tooling/Core/QualTypeNames.cpp
===
--- cfe/trunk/lib/Tooling/Core/QualTypeNames.cpp
+++ cfe/trunk/lib/Tooling/Core/QualTypeNames.cpp
@@ -304,6 +304,8 @@
 Decl = TDT->getDecl();
   } else if (const auto *TagDeclType = dyn_cast(TypePtr)) {
 Decl = TagDeclType->getDecl();
+  } else if (const auto *TST = dyn_cast(TypePtr)) {
+Decl = TST->getTemplateName().getAsTemplateDecl();
   } else {
 Decl = TypePtr->getAsCXXRecordDecl();
   }
Index: cfe/trunk/unittests/Tooling/QualTypeNamesTest.cpp
===
--- cfe/trunk/unittests/Tooling/QualTypeNamesTest.cpp
+++ cfe/trunk/unittests/Tooling/QualTypeNamesTest.cpp
@@ -87,13 +87,19 @@
   Visitor.ExpectedQualTypeNames["non_dependent_type_var"] =
   "Foo::non_dependent_type";
   Visitor.ExpectedQualTypeNames["AnEnumVar"] = "EnumScopeClass::AnEnum";
+  Visitor.ExpectedQualTypeNames["AliasTypeVal"] = "A::B::C::InnerAlias";
   Visitor.runOver(
   "int CheckInt;\n"
+  "template \n"
+  "class OuterTemplateClass { };\n"
   "namespace A {\n"
   " namespace B {\n"
   "   class Class0 { };\n"
   "   namespace C {\n"
   " typedef int MyInt;"
+  " template \n"
+  " using InnerAlias = OuterTemplateClass;\n"
+  " InnerAlias AliasTypeVal;\n"
   "   }\n"
   "   template class Template0;"
   "   template class Template1;"
@@ -148,7 +154,8 @@
   "public:\n"
   "  enum AnEnum { ZERO, ONE };\n"
   "};\n"
-  "EnumScopeClass::AnEnum AnEnumVar;\n"
+  "EnumScopeClass::AnEnum AnEnumVar;\n",
+  TypeNameVisitor::Lang_CXX11
 );
 
   TypeNameVisitor Complex;
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


Re: [PATCH] D19253: [Tooling] Fix getting fully qualified names of template alias types.

2016-04-20 Thread Reid Kleckner via cfe-commits
rnk accepted this revision.
rnk added a comment.
This revision is now accepted and ready to land.

lgtm


http://reviews.llvm.org/D19253



___
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits