126 lines · cpp
1// RUN: rm -rf %t && mkdir -p %t2// RUN: clang-doc --extra-arg -std=c++20 --output=%t --format=json --executor=standalone %s3// RUN: FileCheck %s < %t/json/GlobalNamespace/index.json4 5template<typename T> concept Incrementable = requires (T a) {6 a++;7};8 9template<typename T> concept Decrementable = requires (T a) {10 a--;11};12 13template<typename T> concept PreIncrementable = requires (T a) {14 ++a;15};16 17template<typename T> concept PreDecrementable = requires (T a) {18 --a;19};20 21template<typename T> requires Incrementable<T> && Decrementable<T> void One();22 23template<typename T> requires (Incrementable<T> && Decrementable<T>) void Two();24 25template<typename T> requires (Incrementable<T> && Decrementable<T>) || (PreIncrementable<T> && PreDecrementable<T>) void Three();26 27template<typename T> requires (Incrementable<T> && Decrementable<T>) || PreIncrementable<T> void Four();28 29// CHECK: "Name": "One",30// CHECK: "Template": {31// CHECK-NEXT: "Constraints": [32// CHECK-NEXT: {33// CHECK-NEXT: "Expression": "Incrementable<T>",34// CHECK-NEXT: "Name": "Incrementable",35// CHECK-NEXT: "Path": "",36// CHECK-NEXT: "QualName": "Incrementable",37// CHECK-NEXT: "USR": "{{[0-9A-F]*}}"38// CHECK-NEXT: },39// CHECK-NEXT: {40// CHECK-NEXT: "End": true,41// CHECK-NEXT: "Expression": "Decrementable<T>",42// CHECK-NEXT: "Name": "Decrementable",43// CHECK-NEXT: "Path": "",44// CHECK-NEXT: "QualName": "Decrementable",45// CHECK-NEXT: "USR": "{{[0-9A-F]*}}"46// CHECK-NEXT: }47// CHECK-NEXT: ],48// CHECK: "Name": "Two",49// CHECK: "Template": {50// CHECK-NEXT: "Constraints": [51// CHECK-NEXT: {52// CHECK-NEXT: "Expression": "Incrementable<T>",53// CHECK-NEXT: "Name": "Incrementable",54// CHECK-NEXT: "Path": "",55// CHECK-NEXT: "QualName": "Incrementable",56// CHECK-NEXT: "USR": "{{[0-9A-F]*}}"57// CHECK-NEXT: },58// CHECK-NEXT: {59// CHECK-NEXT: "End": true,60// CHECK-NEXT: "Expression": "Decrementable<T>",61// CHECK-NEXT: "Name": "Decrementable",62// CHECK-NEXT: "Path": "",63// CHECK-NEXT: "QualName": "Decrementable",64// CHECK-NEXT: "USR": "{{[0-9A-F]*}}"65// CHECK-NEXT: }66// CHECK-NEXT: ],67// CHECK: "Name": "Three",68// CHECK: "Template": {69// CHECK-NEXT: "Constraints": [70// CHECK-NEXT: {71// CHECK-NEXT: "Expression": "Incrementable<T>",72// CHECK-NEXT: "Name": "Incrementable",73// CHECK-NEXT: "Path": "",74// CHECK-NEXT: "QualName": "Incrementable",75// CHECK-NEXT: "USR": "{{[0-9A-F]*}}"76// CHECK-NEXT: },77// CHECK-NEXT: {78// CHECK-NEXT: "Expression": "Decrementable<T>",79// CHECK-NEXT: "Name": "Decrementable",80// CHECK-NEXT: "Path": "",81// CHECK-NEXT: "QualName": "Decrementable",82// CHECK-NEXT: "USR": "{{[0-9A-F]*}}"83// CHECK-NEXT: },84// CHECK-NEXT: {85// CHECK-NEXT: "Expression": "PreIncrementable<T>",86// CHECK-NEXT: "Name": "PreIncrementable",87// CHECK-NEXT: "Path": "",88// CHECK-NEXT: "QualName": "PreIncrementable",89// CHECK-NEXT: "USR": "{{[0-9A-F]*}}"90// CHECK-NEXT: },91// CHECK-NEXT: {92// CHECK-NEXT: "End": true,93// CHECK-NEXT: "Expression": "PreDecrementable<T>",94// CHECK-NEXT: "Name": "PreDecrementable",95// CHECK-NEXT: "Path": "",96// CHECK-NEXT: "QualName": "PreDecrementable",97// CHECK-NEXT: "USR": "{{[0-9A-F]*}}"98// CHECK-NEXT: }99// CHECK-NEXT: ],100// CHECK: "Name": "Four",101// CHECK: "Template": {102// CHECK-NEXT: "Constraints": [103// CHECK-NEXT: {104// CHECK-NEXT: "Expression": "Incrementable<T>",105// CHECK-NEXT: "Name": "Incrementable",106// CHECK-NEXT: "Path": "",107// CHECK-NEXT: "QualName": "Incrementable",108// CHECK-NEXT: "USR": "{{[0-9A-F]*}}"109// CHECK-NEXT: },110// CHECK-NEXT: {111// CHECK-NEXT: "Expression": "Decrementable<T>",112// CHECK-NEXT: "Name": "Decrementable",113// CHECK-NEXT: "Path": "",114// CHECK-NEXT: "QualName": "Decrementable",115// CHECK-NEXT: "USR": "{{[0-9A-F]*}}"116// CHECK-NEXT: },117// CHECK-NEXT: {118// CHECK-NEXT: "End": true,119// CHECK-NEXT: "Expression": "PreIncrementable<T>",120// CHECK-NEXT: "Name": "PreIncrementable",121// CHECK-NEXT: "Path": "",122// CHECK-NEXT: "QualName": "PreIncrementable",123// CHECK-NEXT: "USR": "{{[0-9A-F]*}}"124// CHECK-NEXT: }125// CHECK-NEXT: ],126