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