Skip to content

Commit 2dfcc43

Browse files
authored
[clang-doc] Precommit concept tests (llvm#144160)
1 parent 6b9fe9e commit 2dfcc43

File tree

3 files changed

+150
-0
lines changed

3 files changed

+150
-0
lines changed
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
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/GlobalNamespace/MyClass.json
4+
5+
template<typename T>
6+
concept Addable = requires(T a, T b) {
7+
{ a + b };
8+
};
9+
10+
template<typename T>
11+
requires Addable<T>
12+
struct MyClass;
13+
14+
// CHECK: "Name": "MyClass",
15+
// CHECK-NEXT: "Namespace": [
16+
// CHECK-NEXT: "GlobalNamespace"
17+
// CHECK-NEXT: ],
18+
// CHECK-NEXT: "Path": "GlobalNamespace",
19+
// CHECK-NEXT: "TagType": "struct",
20+
// CHECK-NEXT: "Template": {
21+
// CHECK-NOT: "Constraints": [
22+
// CHECK-NOT: {
23+
// CHECK-NOT: "Expression": "Addable<T>",
24+
// CHECK-NOT: "Name": "Addable",
25+
// CHECK-NOT: "Path": "",
26+
// CHECK-NOT: "QualName": "Addable",
27+
// CHECK-NOT: "USR": "{{[0-9A-F]*}}"
28+
// CHECK-NOT: }
29+
// CHECK-NOT: ],
30+
// CHECK-NEXT: "Parameters": [
31+
// CHECK-NEXT: "typename T"
32+
// CHECK-NEXT: ]
33+
// CHECK-NEXT: },
34+
// CHECK-NEXT: "USR": "{{[0-9A-F]*}}"
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
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+
4+
// Requires that T suports post and pre-incrementing.
5+
template<typename T>
6+
concept Incrementable = requires(T x) {
7+
++x;
8+
x++;
9+
};
10+
11+
// CHECK: {
12+
// CHECK-NOT: "Concepts": [
13+
// CHECK-NOT: {
14+
// CHECK-NOT: "ConstraintExpression": "requires (T x) { ++x; x++; }",
15+
// CHECK-NOT: "Description": [
16+
// CHECK-NOT: {
17+
// CHECK-NOT: "FullComment": {
18+
// CHECK-NOT: "Children": [
19+
// CHECK-NOT: {
20+
// CHECK-NOT: "ParagraphComment": {
21+
// CHECK-NOT: "Children": [
22+
// CHECK-NOT: {
23+
// CHECK-NOT: "TextComment": " Requires that T suports post and pre-incrementing."
24+
// CHECK-NOT: ],
25+
// CHECK-NOT: "IsType": true,
26+
// CHECK-NOT: "Name": "Incrementable",
27+
// CHECK-NOT: "Template": {
28+
// CHECK-NOT: "Parameters": [
29+
// CHECK-NOT: "typename T"
30+
// CHECK-NOT: ]
31+
// CHECK-NOT: },
32+
// CHECK-NOT: "USR": "{{[0-9A-F]*}}"
33+
// CHECK-NOT: }
34+
// CHECK-NOT: ],
35+
// CHECK: "Name": "",
36+
// CHECK: "USR": "0000000000000000000000000000000000000000"
37+
// CHECK: }
Lines changed: 79 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,79 @@
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/GlobalNamespace/index.json
4+
5+
template<typename T>
6+
concept Incrementable = requires(T x) {
7+
++x;
8+
x++;
9+
};
10+
11+
template<typename T> void increment(T t) requires Incrementable<T>;
12+
13+
template<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": false,
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-NOT: "Constraints": [
34+
// CHECK-NOT: {
35+
// CHECK-NOT: "Expression": "Incrementable<T>",
36+
// CHECK-NOT: "Name": "Incrementable",
37+
// CHECK-NOT: "Path": "",
38+
// CHECK-NOT: "QualName": "Incrementable",
39+
// CHECK-NOT: "USR": "{{[0-9A-F]*}}"
40+
// CHECK-NOT: }
41+
// CHECK-NOT: ],
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-NOT: "Constraints": [
66+
// CHECK-NOT: {
67+
// CHECK-NOT: "Expression": "Incrementable<T>",
68+
// CHECK-NOT: "Name": "Incrementable",
69+
// CHECK-NOT: "Path": "",
70+
// CHECK-NOT: "QualName": "Incrementable",
71+
// CHECK-NOT: "USR": "{{[0-9A-F]*}}"
72+
// CHECK-NOT: }
73+
// CHECK-NOT: ],
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: }

0 commit comments

Comments
 (0)