243 lines · cpp
1// RUN: rm -rf %t && mkdir -p %t2// RUN: clang-doc --output=%t --format=json --executor=standalone %s3// RUN: FileCheck %s < %t/json/GlobalNamespace/_ZTV7MyClass.json4 5struct Foo;6 7// This is a nice class.8// It has some nice methods and fields.9// @brief This is a brief description.10struct MyClass {11 int PublicField;12 13 int myMethod(int MyParam);14 static void staticMethod();15 const int& getConst();16 17 enum Color {18 RED,19 GREEN,20 BLUE = 521 };22 23 typedef int MyTypedef;24 25 class NestedClass;26 27 friend struct Foo;28 template<typename T> friend void friendFunction(int);29protected:30 int protectedMethod();31 32 int ProtectedField;33};34 35// CHECK: {36// CHECK-NEXT: "Description": {37// CHECK-NEXT: "BriefComments": [38// CHECK-NEXT: [39// CHECK-NEXT: {40// CHECK-NEXT: "TextComment": " This is a brief description."41// CHECK: "HasBriefComments": true,42// CHECK-NEXT: "HasParagraphComments": true,43// CHECK-NEXT: "ParagraphComments": [44// CHECK-NEXT: [45// CHECK-NEXT: {46// CHECK-NEXT: "TextComment": " This is a nice class."47// CHECK-NEXT: },48// CHECK-NEXT: {49// CHECK-NEXT: "TextComment": " It has some nice methods and fields."50// CHECK-NEXT: },51// CHECK-NEXT: {52// CHECK-NEXT: "TextComment": ""53// CHECK-NEXT: }54// CHECK: "DocumentationFileName": "_ZTV7MyClass",55// CHECK: "Enums": [56// CHECK-NEXT: {57// CHECK-NEXT: "End": true,58// CHECK-NEXT: "InfoType": "enum",59// CHECK-NEXT: "Location": {60// CHECK-NEXT: "Filename": "{{.*}}class.cpp",61// CHECK-NEXT: "LineNumber": 1762// CHECK-NEXT: },63// CHECK-NEXT: "Members": [64// CHECK-NEXT: {65// CHECK-NEXT: "Name": "RED",66// CHECK-NEXT: "Value": "0"67// CHECK-NEXT: },68// CHECK-NEXT: {69// CHECK-NEXT: "Name": "GREEN",70// CHECK-NEXT: "Value": "1"71// CHECK-NEXT: },72// CHECK-NEXT: {73// CHECK-NEXT: "End": true,74// CHECK-NEXT: "Name": "BLUE",75// CHECK-NEXT: "ValueExpr": "5"76// CHECK-NEXT: }77// CHECK-NEXT: ],78// CHECK-NEXT: "Name": "Color",79// CHECK-NEXT: "Namespace": [80// CHECK-NEXT: "MyClass",81// CHECK-NEXT: "GlobalNamespace"82// CHECK-NEXT: ],83// CHECK-NEXT: "Scoped": false,84// CHECK-NEXT: "USR": "{{[0-9A-F]*}}"85// CHECK-NEXT: }86// CHECK-NEXT: ],87// CHECK-NEXT: "Friends": [88// CHECK-NEXT: {89// CHECK-NEXT: "IsClass": false,90// CHECK-NEXT: "Params": [91// CHECK-NEXT: {92// CHECK-NEXT: "End": true,93// CHECK-NEXT: "Name": "",94// CHECK-NEXT: "Type": "int"95// CHECK-NEXT: }96// CHECK-NEXT: ],97// CHECK-NEXT: "Reference": {98// CHECK-NEXT: "Name": "friendFunction",99// CHECK-NEXT: "Path": "",100// CHECK-NEXT: "QualName": "friendFunction",101// CHECK-NEXT: "USR": "{{[0-9A-F]*}}"102// CHECK-NEXT: },103// CHECK-NEXT: "ReturnType": {104// CHECK-NEXT: "IsBuiltIn": true,105// CHECK-NEXT: "IsTemplate": false,106// CHECK-NEXT: "Name": "void",107// CHECK-NEXT: "QualName": "void",108// CHECK-NEXT: "USR": "0000000000000000000000000000000000000000"109// CHECK-NEXT: },110// CHECK-NEXT: "Template": {111// CHECK-NEXT: "Parameters": [112// CHECK-NEXT: "typename T"113// CHECK-NEXT: ]114// CHECK-NEXT: }115// CHECK-NEXT: },116// CHECK-NEXT: {117// CHECK-NEXT: "End": true,118// CHECK-NEXT: "IsClass": true,119// CHECK-NEXT: "Reference": {120// CHECK-NEXT: "Name": "Foo",121// CHECK-NEXT: "Path": "GlobalNamespace",122// CHECK-NEXT: "QualName": "Foo",123// CHECK-NEXT: "USR": "{{[0-9A-F]*}}"124// CHECK-NEXT: }125// CHECK-NEXT: }126// CHECK-NEXT: ],127// CHECK-NEXT: "HasEnums": true,128// CHECK-NEXT: "HasPublicFunctions": true,129// CHECK-NEXT: "HasPublicMembers": true,130// CHECK-NEXT: "HasRecords": true,131// CHECK-NEXT: "InfoType": "record",132// CHECK-NEXT: "IsTypedef": false,133// CHECK-NEXT: "Location": {134// CHECK-NEXT: "Filename": "{{.*}}class.cpp",135// CHECK-NEXT: "LineNumber": 10136// CHECK-NEXT: },137// CHECK-NEXT: "MangledName": "_ZTV7MyClass",138// CHECK-NEXT: "Name": "MyClass",139// CHECK-NEXT: "Namespace": [140// CHECK-NEXT: "GlobalNamespace"141// CHECK-NEXT: ],142// CHECK-NEXT: "Path": "GlobalNamespace",143// CHECK-NEXT: "ProtectedFunctions": [144// CHECK-NEXT: {145// CHECK-NEXT: "InfoType": "function",146// CHECK-NEXT: "IsStatic": false,147// CHECK-NEXT: "Name": "protectedMethod",148// CHECK-NEXT: "Namespace": [149// CHECK-NEXT: "MyClass",150// CHECK-NEXT: "GlobalNamespace"151// CHECK-NEXT: ],152// CHECK-NEXT: "ReturnType": {153// CHECK-NEXT: "IsBuiltIn": true,154// CHECK-NEXT: "IsTemplate": false,155// CHECK-NEXT: "Name": "int",156// CHECK-NEXT: "QualName": "int",157// CHECK-NEXT: "USR": "{{[0-9A-F]*}}"158// CHECK-NEXT: },159// CHECK-NEXT: "USR": "{{[0-9A-F]*}}"160// CHECK-NEXT: }161// CHECK-NEXT: ],162// CHECK-NEXT: "ProtectedMembers": [163// CHECK-NEXT: {164// CHECK-NEXT: "Name": "ProtectedField",165// CHECK-NEXT: "Type": "int"166// CHECK-NEXT: }167// CHECK-NEXT: ],168// CHECK-NEXT: "PublicFunctions": [169// CHECK-NEXT: {170// CHECK-NEXT: "InfoType": "function",171// CHECK-NEXT: "IsStatic": false,172// CHECK-NEXT: "Name": "myMethod",173// CHECK-NEXT: "Namespace": [174// CHECK-NEXT: "MyClass",175// CHECK-NEXT: "GlobalNamespace"176// CHECK-NEXT: ],177// CHECK-NEXT: "Params": [178// CHECK-NEXT: {179// CHECK-NEXT: "End": true,180// CHECK-NEXT: "Name": "MyParam",181// CHECK-NEXT: "Type": "int"182// CHECK-NEXT: }183// CHECK-NEXT: ],184// CHECK-NEXT: "ReturnType": {185// CHECK-NEXT: "IsBuiltIn": true,186// CHECK-NEXT: "IsTemplate": false,187// CHECK-NEXT: "Name": "int",188// CHECK-NEXT: "QualName": "int",189// CHECK-NEXT: "USR": "{{[0-9A-F]*}}"190// CHECK-NEXT: },191// CHECK-NEXT: "USR": "{{[0-9A-F]*}}"192// CHECK-NEXT: },193// CHECK: "IsStatic": true,194// CHECK: "Name": "getConst",195// CHECK: "ReturnType": {196// CHECK-NEXT: "IsBuiltIn": false,197// CHECK-NEXT: "IsTemplate": false,198// CHECK-NEXT: "Name": "const int &",199// CHECK-NEXT: "QualName": "const int &",200// CHECK-NEXT: "USR": "{{[0-9A-F]*}}"201// CHECK-NEXT: },202// CHECK: "PublicMembers": [203// CHECK-NEXT: {204// CHECK-NEXT: "Name": "PublicField",205// CHECK-NEXT: "Type": "int"206// CHECK-NEXT: }207// CHECK-NEXT: ],208// CHECK-NEXT: "Records": [209// CHECK-NEXT: {210// CHECK-NEXT: "DocumentationFileName": "_ZTVN7MyClass11NestedClassE",211// CHECK-NEXT: "End": true,212// CHECK-NEXT: "Name": "NestedClass",213// CHECK-NEXT: "Path": "GlobalNamespace{{[\/]+}}MyClass",214// CHECK-NEXT: "QualName": "NestedClass",215// CHECK-NEXT: "USR": "{{[0-9A-F]*}}"216// CHECK-NEXT: }217// CHECK-NEXT: ]218// CHECK-NEXT: "TagType": "struct",219// CHECK-NEXT: "Typedefs": [220// CHECK-NEXT: {221// CHECK-NEXT: "End": true,222// CHECK-NEXT: "InfoType": "typedef",223// CHECK-NEXT: "IsUsing": false,224// CHECK-NEXT: "Location": {225// CHECK-NEXT: "Filename": "{{.*}}class.cpp",226// CHECK-NEXT: "LineNumber": 23227// CHECK-NEXT: },228// CHECK-NEXT: "Name": "MyTypedef",229// CHECK-NEXT: "Namespace": [230// CHECK-NEXT: "MyClass",231// CHECK-NEXT: "GlobalNamespace"232// CHECK-NEXT: ],233// CHECK-NEXT: "TypeDeclaration": "",234// CHECK-NEXT: "USR": "{{[0-9A-F]*}}",235// CHECK-NEXT: "Underlying": {236// CHECK-NEXT: "IsBuiltIn": true,237// CHECK-NEXT: "IsTemplate": false,238// CHECK-NEXT: "Name": "int",239// CHECK-NEXT: "QualName": "int",240// CHECK-NEXT: "USR": "0000000000000000000000000000000000000000"241// CHECK: "USR": "{{[0-9A-F]*}}"242// CHECK-NEXT: }243