15e0ea1994be5b5b55fb8740548d7c7c151733b96Fariborz Jahanian// RUN: rm -rf %t 25e0ea1994be5b5b55fb8740548d7c7c151733b96Fariborz Jahanian// RUN: mkdir %t 35e0ea1994be5b5b55fb8740548d7c7c151733b96Fariborz Jahanian// 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 45e0ea1994be5b5b55fb8740548d7c7c151733b96Fariborz Jahanian// RUN: FileCheck %s < %t/out 55e0ea1994be5b5b55fb8740548d7c7c151733b96Fariborz Jahanian 65e0ea1994be5b5b55fb8740548d7c7c151733b96Fariborz Jahanian// Ensure that XML we generate is not invalid. 75e0ea1994be5b5b55fb8740548d7c7c151733b96Fariborz Jahanian// RUN: FileCheck %s -check-prefix=WRONG < %t/out 85e0ea1994be5b5b55fb8740548d7c7c151733b96Fariborz Jahanian// WRONG-NOT: CommentXMLInvalid 95e0ea1994be5b5b55fb8740548d7c7c151733b96Fariborz Jahanian// rdar://12378714 105e0ea1994be5b5b55fb8740548d7c7c151733b96Fariborz Jahanian 115e0ea1994be5b5b55fb8740548d7c7c151733b96Fariborz Jahanian/** 125e0ea1994be5b5b55fb8740548d7c7c151733b96Fariborz Jahanian * \brief Aaa 135e0ea1994be5b5b55fb8740548d7c7c151733b96Fariborz Jahanian*/ 145e0ea1994be5b5b55fb8740548d7c7c151733b96Fariborz Jahaniantemplate<typename T> struct A { 155e0ea1994be5b5b55fb8740548d7c7c151733b96Fariborz Jahanian/** 165e0ea1994be5b5b55fb8740548d7c7c151733b96Fariborz Jahanian * \brief Bbb 175e0ea1994be5b5b55fb8740548d7c7c151733b96Fariborz Jahanian*/ 185e0ea1994be5b5b55fb8740548d7c7c151733b96Fariborz Jahanian A(); 195e0ea1994be5b5b55fb8740548d7c7c151733b96Fariborz Jahanian/** 205e0ea1994be5b5b55fb8740548d7c7c151733b96Fariborz Jahanian * \brief Ccc 215e0ea1994be5b5b55fb8740548d7c7c151733b96Fariborz Jahanian*/ 225e0ea1994be5b5b55fb8740548d7c7c151733b96Fariborz Jahanian ~A(); 235e0ea1994be5b5b55fb8740548d7c7c151733b96Fariborz Jahanian/** 245e0ea1994be5b5b55fb8740548d7c7c151733b96Fariborz Jahanian * \brief Ddd 255e0ea1994be5b5b55fb8740548d7c7c151733b96Fariborz Jahanian*/ 265e0ea1994be5b5b55fb8740548d7c7c151733b96Fariborz Jahanian void f() { } 275e0ea1994be5b5b55fb8740548d7c7c151733b96Fariborz Jahanian}; 2836fab8d70eee342d66e03c9b09c029f126196103Manuel Klimek// CHECK: <Declaration>template <typename T> struct A {}</Declaration> 29762661a077ffa73580d556a9dd149830662d972eFariborz Jahanian// CHECK: <Declaration>A<T>()</Declaration> 305e0ea1994be5b5b55fb8740548d7c7c151733b96Fariborz Jahanian// CHECK: <Declaration>void ~A<T>()</Declaration> 315e0ea1994be5b5b55fb8740548d7c7c151733b96Fariborz Jahanian 325e0ea1994be5b5b55fb8740548d7c7c151733b96Fariborz Jahanian/** 335e0ea1994be5b5b55fb8740548d7c7c151733b96Fariborz Jahanian * \Brief Eee 345e0ea1994be5b5b55fb8740548d7c7c151733b96Fariborz Jahanian*/ 355e0ea1994be5b5b55fb8740548d7c7c151733b96Fariborz Jahaniantemplate <typename T> struct D : A<T> { 365e0ea1994be5b5b55fb8740548d7c7c151733b96Fariborz Jahanian/** 375e0ea1994be5b5b55fb8740548d7c7c151733b96Fariborz Jahanian * \brief 385e0ea1994be5b5b55fb8740548d7c7c151733b96Fariborz Jahanian*/ 395e0ea1994be5b5b55fb8740548d7c7c151733b96Fariborz Jahanian using A<T>::f; 405e0ea1994be5b5b55fb8740548d7c7c151733b96Fariborz Jahanian 415e0ea1994be5b5b55fb8740548d7c7c151733b96Fariborz Jahanian void f(); 425e0ea1994be5b5b55fb8740548d7c7c151733b96Fariborz Jahanian}; 4336fab8d70eee342d66e03c9b09c029f126196103Manuel Klimek// CHECK: <Declaration>template <typename T> struct D : A<T> {}</Declaration> 445e0ea1994be5b5b55fb8740548d7c7c151733b96Fariborz Jahanian// CHECK: <Declaration>using A<T>::f</Declaration> 455c6ae4bd89dc374e47c570376db804be6c413efeFariborz Jahanian 465c6ae4bd89dc374e47c570376db804be6c413efeFariborz Jahanianstruct Base { 475c6ae4bd89dc374e47c570376db804be6c413efeFariborz Jahanian int foo; 485c6ae4bd89dc374e47c570376db804be6c413efeFariborz Jahanian}; 495c6ae4bd89dc374e47c570376db804be6c413efeFariborz Jahanian/** 505c6ae4bd89dc374e47c570376db804be6c413efeFariborz Jahanian * \brief 515c6ae4bd89dc374e47c570376db804be6c413efeFariborz Jahanian*/ 525c6ae4bd89dc374e47c570376db804be6c413efeFariborz Jahaniantemplate<typename T> struct E : Base { 535c6ae4bd89dc374e47c570376db804be6c413efeFariborz Jahanian/** 545c6ae4bd89dc374e47c570376db804be6c413efeFariborz Jahanian * \brief 555c6ae4bd89dc374e47c570376db804be6c413efeFariborz Jahanian*/ 565c6ae4bd89dc374e47c570376db804be6c413efeFariborz Jahanian using Base::foo; 575c6ae4bd89dc374e47c570376db804be6c413efeFariborz Jahanian}; 5836fab8d70eee342d66e03c9b09c029f126196103Manuel Klimek// CHECK: <Declaration>template <typename T> struct E : Base {}</Declaration> 595c6ae4bd89dc374e47c570376db804be6c413efeFariborz Jahanian// CHECK: <Declaration>using Base::foo</Declaration> 605c6ae4bd89dc374e47c570376db804be6c413efeFariborz Jahanian 615c6ae4bd89dc374e47c570376db804be6c413efeFariborz Jahanian/// \tparam 625c6ae4bd89dc374e47c570376db804be6c413efeFariborz Jahanian/// \param AAA Blah blah 635c6ae4bd89dc374e47c570376db804be6c413efeFariborz Jahaniantemplate<typename T> 645c6ae4bd89dc374e47c570376db804be6c413efeFariborz Jahanianvoid func_template_1(T AAA); 655c6ae4bd89dc374e47c570376db804be6c413efeFariborz Jahanian// CHECK: <Declaration>template <typename T> void func_template_1(T AAA)</Declaration> 665c6ae4bd89dc374e47c570376db804be6c413efeFariborz Jahanian 675c6ae4bd89dc374e47c570376db804be6c413efeFariborz Jahaniantemplate<template<template<typename CCC> class DDD, class BBB> class AAA> 685c6ae4bd89dc374e47c570376db804be6c413efeFariborz Jahanianvoid func_template_2(); 6936fab8d70eee342d66e03c9b09c029f126196103Manuel Klimek// FIXME: There is not Declaration field in the generated output. 70