blob: 1fb6310c512f859a519ef5089868f10271c73cbd [file] [log] [blame]
// RUN: rm -rf %t
// RUN: mkdir %t
// RUN: echo "" > %t/compile_flags.txt
// RUN: cp "%s" "%t/test.cpp"
// RUN: clang-doc -doxygen -p %t %t/test.cpp -output=%t/docs
// RUN: cat %t/docs/A.yaml | FileCheck %s --check-prefix=CHECK-A
// RUN: cat %t/docs/Bc.yaml | FileCheck %s --check-prefix=CHECK-BC
// RUN: cat %t/docs/B.yaml | FileCheck %s --check-prefix=CHECK-B
// RUN: cat %t/docs/C.yaml | FileCheck %s --check-prefix=CHECK-C
// RUN: cat %t/docs/D.yaml | FileCheck %s --check-prefix=CHECK-D
// RUN: cat %t/docs/E.yaml | FileCheck %s --check-prefix=CHECK-E
// RUN: cat %t/docs/E/ProtectedMethod.yaml | FileCheck %s --check-prefix=CHECK-EPM
// RUN: cat %t/docs/E/E.yaml | FileCheck %s --check-prefix=CHECK-ECON
// RUN: cat %t/docs/E/'~E.yaml' | FileCheck %s --check-prefix=CHECK-EDES
// RUN: cat %t/docs/F.yaml | FileCheck %s --check-prefix=CHECK-F
// RUN: cat %t/docs/X.yaml | FileCheck %s --check-prefix=CHECK-X
// RUN: cat %t/docs/X/Y.yaml | FileCheck %s --check-prefix=CHECK-Y
// RUN: cat %t/docs/H.yaml | FileCheck %s --check-prefix=CHECK-H
// RUN: cat %t/docs/H/I.yaml | FileCheck %s --check-prefix=CHECK-I
union A { int X; int Y; };
// CHECK-A: ---
// CHECK-A-NEXT: USR: 'ACE81AFA6627B4CEF2B456FB6E1252925674AF7E'
// CHECK-A-NEXT: Name: 'A'
// CHECK-A-NEXT: DefLocation:
// CHECK-A-NEXT: LineNumber: 21
// CHECK-A-NEXT: Filename: '{{.*}}'
// CHECK-A-NEXT: TagType: Union
// CHECK-A-NEXT: Members:
// CHECK-A-NEXT: - Type:
// CHECK-A-NEXT: Name: 'int'
// CHECK-A-NEXT: Name: 'X'
// CHECK-A-NEXT: - Type:
// CHECK-A-NEXT: Name: 'int'
// CHECK-A-NEXT: Name: 'Y'
// CHECK-A-NEXT: ...
enum B { X, Y };
// CHECK-B: ---
// CHECK-B-NEXT: USR: 'FC07BD34D5E77782C263FA944447929EA8753740'
// CHECK-B-NEXT: Name: 'B'
// CHECK-B-NEXT: DefLocation:
// CHECK-B-NEXT: LineNumber: 40
// CHECK-B-NEXT: Filename: '{{.*}}'
// CHECK-B-NEXT: Members:
// CHECK-B-NEXT: - 'X'
// CHECK-B-NEXT: - 'Y'
// CHECK-B-NEXT: ...
enum class Bc { A, B };
// CHECK-BC: ---
// CHECK-BC-NEXT: USR: '1E3438A08BA22025C0B46289FF0686F92C8924C5'
// CHECK-BC-NEXT: Name: 'Bc'
// CHECK-BC-NEXT: DefLocation:
// CHECK-BC-NEXT: LineNumber: 53
// CHECK-BC-NEXT: Filename: '{{.*}}'
// CHECK-BC-NEXT: Scoped: true
// CHECK-BC-NEXT: Members:
// CHECK-BC-NEXT: - 'A'
// CHECK-BC-NEXT: - 'B'
// CHECK-BC-NEXT: ...
struct C { int i; };
// CHECK-C: ---
// CHECK-C-NEXT: USR: '06B5F6A19BA9F6A832E127C9968282B94619B210'
// CHECK-C-NEXT: Name: 'C'
// CHECK-C-NEXT: DefLocation:
// CHECK-C-NEXT: LineNumber: 67
// CHECK-C-NEXT: Filename: '{{.*}}'
// CHECK-C-NEXT: Members:
// CHECK-C-NEXT: - Type:
// CHECK-C-NEXT: Name: 'int'
// CHECK-C-NEXT: Name: 'i'
// CHECK-C-NEXT: ...
class D {};
// CHECK-D: ---
// CHECK-D-NEXT: USR: '0921737541208B8FA9BB42B60F78AC1D779AA054'
// CHECK-D-NEXT: Name: 'D'
// CHECK-D-NEXT: DefLocation:
// CHECK-D-NEXT: LineNumber: 81
// CHECK-D-NEXT: Filename: '{{.*}}'
// CHECK-D-NEXT: TagType: Class
// CHECK-D-NEXT: ...
class E {
public:
E() {}
// CHECK-ECON: ---
// CHECK-ECON-NEXT: USR: 'DEB4AC1CD9253CD9EF7FBE6BCAC506D77984ABD4'
// CHECK-ECON-NEXT: Name: 'E'
// CHECK-ECON-NEXT: Namespace:
// CHECK-ECON-NEXT: - Type: Record
// CHECK-ECON-NEXT: Name: 'E'
// CHECK-ECON-NEXT: USR: '289584A8E0FF4178A794622A547AA622503967A1'
// CHECK-ECON-NEXT: DefLocation:
// CHECK-ECON-NEXT: LineNumber: 94
// CHECK-ECON-NEXT: Filename: '{{.*}}'
// CHECK-ECON-NEXT: IsMethod: true
// CHECK-ECON-NEXT: Parent:
// CHECK-ECON-NEXT: Type: Record
// CHECK-ECON-NEXT: Name: 'E'
// CHECK-ECON-NEXT: USR: '289584A8E0FF4178A794622A547AA622503967A1'
// CHECK-ECON-NEXT: ReturnType:
// CHECK-ECON-NEXT: Type:
// CHECK-ECON-NEXT: Name: 'void'
// CHECK-ECON-NEXT: ...
~E() {}
// CHECK-EDES: ---
// CHECK-EDES-NEXT: USR: 'BD2BDEBD423F80BACCEA75DE6D6622D355FC2D17'
// CHECK-EDES-NEXT: Name: '~E'
// CHECK-EDES-NEXT: Namespace:
// CHECK-EDES-NEXT: - Type: Record
// CHECK-EDES-NEXT: Name: 'E'
// CHECK-EDES-NEXT: USR: '289584A8E0FF4178A794622A547AA622503967A1'
// CHECK-EDES-NEXT: DefLocation:
// CHECK-EDES-NEXT: LineNumber: 116
// CHECK-EDES-NEXT: Filename: '{{.*}}'
// CHECK-EDES-NEXT: IsMethod: true
// CHECK-EDES-NEXT: Parent:
// CHECK-EDES-NEXT: Type: Record
// CHECK-EDES-NEXT: Name: 'E'
// CHECK-EDES-NEXT: USR: '289584A8E0FF4178A794622A547AA622503967A1'
// CHECK-EDES-NEXT: ReturnType:
// CHECK-EDES-NEXT: Type:
// CHECK-EDES-NEXT: Name: 'void'
// CHECK-EDES-NEXT: ...
protected:
void ProtectedMethod();
};
// CHECK-E: ---
// CHECK-E-NEXT: USR: '289584A8E0FF4178A794622A547AA622503967A1'
// CHECK-E-NEXT: Name: 'E'
// CHECK-E-NEXT: DefLocation:
// CHECK-E-NEXT: LineNumber: 92
// CHECK-E-NEXT: Filename: '{{.*}}'
// CHECK-E-NEXT: TagType: Class
// CHECK-E-NEXT: ...
void E::ProtectedMethod() {}
// CHECK-EPM: ---
// CHECK-EPM-NEXT: USR: '5093D428CDC62096A67547BA52566E4FB9404EEE'
// CHECK-EPM-NEXT: Name: 'ProtectedMethod'
// CHECK-EPM-NEXT: Namespace:
// CHECK-EPM-NEXT: - Type: Record
// CHECK-EPM-NEXT: Name: 'E'
// CHECK-EPM-NEXT: USR: '289584A8E0FF4178A794622A547AA622503967A1'
// CHECK-EPM-NEXT: DefLocation:
// CHECK-EPM-NEXT: LineNumber: 152
// CHECK-EPM-NEXT: Filename: '{{.*}}'
// CHECK-EPM-NEXT: Location:
// CHECK-EPM-NEXT: - LineNumber: 140
// CHECK-EPM-NEXT: Filename: '{{.*}}'
// CHECK-EPM-NEXT: IsMethod: true
// CHECK-EPM-NEXT: Parent:
// CHECK-EPM-NEXT: Type: Record
// CHECK-EPM-NEXT: Name: 'E'
// CHECK-EPM-NEXT: USR: '289584A8E0FF4178A794622A547AA622503967A1'
// CHECK-EPM-NEXT: ReturnType:
// CHECK-EPM-NEXT: Type:
// CHECK-EPM-NEXT: Name: 'void'
// CHECK-EPM-NEXT: ...
class F : virtual private D, public E {};
// CHECK-F: ---
// CHECK-F-NEXT: USR: 'E3B54702FABFF4037025BA194FC27C47006330B5'
// CHECK-F-NEXT: Name: 'F'
// CHECK-F-NEXT: DefLocation:
// CHECK-F-NEXT: LineNumber: 177
// CHECK-F-NEXT: Filename: '{{.*}}'
// CHECK-F-NEXT: TagType: Class
// CHECK-F-NEXT: Parents:
// CHECK-F-NEXT: - Type: Record
// CHECK-F-NEXT: Name: 'E'
// CHECK-F-NEXT: USR: '289584A8E0FF4178A794622A547AA622503967A1'
// CHECK-F-NEXT: VirtualParents:
// CHECK-F-NEXT: - Type: Record
// CHECK-F-NEXT: Name: 'D'
// CHECK-F-NEXT: USR: '0921737541208B8FA9BB42B60F78AC1D779AA054'
// CHECK-F-NEXT: ...
class X {
class Y {};
// CHECK-Y: ---
// CHECK-Y-NEXT: USR: '641AB4A3D36399954ACDE29C7A8833032BF40472'
// CHECK-Y-NEXT: Name: 'Y'
// CHECK-Y-NEXT: Namespace:
// CHECK-Y-NEXT: - Type: Record
// CHECK-Y-NEXT: Name: 'X'
// CHECK-Y-NEXT: USR: 'CA7C7935730B5EACD25F080E9C83FA087CCDC75E'
// CHECK-Y-NEXT: DefLocation:
// CHECK-Y-NEXT: LineNumber: 197
// CHECK-Y-NEXT: Filename: '{{.*}}'
// CHECK-Y-NEXT: TagType: Class
// CHECK-Y-NEXT: ...
};
// CHECK-X: ---
// CHECK-X-NEXT: USR: 'CA7C7935730B5EACD25F080E9C83FA087CCDC75E'
// CHECK-X-NEXT: Name: 'X'
// CHECK-X-NEXT: DefLocation:
// CHECK-X-NEXT: LineNumber: 196
// CHECK-X-NEXT: Filename: '{{.*}}'
// CHECK-X-NEXT: TagType: Class
// CHECK-X-NEXT: ...
void H() {
class I {};
// CHECK-I: ---
// CHECK-I-NEXT: USR: '{{.*}}'
// CHECK-I-NEXT: Name: 'I'
// CHECK-I-NEXT: Namespace:
// CHECK-I-NEXT: - Type: Function
// CHECK-I-NEXT: Name: 'H'
// CHECK-I-NEXT: USR: 'B6AC4C5C9F2EA3F2B3ECE1A33D349F4EE502B24E'
// CHECK-I-NEXT: DefLocation:
// CHECK-I-NEXT: LineNumber: 224
// CHECK-I-NEXT: Filename: 'test'
// CHECK-I-NEXT: TagType: Class
// CHECK-I-NEXT: ...
}
// CHECK-H: ---
// CHECK-H-NEXT: USR: 'B6AC4C5C9F2EA3F2B3ECE1A33D349F4EE502B24E'
// CHECK-H-NEXT: Name: 'H'
// CHECK-H-NEXT: DefLocation:
// CHECK-H-NEXT: LineNumber: 223
// CHECK-H-NEXT: Filename: 'test'
// CHECK-H-NEXT: ReturnType:
// CHECK-H-NEXT: Type:
// CHECK-H-NEXT: Name: 'void'
// CHECK-H-NEXT: ...