// 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 {} // CHECK: A<T>() // CHECK: ~A<T>() /** * \Brief Eee */ template struct D : A { /** * \brief */ using A::f; void f(); }; // CHECK: template <typename T> struct D : A<T> {} // CHECK: using A<T>::f struct Base { int foo; }; /** * \brief */ template struct E : Base { /** * \brief */ using Base::foo; }; // CHECK: template <typename T> struct E : Base {} // CHECK: using Base::foo /// \tparam /// \param AAA Blah blah template void func_template_1(T AAA); // CHECK: template <typename T> void func_template_1(T AAA) template class DDD, class BBB> class AAA> void func_template_2(); // FIXME: There is not Declaration field in the generated output. namespace rdar16128173 { // CHECK: template <class PtrTy> class OpaquePtr {} /// \brief Wrapper for void* pointer. /// \tparam PtrTy Either a pointer type like 'T*' or a type that behaves like /// a pointer. template class OpaquePtr {}; // CHECK: typedef OpaquePtr<int> DeclGroupPtrTy typedef OpaquePtr DeclGroupPtrTy; DeclGroupPtrTy blah; }