From 5e0ea1994be5b5b55fb8740548d7c7c151733b96 Mon Sep 17 00:00:00 2001 From: Fariborz Jahanian Date: Thu, 6 Dec 2012 00:09:40 +0000 Subject: [PATCH] More C++ testing of declarations embedded in tag of Comment XML and fixing DeclPrint of templates along the way - wip. //rdar://12378714 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@169453 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/AST/DeclPrinter.cpp | 2 +- test/Index/comment-cplus-template-decls.cpp | 44 +++++++++++++++++++++ 2 files changed, 45 insertions(+), 1 deletion(-) create mode 100644 test/Index/comment-cplus-template-decls.cpp diff --git a/lib/AST/DeclPrinter.cpp b/lib/AST/DeclPrinter.cpp index f277f1fac7..857a26621b 100644 --- a/lib/AST/DeclPrinter.cpp +++ b/lib/AST/DeclPrinter.cpp @@ -1122,7 +1122,7 @@ DeclPrinter::VisitUnresolvedUsingTypenameDecl(UnresolvedUsingTypenameDecl *D) { void DeclPrinter::VisitUnresolvedUsingValueDecl(UnresolvedUsingValueDecl *D) { Out << "using "; D->getQualifier()->print(Out, Policy); - Out << D->getDeclName(); + Out << D->getName(); } void DeclPrinter::VisitUsingShadowDecl(UsingShadowDecl *D) { diff --git a/test/Index/comment-cplus-template-decls.cpp b/test/Index/comment-cplus-template-decls.cpp new file mode 100644 index 0000000000..c942d18211 --- /dev/null +++ b/test/Index/comment-cplus-template-decls.cpp @@ -0,0 +1,44 @@ +// RUN: rm -rf %t +// RUN: mkdir %t +// RUN: c-index-test -test-load-source all -comments-xml-schema=%S/../../bindings/xml/comment-xml-schema.rng -target x86_64-apple-darwin10 std=c++11 %s > %t/out +// RUN: FileCheck %s < %t/out + +// Ensure that XML we generate is not invalid. +// RUN: FileCheck %s -check-prefix=WRONG < %t/out +// WRONG-NOT: CommentXMLInvalid +// rdar://12378714 + +/** + * \brief Aaa +*/ +template struct A { +/** + * \brief Bbb +*/ + A(); +/** + * \brief Ccc +*/ + ~A(); +/** + * \brief Ddd +*/ + void f() { } +}; +// CHECK: template <typename T> struct A {\n} +// CHECL: A<T>() +// CHECK: void ~A<T>() + +/** + * \Brief Eee +*/ +template struct D : A { +/** + * \brief +*/ + using A::f; + + void f(); +}; +// CHECK: template <typename T> struct D : A<T> {\n} +// CHECK: using A<T>::f -- 2.40.0