1// RUN: rm -rf %t && mkdir -p %t
2// RUN: clang-doc --extra-arg -std=c++20 --output=%t --format=json --executor=standalone %s
3// RUN: FileCheck %s < %t/index.json
4
5template<typename T>
6concept Incrementable = requires(T x) {
7 ++x;
8 x++;
9};
10
11template<typename T> void increment(T t) requires Incrementable<T>;
12
13template<Incrementable T> Incrementable auto incrementTwo(T t);
14
15// CHECK: "Functions": [
16// CHECK-NEXT: {
17// CHECK-NEXT: "IsStatic": false,
18// CHECK-NEXT: "Name": "increment",
19// CHECK-NEXT: "Params": [
20// CHECK-NEXT: {
21// CHECK-NEXT: "Name": "t",
22// CHECK-NEXT: "Type": "T"
23// CHECK-NEXT: }
24// CHECK-NEXT: ],
25// CHECK-NEXT: "ReturnType": {
26// CHECK-NEXT: "IsBuiltIn": true,
27// CHECK-NEXT: "IsTemplate": false,
28// CHECK-NEXT: "Name": "void",
29// CHECK-NEXT: "QualName": "void",
30// CHECK-NEXT: "USR": "0000000000000000000000000000000000000000"
31// CHECK-NEXT: },
32// CHECK-NEXT: "Template": {
33// CHECK-NEXT: "Constraints": [
34// CHECK-NEXT: {
35// CHECK-NEXT: "Expression": "Incrementable<T>",
36// CHECK-NEXT: "Name": "Incrementable",
37// CHECK-NEXT: "Path": "",
38// CHECK-NEXT: "QualName": "Incrementable",
39// CHECK-NEXT: "USR": "{{[0-9A-F]*}}"
40// CHECK-NEXT: }
41// CHECK-NEXT: ],
42// CHECK-NEXT: "Parameters": [
43// CHECK-NEXT: "typename T"
44// CHECK-NEXT: ]
45// CHECK-NEXT: },
46// CHECK-NEXT: "USR": "{{[0-9A-F]*}}"
47// CHECK-NEXT: },
48// CHECK-NEXT: {
49// CHECK-NEXT: "IsStatic": false,
50// CHECK-NEXT: "Name": "incrementTwo",
51// CHECK-NEXT: "Params": [
52// CHECK-NEXT: {
53// CHECK-NEXT: "Name": "t",
54// CHECK-NEXT: "Type": "T"
55// CHECK-NEXT: }
56// CHECK-NEXT: ],
57// CHECK-NEXT: "ReturnType": {
58// CHECK-NEXT: "IsBuiltIn": false,
59// CHECK-NEXT: "IsTemplate": false,
60// CHECK-NEXT: "Name": "Incrementable auto",
61// CHECK-NEXT: "QualName": "Incrementable auto",
62// CHECK-NEXT: "USR": "0000000000000000000000000000000000000000"
63// CHECK-NEXT: },
64// CHECK-NEXT: "Template": {
65// CHECK-NEXT: "Constraints": [
66// CHECK-NEXT: {
67// CHECK-NEXT: "Expression": "Incrementable<T>",
68// CHECK-NEXT: "Name": "Incrementable",
69// CHECK-NEXT: "Path": "",
70// CHECK-NEXT: "QualName": "Incrementable",
71// CHECK-NEXT: "USR": "{{[0-9A-F]*}}"
72// CHECK-NEXT: }
73// CHECK-NEXT: ],
74// CHECK-NEXT: "Parameters": [
75// CHECK-NEXT: "Incrementable T"
76// CHECK-NEXT: ]
77// CHECK-NEXT: },
78// CHECK-NEXT: "USR": "{{[0-9A-F]*}}"
79// CHECK-NEXT: }
80

source code of clang-tools-extra/test/clang-doc/json/function-requires.cpp