123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177 |
- // 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 %s > %t/out
- // RUN: FileCheck %s < %t/out
- // 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++98 %s > %t/98
- // RUN: FileCheck %s < %t/98
- // 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/11
- // RUN: FileCheck %s < %t/11
- // Ensure that XML we generate is not invalid.
- // RUN: FileCheck %s -check-prefix=WRONG < %t/out
- // RUN: FileCheck %s -check-prefix=WRONG < %t/98
- // RUN: FileCheck %s -check-prefix=WRONG < %t/11
- // WRONG-NOT: CommentXMLInvalid
- // rdar://12378714
- /**
- * \brief plain c++ class
- */
- class Test
- {
- public:
- /**
- * \brief plain c++ constructor
- */
- Test () : reserved (new data()) {}
- /**
- * \brief plain c++ member function
- */
- unsigned getID() const
- {
- return reserved->objectID;
- }
- /**
- * \brief plain c++ destructor
- */
- ~Test () {}
- protected:
- struct data {
- unsigned objectID;
- };
- /**
- * \brief plain c++ data field
- */
- data* reserved;
- };
- // CHECK: <Declaration>class Test {}</Declaration>
- // CHECK: <Declaration>Test() : reserved(new Test::data()) {}</Declaration>
- // CHECK: <Declaration>unsigned int getID() const</Declaration>
- // CHECK: <Declaration>~Test(){{( noexcept)?}}</Declaration>
- // CHECK: <Declaration>Test::data *reserved</Declaration>
- class S {
- /**
- * \brief Aaa
- */
- friend class Test;
- /**
- * \brief Bbb
- */
- friend void foo() {}
- /**
- * \brief Ccc
- */
- friend int int_func();
- /**
- * \brief Ddd
- */
- friend bool operator==(const Test &, const Test &);
- /**
- * \brief Eee
- */
- template <typename T> friend void TemplateFriend();
- /**
- * \brief Eee
- */
- template <typename T> friend class TemplateFriendClass;
- };
- // CHECK: <Declaration>friend class Test</Declaration>
- // CHECK: <Declaration>friend void foo()</Declaration>
- // CHECK: <Declaration>friend int int_func()</Declaration>
- // CHECK: <Declaration>friend bool operator==(const Test &, const Test &)</Declaration>
- // CHECK: <Declaration>friend template <typename T> void TemplateFriend()</Declaration>
- // CHECK: <Declaration>friend template <typename T> class TemplateFriendClass</Declaration>
- namespace test0 {
- namespace ns {
- void f(int);
- }
- struct A {
- /**
- * \brief Fff
- */
- friend void ns::f(int a);
- };
- }
- // CHECK: <Declaration>friend void ns::f(int a)</Declaration>
- namespace test1 {
- template <class T> struct Outer {
- void foo(T);
- struct Inner {
- /**
- * \brief Ggg
- */
- friend void Outer::foo(T);
- };
- };
- }
- // CHECK: <Declaration>friend void Outer<T>::foo(T)</Declaration>
- namespace test2 {
- namespace foo {
- void Func(int x);
- }
- class Bar {
- /**
- * \brief Hhh
- */
- friend void ::test2::foo::Func(int x);
- };
- }
- // CHECK: <Declaration>friend void ::test2::foo::Func(int x)</Declaration>
- namespace test3 {
- template<class T> class vector {
- public:
- vector(int i) {}
- /**
- * \brief Iii
- */
- void f(const T& t = T()) {}
- };
- class A {
- private:
- /**
- * \brief Jjj
- */
- friend void vector<A>::f(const A&);
- };
- }
- // CHECK: <Declaration>void f(const T &t = T())</Declaration>
- // CHECK: <Declaration>friend void vector<A>::f(const test3::A &)</Declaration>
- class MyClass
- {
- /**
- * \brief plain friend test.
- */
- friend class MyClass;
- };
- // CHECK: <Declaration>friend class MyClass</Declaration>
- template<class _Tp> class valarray
- {
- private:
- /**
- * \brief template friend test.
- */
- template <class T> friend class valarray;
- };
- // CHECK: <Declaration>template <class T> class valarray</Declaration>
- // CHECK: <Declaration>friend template <class T> class valarray</Declaration>
- class gslice
- {
- valarray<unsigned> __size_;
- };
|