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 | */ |
14 | template<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 | */ |
35 | template <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 | |
46 | struct Base { |
47 | int foo; |
48 | }; |
49 | /** |
50 | * \brief |
51 | */ |
52 | template<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 |
63 | template<typename T> |
64 | void func_template_1(T AAA); |
65 | // CHECK: <Declaration>template <typename T> void func_template_1(T AAA)</Declaration> |
66 | |
67 | template<template<template<typename CCC> class DDD, class BBB> class AAA> |
68 | void func_template_2(); |
69 | // FIXME: There is not Declaration field in the generated output. |
70 | |
71 | namespace 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. |
77 | template <class PtrTy> |
78 | class OpaquePtr {}; |
79 | |
80 | // CHECK: <Declaration>typedef OpaquePtr<int> DeclGroupPtrTy</Declaration> |
81 | typedef OpaquePtr<int> DeclGroupPtrTy; |
82 | |
83 | DeclGroupPtrTy blah; |
84 | } |
85 | |