1// RUN: rm -rf %t 2// RUN: mkdir %t 3// 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 4// RUN: FileCheck %s < %t/out 5 6// Ensure that XML we generate is not invalid. 7// RUN: FileCheck %s -check-prefix=WRONG < %t/out 8// WRONG-NOT: CommentXMLInvalid 9// rdar://12378714 10 11/** 12 * \brief Aaa 13*/ 14template<typename T> struct A { 15/** 16 * \brief Bbb 17*/ 18 A(); 19/** 20 * \brief Ccc 21*/ 22 ~A(); 23/** 24 * \brief Ddd 25*/ 26 void f() { } 27}; 28// CHECK: <Declaration>template <typename T> struct A {}</Declaration> 29// CHECK: <Declaration>A<T>()</Declaration> 30// CHECK: <Declaration>~A<T>()</Declaration> 31 32/** 33 * \Brief Eee 34*/ 35template <typename T> struct D : A<T> { 36/** 37 * \brief 38*/ 39 using A<T>::f; 40 41 void f(); 42}; 43// CHECK: <Declaration>template <typename T> struct D : A<T> {}</Declaration> 44// CHECK: <Declaration>using A<T>::f</Declaration> 45 46struct Base { 47 int foo; 48}; 49/** 50 * \brief 51*/ 52template<typename T> struct E : Base { 53/** 54 * \brief 55*/ 56 using Base::foo; 57}; 58// CHECK: <Declaration>template <typename T> struct E : Base {}</Declaration> 59// CHECK: <Declaration>using Base::foo</Declaration> 60 61/// \tparam 62/// \param AAA Blah blah 63template<typename T> 64void func_template_1(T AAA); 65// CHECK: <Declaration>template <typename T> void func_template_1(T AAA)</Declaration> 66 67template<template<template<typename CCC> class DDD, class BBB> class AAA> 68void func_template_2(); 69// FIXME: There is not Declaration field in the generated output. 70 71namespace rdar16128173 { 72// CHECK: <Declaration>template <class PtrTy> class OpaquePtr {}</Declaration> 73 74/// \brief Wrapper for void* pointer. 75/// \tparam PtrTy Either a pointer type like 'T*' or a type that behaves like 76/// a pointer. 77template <class PtrTy> 78class OpaquePtr {}; 79 80// CHECK: <Declaration>typedef OpaquePtr<int> DeclGroupPtrTy</Declaration> 81typedef OpaquePtr<int> DeclGroupPtrTy; 82 83DeclGroupPtrTy blah; 84} 85