1
- // RUN: %clang_cc1 -fbounds-safety -x objective-c -fbounds-attributes-objc-experimental -Wno-deprecated-declarations -Wno-return-type -Wno-objc-root-class -ast-dump %s 2>&1 | FileCheck %s
2
- // RUN: %clang_cc1 -fexperimental-bounds-safety-attributes -x objective-c -Wno-deprecated-declarations -Wno-return-type -Wno-objc-root-class -ast-dump %s 2>&1 | FileCheck %s
1
+ // RUN: %clang_cc1 -fbounds-safety -x objective-c -fbounds-attributes-objc-experimental -Wno-deprecated-declarations -Wno-return-type -Wno-objc-root-class -ast-dump %s 2>&1 | FileCheck --check-prefixes=COMMON-CHECK,BOUNDS-CHECK %s
2
+ // RUN: %clang_cc1 -fexperimental-bounds-safety-attributes -x objective-c -Wno-deprecated-declarations -Wno-return-type -Wno-objc-root-class -ast-dump %s 2>&1 | FileCheck --check-prefixes=COMMON-CHECK,ATTR-CHECK %s
3
3
4
4
#include < ptrcheck.h>
5
5
@@ -15,35 +15,42 @@ - (void)cParam:(int)len, int * __counted_by(len) p;
15
15
- (void )reverseCParam:(int * __counted_by (len))p, int len;
16
16
@end
17
17
18
- // CHECK-LABEL: -ObjCProtocolDecl {{.*}} CountedByProtocol
19
- // CHECK-NEXT: |-ObjCMethodDecl {{.*}} - simpleParam:: 'void'
20
- // CHECK-NEXT: | |-ParmVarDecl {{.*}} len 'int'
21
- // CHECK-NOT: IsDeref
22
- // CHECK-NEXT: | | `-DependerDeclsAttr
23
- // CHECK-NEXT: | `-ParmVarDecl {{.*}} p 'int *{{(__single)?}} __counted_by(len)':'int *{{(__single)?}}'
24
- // CHECK-NEXT: |-ObjCMethodDecl {{.*}} - reverseParam:: 'void'
25
- // CHECK-NEXT: | |-ParmVarDecl {{.*}} p 'int *{{(__single)?}} __counted_by(len)':'int *{{(__single)?}}'
26
- // CHECK-NEXT: | `-ParmVarDecl {{.*}} len 'int'
27
- // CHECK-NOT: IsDeref
28
- // CHECK-NEXT: | `-DependerDeclsAttr
29
- // CHECK-NEXT: |-ObjCMethodDecl {{.*}} - nestedParam:: 'void'
30
- // CHECK-NEXT: | |-ParmVarDecl {{.*}} len 'int *'
31
- // CHECK-NEXT: | | `-DependerDeclsAttr {{.*}} IsDeref
32
- // CHECK-NEXT: | `-ParmVarDecl {{.*}} p 'int *{{(__single)?}} __counted_by(*len)':'int *{{(__single)?}}'
33
- // CHECK-NEXT: |-ObjCMethodDecl {{.*}} - simpleRet: 'int *{{(__single)?}} __counted_by(len)':'int *{{(__single)?}}'
34
- // CHECK-NEXT: | `-ParmVarDecl {{.*}} len 'int'
35
- // CHECK-NEXT: |-ObjCMethodDecl {{.*}} - nestedRet: 'int *{{(__single)?}} __counted_by(*len)':'int *{{(__single)?}}'
36
- // CHECK-NEXT: | `-ParmVarDecl {{.*}} len 'int *'
37
- // CHECK-NEXT: |-ObjCMethodDecl {{.*}} - cParam: 'void'
38
- // CHECK-NEXT: | |-ParmVarDecl {{.*}} len 'int'
39
- // CHECK-NOT: IsDeref
40
- // CHECK-NEXT: | | `-DependerDeclsAttr
41
- // CHECK-NEXT: | `-ParmVarDecl {{.*}} p 'int *{{(__single)?}} __counted_by(len)':'int *{{(__single)?}}'
42
- // CHECK-NEXT: `-ObjCMethodDecl {{.*}} - reverseCParam: 'void'
43
- // CHECK-NEXT: |-ParmVarDecl {{.*}} p 'int *{{(__single)?}} __counted_by(len)':'int *{{(__single)?}}'
44
- // CHECK-NEXT: `-ParmVarDecl {{.*}} len 'int'
45
- // CHECK-NOT: IsDeref
46
- // CHECK-NEXT: `-DependerDeclsAttr
18
+ // COMMON-CHECK-LABEL: -ObjCProtocolDecl {{.*}} CountedByProtocol
19
+ // COMMON-CHECK-NEXT: |-ObjCMethodDecl {{.*}} - simpleParam:: 'void'
20
+ // COMMON-CHECK-NEXT: | |-ParmVarDecl {{.*}} len 'int'
21
+ // COMMON-CHECK-NOT: IsDeref
22
+ // COMMON-CHECK-NEXT: | | `-DependerDeclsAttr
23
+ // BOUNDS-CHECK-NEXT: | `-ParmVarDecl {{.*}} p 'int *__single __counted_by(len)':'int *__single'
24
+ // ATTR-CHECK-NEXT: | `-ParmVarDecl {{.*}} p 'int * __counted_by(len)':'int *'
25
+ // COMMON-CHECK-NEXT: |-ObjCMethodDecl {{.*}} - reverseParam:: 'void'
26
+ // BOUNDS-CHECK-NEXT: | |-ParmVarDecl {{.*}} p 'int *__single __counted_by(len)':'int *__single'
27
+ // ATTR-CHECK-NEXT: | |-ParmVarDecl {{.*}} p 'int * __counted_by(len)':'int *'
28
+ // COMMON-CHECK-NEXT: | `-ParmVarDecl {{.*}} len 'int'
29
+ // COMMON-CHECK-NOT: IsDeref
30
+ // COMMON-CHECK-NEXT: | `-DependerDeclsAttr
31
+ // COMMON-CHECK-NEXT: |-ObjCMethodDecl {{.*}} - nestedParam:: 'void'
32
+ // COMMON-CHECK-NEXT: | |-ParmVarDecl {{.*}} len 'int *'
33
+ // COMMON-CHECK-NEXT: | | `-DependerDeclsAttr {{.*}} IsDeref
34
+ // BOUNDS-CHECK-NEXT: | `-ParmVarDecl {{.*}} p 'int *__single __counted_by(*len)':'int *__single'
35
+ // ATTR-CHECK-NEXT: | `-ParmVarDecl {{.*}} p 'int * __counted_by(*len)':'int *'
36
+ // BOUNDS-CHECK-NEXT: |-ObjCMethodDecl {{.*}} - simpleRet: 'int *__single __counted_by(len)':'int *__single'
37
+ // ATTR-CHECK-NEXT: |-ObjCMethodDecl {{.*}} - simpleRet: 'int * __counted_by(len)':'int *'
38
+ // COMMON-CHECK-NEXT: | `-ParmVarDecl {{.*}} len 'int'
39
+ // BOUNDS-CHECK-NEXT: |-ObjCMethodDecl {{.*}} - nestedRet: 'int *__single __counted_by(*len)':'int *__single'
40
+ // ATTR-CHECK-NEXT: |-ObjCMethodDecl {{.*}} - nestedRet: 'int * __counted_by(*len)':'int *'
41
+ // COMMON-CHECK-NEXT: | `-ParmVarDecl {{.*}} len 'int *'
42
+ // COMMON-CHECK-NEXT: |-ObjCMethodDecl {{.*}} - cParam: 'void'
43
+ // COMMON-CHECK-NEXT: | |-ParmVarDecl {{.*}} len 'int'
44
+ // COMMON-CHECK-NOT: IsDeref
45
+ // COMMON-CHECK-NEXT: | | `-DependerDeclsAttr
46
+ // BOUNDS-CHECK-NEXT: | `-ParmVarDecl {{.*}} p 'int *__single __counted_by(len)':'int *__single'
47
+ // ATTR-CHECK-NEXT: | `-ParmVarDecl {{.*}} p 'int * __counted_by(len)':'int *'
48
+ // COMMON-CHECK-NEXT: `-ObjCMethodDecl {{.*}} - reverseCParam: 'void'
49
+ // BOUNDS-CHECK-NEXT: |-ParmVarDecl {{.*}} p 'int *__single __counted_by(len)':'int *__single'
50
+ // ATTR-CHECK-NEXT: |-ParmVarDecl {{.*}} p 'int * __counted_by(len)':'int *'
51
+ // COMMON-CHECK-NEXT: `-ParmVarDecl {{.*}} len 'int'
52
+ // COMMON-CHECK-NOT: IsDeref
53
+ // COMMON-CHECK-NEXT: `-DependerDeclsAttr
47
54
48
55
@interface CountedByClass <CountedByProtocol>
49
56
- (void )simpleParam:(int )len :(int * __counted_by (len))p;
@@ -57,37 +64,44 @@ - (void)cParam:(int)len, int * __counted_by(len) p;
57
64
- (void )reverseCParam:(int * __counted_by (len))p, int len;
58
65
@end
59
66
60
- // CHECK-LABEL: -ObjCInterfaceDecl {{.*}} CountedByClass
61
- // CHECK-NEXT: |-ObjCImplementation {{.*}} 'CountedByClass'
62
- // CHECK-NEXT: |-ObjCProtocol {{.*}} 'CountedByProtocol'
63
- // CHECK-NEXT: |-ObjCMethodDecl {{.*}} - simpleParam:: 'void'
64
- // CHECK-NEXT: | |-ParmVarDecl {{.*}} len 'int'
65
- // CHECK-NOT: IsDeref
66
- // CHECK-NEXT: | | `-DependerDeclsAttr
67
- // CHECK-NEXT: | `-ParmVarDecl {{.*}} p 'int *{{(__single)?}} __counted_by(len)':'int *{{(__single)?}}'
68
- // CHECK-NEXT: |-ObjCMethodDecl {{.*}} - reverseParam:: 'void'
69
- // CHECK-NEXT: | |-ParmVarDecl {{.*}} p 'int *{{(__single)?}} __counted_by(len)':'int *{{(__single)?}}'
70
- // CHECK-NEXT: | `-ParmVarDecl {{.*}} len 'int'
71
- // CHECK-NOT: IsDeref
72
- // CHECK-NEXT: | `-DependerDeclsAttr
73
- // CHECK-NEXT: |-ObjCMethodDecl {{.*}} - nestedParam:: 'void'
74
- // CHECK-NEXT: | |-ParmVarDecl {{.*}} len 'int *'
75
- // CHECK-NEXT: | | `-DependerDeclsAttr {{.*}} IsDeref
76
- // CHECK-NEXT: | `-ParmVarDecl {{.*}} p 'int *{{(__single)?}} __counted_by(*len)':'int *{{(__single)?}}'
77
- // CHECK-NEXT: |-ObjCMethodDecl {{.*}} - simpleRet: 'int *{{(__single)?}} __counted_by(len)':'int *{{(__single)?}}'
78
- // CHECK-NEXT: | `-ParmVarDecl {{.*}} len 'int'
79
- // CHECK-NEXT: |-ObjCMethodDecl {{.*}} - nestedRet: 'int *{{(__single)?}} __counted_by(*len)':'int *{{(__single)?}}'
80
- // CHECK-NEXT: | `-ParmVarDecl {{.*}} len 'int *'
81
- // CHECK-NEXT: |-ObjCMethodDecl {{.*}} - cParam: 'void'
82
- // CHECK-NEXT: | |-ParmVarDecl {{.*}} len 'int'
83
- // CHECK-NOT: IsDeref
84
- // CHECK-NEXT: | | `-DependerDeclsAttr
85
- // CHECK-NEXT: | `-ParmVarDecl {{.*}} p 'int *{{(__single)?}} __counted_by(len)':'int *{{(__single)?}}'
86
- // CHECK-NEXT: `-ObjCMethodDecl {{.*}} - reverseCParam: 'void'
87
- // CHECK-NEXT: |-ParmVarDecl {{.*}} p 'int *{{(__single)?}} __counted_by(len)':'int *{{(__single)?}}'
88
- // CHECK-NEXT: `-ParmVarDecl {{.*}} len 'int'
89
- // CHECK-NOT: IsDeref
90
- // CHECK-NEXT: `-DependerDeclsAttr
67
+ // COMMON-CHECK-LABEL: -ObjCInterfaceDecl {{.*}} CountedByClass
68
+ // COMMON-CHECK-NEXT: |-ObjCImplementation {{.*}} 'CountedByClass'
69
+ // COMMON-CHECK-NEXT: |-ObjCProtocol {{.*}} 'CountedByProtocol'
70
+ // COMMON-CHECK-NEXT: |-ObjCMethodDecl {{.*}} - simpleParam:: 'void'
71
+ // COMMON-CHECK-NEXT: | |-ParmVarDecl {{.*}} len 'int'
72
+ // COMMON-CHECK-NOT: IsDeref
73
+ // COMMON-CHECK-NEXT: | | `-DependerDeclsAttr
74
+ // BOUNDS-CHECK-NEXT: | `-ParmVarDecl {{.*}} p 'int *__single __counted_by(len)':'int *__single'
75
+ // ATTR-CHECK-NEXT: | `-ParmVarDecl {{.*}} p 'int * __counted_by(len)':'int *'
76
+ // COMMON-CHECK-NEXT: |-ObjCMethodDecl {{.*}} - reverseParam:: 'void'
77
+ // BOUNDS-CHECK-NEXT: | |-ParmVarDecl {{.*}} p 'int *__single __counted_by(len)':'int *__single'
78
+ // ATTR-CHECK-NEXT: | |-ParmVarDecl {{.*}} p 'int * __counted_by(len)':'int *'
79
+ // COMMON-CHECK-NEXT: | `-ParmVarDecl {{.*}} len 'int'
80
+ // COMMON-CHECK-NOT: IsDeref
81
+ // COMMON-CHECK-NEXT: | `-DependerDeclsAttr
82
+ // COMMON-CHECK-NEXT: |-ObjCMethodDecl {{.*}} - nestedParam:: 'void'
83
+ // COMMON-CHECK-NEXT: | |-ParmVarDecl {{.*}} len 'int *'
84
+ // COMMON-CHECK-NEXT: | | `-DependerDeclsAttr {{.*}} IsDeref
85
+ // BOUNDS-CHECK-NEXT: | `-ParmVarDecl {{.*}} p 'int *__single __counted_by(*len)':'int *__single'
86
+ // ATTR-CHECK-NEXT: | `-ParmVarDecl {{.*}} p 'int * __counted_by(*len)':'int *'
87
+ // BOUNDS-CHECK-NEXT: |-ObjCMethodDecl {{.*}} - simpleRet: 'int *__single __counted_by(len)':'int *__single'
88
+ // ATTR-CHECK-NEXT: |-ObjCMethodDecl {{.*}} - simpleRet: 'int * __counted_by(len)':'int *'
89
+ // COMMON-CHECK-NEXT: | `-ParmVarDecl {{.*}} len 'int'
90
+ // BOUNDS-CHECK-NEXT: |-ObjCMethodDecl {{.*}} - nestedRet: 'int *__single __counted_by(*len)':'int *__single'
91
+ // ATTR-CHECK-NEXT: |-ObjCMethodDecl {{.*}} - nestedRet: 'int * __counted_by(*len)':'int *'
92
+ // COMMON-CHECK-NEXT: | `-ParmVarDecl {{.*}} len 'int *'
93
+ // COMMON-CHECK-NEXT: |-ObjCMethodDecl {{.*}} - cParam: 'void'
94
+ // COMMON-CHECK-NEXT: | |-ParmVarDecl {{.*}} len 'int'
95
+ // COMMON-CHECK-NOT: IsDeref
96
+ // COMMON-CHECK-NEXT: | | `-DependerDeclsAttr
97
+ // BOUNDS-CHECK-NEXT: | `-ParmVarDecl {{.*}} p 'int *__single __counted_by(len)':'int *__single'
98
+ // ATTR-CHECK-NEXT: | `-ParmVarDecl {{.*}} p 'int * __counted_by(len)':'int *'
99
+ // COMMON-CHECK-NEXT: `-ObjCMethodDecl {{.*}} - reverseCParam: 'void'
100
+ // BOUNDS-CHECK-NEXT: |-ParmVarDecl {{.*}} p 'int *__single __counted_by(len)':'int *__single'
101
+ // ATTR-CHECK-NEXT: |-ParmVarDecl {{.*}} p 'int * __counted_by(len)':'int *'
102
+ // COMMON-CHECK-NEXT: `-ParmVarDecl {{.*}} len 'int'
103
+ // COMMON-CHECK-NOT: IsDeref
104
+ // COMMON-CHECK-NEXT: `-DependerDeclsAttr
91
105
92
106
@implementation CountedByClass
93
107
- (void )simpleParam:(int )len :(int * __counted_by (len))p {}
@@ -101,54 +115,61 @@ - (void)cParam:(int)len, int * __counted_by(len) p {}
101
115
- (void )reverseCParam:(int * __counted_by (len))p, int len {}
102
116
@end
103
117
104
- // CHECK-LABEL: -ObjCImplementationDecl {{.*}} CountedByClass
105
- // CHECK-NEXT: |-ObjCInterface {{.*}} 'CountedByClass'
106
- // CHECK-NEXT: |-ObjCMethodDecl {{.*}} - simpleParam:: 'void'
107
- // CHECK-NEXT: | |-ImplicitParamDecl {{.*}} self 'CountedByClass *'
108
- // CHECK-NEXT: | |-ImplicitParamDecl {{.*}} _cmd 'SEL':'SEL *'
109
- // CHECK-NEXT: | |-ParmVarDecl {{.*}} len 'int'
110
- // CHECK-NOT: IsDeref
111
- // CHECK-NEXT: | | `-DependerDeclsAttr
112
- // CHECK-NEXT: | |-ParmVarDecl {{.*}} p 'int *{{(__single)?}} __counted_by(len)':'int *{{(__single)?}}'
113
- // CHECK-NEXT: | `-CompoundStmt
114
- // CHECK-NEXT: |-ObjCMethodDecl {{.*}} - reverseParam:: 'void'
115
- // CHECK-NEXT: | |-ImplicitParamDecl {{.*}} self 'CountedByClass *'
116
- // CHECK-NEXT: | |-ImplicitParamDecl {{.*}} _cmd 'SEL':'SEL *'
117
- // CHECK-NEXT: | |-ParmVarDecl {{.*}} p 'int *{{(__single)?}} __counted_by(len)':'int *{{(__single)?}}'
118
- // CHECK-NEXT: | |-ParmVarDecl {{.*}} len 'int'
119
- // CHECK-NOT: IsDeref
120
- // CHECK-NEXT: | `-DependerDeclsAttr
121
- // CHECK-NEXT: | `-CompoundStmt
122
- // CHECK-NEXT: |-ObjCMethodDecl {{.*}} - nestedParam:: 'void'
123
- // CHECK-NEXT: | |-ImplicitParamDecl {{.*}} self 'CountedByClass *'
124
- // CHECK-NEXT: | |-ImplicitParamDecl {{.*}} _cmd 'SEL':'SEL *'
125
- // CHECK-NEXT: | |-ParmVarDecl {{.*}} len 'int *'
126
- // CHECK-NEXT: | | `-DependerDeclsAttr {{.*}} IsDeref
127
- // CHECK-NEXT: | |-ParmVarDecl {{.*}} p 'int *{{(__single)?}} __counted_by(*len)':'int *{{(__single)?}}'
128
- // CHECK-NEXT: | `-CompoundStmt
129
- // CHECK-NEXT: |-ObjCMethodDecl {{.*}} - simpleRet: 'int *{{(__single)?}} __counted_by(len)':'int *{{(__single)?}}'
130
- // CHECK-NEXT: | |-ImplicitParamDecl {{.*}} self 'CountedByClass *'
131
- // CHECK-NEXT: | |-ImplicitParamDecl {{.*}} _cmd 'SEL':'SEL *'
132
- // CHECK-NEXT: | |-ParmVarDecl {{.*}} len 'int'
133
- // CHECK-NEXT: | `-CompoundStmt
134
- // CHECK-NEXT: |-ObjCMethodDecl {{.*}} - nestedRet: 'int *{{(__single)?}} __counted_by(*len)':'int *{{(__single)?}}'
135
- // CHECK-NEXT: | |-ImplicitParamDecl {{.*}} self 'CountedByClass *'
136
- // CHECK-NEXT: | |-ImplicitParamDecl {{.*}} _cmd 'SEL':'SEL *'
137
- // CHECK-NEXT: | |-ParmVarDecl {{.*}} len 'int *'
138
- // CHECK-NEXT: | `-CompoundStmt
139
- // CHECK-NEXT: |-ObjCMethodDecl {{.*}} - cParam: 'void'
140
- // CHECK-NEXT: | |-ImplicitParamDecl {{.*}} self 'CountedByClass *'
141
- // CHECK-NEXT: | |-ImplicitParamDecl {{.*}} _cmd 'SEL':'SEL *'
142
- // CHECK-NEXT: | |-ParmVarDecl {{.*}} len 'int'
143
- // CHECK-NOT: IsDeref
144
- // CHECK-NEXT: | | `-DependerDeclsAttr
145
- // CHECK-NEXT: | |-ParmVarDecl {{.*}} p 'int *{{(__single)?}} __counted_by(len)':'int *{{(__single)?}}'
146
- // CHECK-NEXT: | `-CompoundStmt
147
- // CHECK-NEXT: `-ObjCMethodDecl {{.*}} - reverseCParam: 'void'
148
- // CHECK-NEXT: |-ImplicitParamDecl {{.*}} self 'CountedByClass *'
149
- // CHECK-NEXT: |-ImplicitParamDecl {{.*}} _cmd 'SEL':'SEL *'
150
- // CHECK-NEXT: |-ParmVarDecl {{.*}} p 'int *{{(__single)?}} __counted_by(len)':'int *{{(__single)?}}'
151
- // CHECK-NEXT: |-ParmVarDecl {{.*}} len 'int'
152
- // CHECK-NOT: IsDeref
153
- // CHECK-NEXT: `-DependerDeclsAttr
154
- // CHECK-NEXT: `-CompoundStmt
118
+ // COMMON-CHECK-LABEL: -ObjCImplementationDecl {{.*}} CountedByClass
119
+ // COMMON-CHECK-NEXT: |-ObjCInterface {{.*}} 'CountedByClass'
120
+ // COMMON-CHECK-NEXT: |-ObjCMethodDecl {{.*}} - simpleParam:: 'void'
121
+ // COMMON-CHECK-NEXT: | |-ImplicitParamDecl {{.*}} self 'CountedByClass *'
122
+ // COMMON-CHECK-NEXT: | |-ImplicitParamDecl {{.*}} _cmd 'SEL':'SEL *'
123
+ // COMMON-CHECK-NEXT: | |-ParmVarDecl {{.*}} len 'int'
124
+ // COMMON-CHECK-NOT: IsDeref
125
+ // COMMON-CHECK-NEXT: | | `-DependerDeclsAttr
126
+ // BOUNDS-CHECK-NEXT: | |-ParmVarDecl {{.*}} p 'int *__single __counted_by(len)':'int *__single'
127
+ // ATTR-CHECK-NEXT: | |-ParmVarDecl {{.*}} p 'int * __counted_by(len)':'int *'
128
+ // COMMON-CHECK-NEXT: | `-CompoundStmt
129
+ // COMMON-CHECK-NEXT: |-ObjCMethodDecl {{.*}} - reverseParam:: 'void'
130
+ // COMMON-CHECK-NEXT: | |-ImplicitParamDecl {{.*}} self 'CountedByClass *'
131
+ // COMMON-CHECK-NEXT: | |-ImplicitParamDecl {{.*}} _cmd 'SEL':'SEL *'
132
+ // BOUNDS-CHECK-NEXT: | |-ParmVarDecl {{.*}} p 'int *__single __counted_by(len)':'int *__single'
133
+ // ATTR-CHECK-NEXT: | |-ParmVarDecl {{.*}} p 'int * __counted_by(len)':'int *'
134
+ // COMMON-CHECK-NEXT: | |-ParmVarDecl {{.*}} len 'int'
135
+ // COMMON-CHECK-NOT: IsDeref
136
+ // COMMON-CHECK-NEXT: | `-DependerDeclsAttr
137
+ // COMMON-CHECK-NEXT: | `-CompoundStmt
138
+ // COMMON-CHECK-NEXT: |-ObjCMethodDecl {{.*}} - nestedParam:: 'void'
139
+ // COMMON-CHECK-NEXT: | |-ImplicitParamDecl {{.*}} self 'CountedByClass *'
140
+ // COMMON-CHECK-NEXT: | |-ImplicitParamDecl {{.*}} _cmd 'SEL':'SEL *'
141
+ // COMMON-CHECK-NEXT: | |-ParmVarDecl {{.*}} len 'int *'
142
+ // COMMON-CHECK-NEXT: | | `-DependerDeclsAttr {{.*}} IsDeref
143
+ // BOUNDS-CHECK-NEXT: | |-ParmVarDecl {{.*}} p 'int *__single __counted_by(*len)':'int *__single'
144
+ // ATTR-CHECK-NEXT: | |-ParmVarDecl {{.*}} p 'int * __counted_by(*len)':'int *'
145
+ // COMMON-CHECK-NEXT: | `-CompoundStmt
146
+ // BOUNDS-CHECK-NEXT: |-ObjCMethodDecl {{.*}} - simpleRet: 'int *__single __counted_by(len)':'int *__single'
147
+ // ATTR-CHECK-NEXT: |-ObjCMethodDecl {{.*}} - simpleRet: 'int * __counted_by(len)':'int *'
148
+ // COMMON-CHECK-NEXT: | |-ImplicitParamDecl {{.*}} self 'CountedByClass *'
149
+ // COMMON-CHECK-NEXT: | |-ImplicitParamDecl {{.*}} _cmd 'SEL':'SEL *'
150
+ // COMMON-CHECK-NEXT: | |-ParmVarDecl {{.*}} len 'int'
151
+ // COMMON-CHECK-NEXT: | `-CompoundStmt
152
+ // BOUNDS-CHECK-NEXT: |-ObjCMethodDecl {{.*}} - nestedRet: 'int *__single __counted_by(*len)':'int *__single'
153
+ // ATTR-CHECK-NEXT: |-ObjCMethodDecl {{.*}} - nestedRet: 'int * __counted_by(*len)':'int *'
154
+ // COMMON-CHECK-NEXT: | |-ImplicitParamDecl {{.*}} self 'CountedByClass *'
155
+ // COMMON-CHECK-NEXT: | |-ImplicitParamDecl {{.*}} _cmd 'SEL':'SEL *'
156
+ // COMMON-CHECK-NEXT: | |-ParmVarDecl {{.*}} len 'int *'
157
+ // COMMON-CHECK-NEXT: | `-CompoundStmt
158
+ // COMMON-CHECK-NEXT: |-ObjCMethodDecl {{.*}} - cParam: 'void'
159
+ // COMMON-CHECK-NEXT: | |-ImplicitParamDecl {{.*}} self 'CountedByClass *'
160
+ // COMMON-CHECK-NEXT: | |-ImplicitParamDecl {{.*}} _cmd 'SEL':'SEL *'
161
+ // COMMON-CHECK-NEXT: | |-ParmVarDecl {{.*}} len 'int'
162
+ // COMMON-CHECK-NOT: IsDeref
163
+ // COMMON-CHECK-NEXT: | | `-DependerDeclsAttr
164
+ // BOUNDS-CHECK-NEXT: | |-ParmVarDecl {{.*}} p 'int *__single __counted_by(len)':'int *__single'
165
+ // ATTR-CHECK-NEXT: | |-ParmVarDecl {{.*}} p 'int * __counted_by(len)':'int *'
166
+ // COMMON-CHECK-NEXT: | `-CompoundStmt
167
+ // COMMON-CHECK-NEXT: `-ObjCMethodDecl {{.*}} - reverseCParam: 'void'
168
+ // COMMON-CHECK-NEXT: |-ImplicitParamDecl {{.*}} self 'CountedByClass *'
169
+ // COMMON-CHECK-NEXT: |-ImplicitParamDecl {{.*}} _cmd 'SEL':'SEL *'
170
+ // BOUNDS-CHECK-NEXT: |-ParmVarDecl {{.*}} p 'int *__single __counted_by(len)':'int *__single'
171
+ // ATTR-CHECK-NEXT: |-ParmVarDecl {{.*}} p 'int * __counted_by(len)':'int *'
172
+ // COMMON-CHECK-NEXT: |-ParmVarDecl {{.*}} len 'int'
173
+ // COMMON-CHECK-NOT: IsDeref
174
+ // COMMON-CHECK-NEXT: `-DependerDeclsAttr
175
+ // COMMON-CHECK-NEXT: `-CompoundStmt
0 commit comments