blob: 416f63c152df9e83db0704667d3d0086d01a5d4b [file] [log] [blame]
Gabor Horvathdce40c52015-09-18 21:15:37 +00001// RUN: %clang_cc1 -analyze -analyzer-checker=core,alpha.osx.cocoa.ObjCGenerics,alpha.core.DynamicTypeChecker -verify -Wno-objc-method-access %s
2// RUN: %clang_cc1 -analyze -analyzer-checker=core,alpha.osx.cocoa.ObjCGenerics,alpha.core.DynamicTypeChecker -verify -Wno-objc-method-access %s -analyzer-output=plist -o %t.plist
Gabor Horvath717b51c2015-08-21 00:18:28 +00003// RUN: FileCheck --input-file %t.plist %s
4
5#if !__has_feature(objc_generics)
6# error Compiler does not support Objective-C generics?
7#endif
8
9#if !__has_feature(objc_generics_variance)
10# error Compiler does not support co- and contr-variance?
11#endif
12
13#define nil 0
14typedef unsigned long NSUInteger;
15typedef int BOOL;
16
17@protocol NSObject
18+ (id)alloc;
19- (id)init;
20@end
21
22@protocol NSCopying
23@end
24
25__attribute__((objc_root_class))
26@interface NSObject <NSObject>
27@end
28
29@interface NSString : NSObject <NSCopying>
30@end
31
32@interface NSMutableString : NSString
33@end
34
35@interface NSNumber : NSObject <NSCopying>
36@end
37
Gabor Horvath3ef9ef22015-09-16 22:44:36 +000038@interface NSSet : NSObject <NSCopying>
39@end
40
Gabor Horvath717b51c2015-08-21 00:18:28 +000041@interface NSArray<__covariant ObjectType> : NSObject
42+ (instancetype)arrayWithObjects:(const ObjectType [])objects count:(NSUInteger)count;
43+ (instancetype)getEmpty;
44+ (NSArray<ObjectType> *)getEmpty2;
45- (BOOL)contains:(ObjectType)obj;
46- (ObjectType)getObjAtIndex:(NSUInteger)idx;
47- (ObjectType)objectAtIndexedSubscript:(NSUInteger)idx;
48@property(readonly) ObjectType firstObject;
49@end
50
51@interface MutableArray<ObjectType> : NSArray<ObjectType>
52- (void)addObject:(ObjectType)anObject;
53@end
54
55@interface LegacyMutableArray : MutableArray
56@end
57
58@interface LegacySpecialMutableArray : LegacyMutableArray
59@end
60
61@interface BuggyMutableArray<T> : MutableArray
62@end
63
64@interface BuggySpecialMutableArray<T> : BuggyMutableArray<T>
65@end
66
67@interface MyMutableStringArray : MutableArray<NSString *>
68@end
69
70@interface ExceptionalArray<ExceptionType> : MutableArray<NSString *>
71- (ExceptionType) getException;
72@end
73
74@interface UnrelatedType : NSObject<NSCopying>
75@end
76
77int getUnknown();
78NSArray *getStuff();
79NSArray *getTypedStuff() {
80 NSArray<NSNumber *> *c = getStuff();
81 return c;
82}
83
84void doStuff(NSArray<NSNumber *> *);
85void withArrString(NSArray<NSString *> *);
86void withArrMutableString(NSArray<NSMutableString *> *);
87void withMutArrString(MutableArray<NSString *> *);
88void withMutArrMutableString(MutableArray<NSMutableString *> *);
89
90void incompatibleTypesErased(NSArray *a, NSArray<NSString *> *b,
91 NSArray<NSNumber *> *c) {
92 a = b;
Gabor Horvath1cbf4352015-09-08 21:04:14 +000093 c = a; // expected-warning {{Conversion from value of type 'NSArray<NSString *> *' to incompatible type 'NSArray<NSNumber *> *'}}
94 [a contains: [[NSNumber alloc] init]]; // expected-warning {{Conversion}}
Gabor Horvath717b51c2015-08-21 00:18:28 +000095 [a contains: [[NSString alloc] init]];
Gabor Horvath1cbf4352015-09-08 21:04:14 +000096 doStuff(a); // expected-warning {{Conversion}}
Gabor Horvath717b51c2015-08-21 00:18:28 +000097}
98
99void crossProceduralErasedTypes() {
Gabor Horvath1cbf4352015-09-08 21:04:14 +0000100 NSArray<NSString *> *a = getTypedStuff(); // expected-warning {{Conversion}}
Gabor Horvath717b51c2015-08-21 00:18:28 +0000101}
102
103void incompatibleTypesErasedReverseConversion(NSArray *a,
104 NSArray<NSString *> *b) {
105 b = a;
Gabor Horvath1cbf4352015-09-08 21:04:14 +0000106 [a contains: [[NSNumber alloc] init]]; // expected-warning {{Conversion}}
Gabor Horvath717b51c2015-08-21 00:18:28 +0000107 [a contains: [[NSString alloc] init]];
Gabor Horvath1cbf4352015-09-08 21:04:14 +0000108 doStuff(a); // expected-warning {{Conversion}}
Gabor Horvath717b51c2015-08-21 00:18:28 +0000109}
110
111void idErasedIncompatibleTypesReverseConversion(id a, NSArray<NSString *> *b) {
112 b = a;
Gabor Horvath1cbf4352015-09-08 21:04:14 +0000113 [a contains: [[NSNumber alloc] init]]; // expected-warning {{Conversion}}
Gabor Horvath717b51c2015-08-21 00:18:28 +0000114 [a contains: [[NSString alloc] init]];
Gabor Horvath1cbf4352015-09-08 21:04:14 +0000115 doStuff(a); // expected-warning {{Conversion}}
Gabor Horvath717b51c2015-08-21 00:18:28 +0000116}
117
118void idErasedIncompatibleTypes(id a, NSArray<NSString *> *b,
119 NSArray<NSNumber *> *c) {
120 a = b;
Gabor Horvath1cbf4352015-09-08 21:04:14 +0000121 c = a; // expected-warning {{Conversion}}
122 [a contains: [[NSNumber alloc] init]]; // expected-warning {{Conversion}}
Gabor Horvath717b51c2015-08-21 00:18:28 +0000123 [a contains: [[NSString alloc] init]];
Gabor Horvath1cbf4352015-09-08 21:04:14 +0000124 doStuff(a); // expected-warning {{Conversion}}
Gabor Horvath717b51c2015-08-21 00:18:28 +0000125}
126
127void pathSensitiveInference(MutableArray *m, MutableArray<NSString *> *a,
128 MutableArray<NSMutableString *> *b) {
129 if (getUnknown() == 5) {
130 m = a;
131 [m contains: [[NSString alloc] init]];
132 } else {
133 m = b;
134 [m contains: [[NSMutableString alloc] init]];
135 }
Gabor Horvath1cbf4352015-09-08 21:04:14 +0000136 [m addObject: [[NSString alloc] init]]; // expected-warning {{Conversion}}
Gabor Horvath717b51c2015-08-21 00:18:28 +0000137 [m addObject: [[NSMutableString alloc] init]];
138}
139
140void verifyAPIusage(id a, MutableArray<NSString *> *b) {
141 b = a;
Gabor Horvath1cbf4352015-09-08 21:04:14 +0000142 doStuff(a); // expected-warning {{Conversion}}
Gabor Horvath717b51c2015-08-21 00:18:28 +0000143}
144
145void trustExplicitCasts(MutableArray *a,
146 MutableArray<NSMutableString *> *b) {
147 b = (MutableArray<NSMutableString *> *)a;
Gabor Horvath1cbf4352015-09-08 21:04:14 +0000148 [a addObject: [[NSString alloc] init]]; // expected-warning {{Conversion}}
Gabor Horvath717b51c2015-08-21 00:18:28 +0000149}
150
151void subtypeOfGeneric(id d, MyMutableStringArray *a,
152 MutableArray<NSString *> *b,
153 MutableArray<NSNumber *> *c) {
154 d = a;
155 b = d;
Gabor Horvath1cbf4352015-09-08 21:04:14 +0000156 c = d; // expected-warning {{Conversion}}
Gabor Horvath717b51c2015-08-21 00:18:28 +0000157}
158
159void genericSubtypeOfGeneric(id d, ExceptionalArray<NSString *> *a,
160 MutableArray<NSString *> *b,
161 MutableArray<NSNumber *> *c) {
162 d = a;
163 [d contains: [[NSString alloc] init]];
Gabor Horvath1cbf4352015-09-08 21:04:14 +0000164 [d contains: [[NSNumber alloc] init]]; // expected-warning {{Conversion}}
Gabor Horvath717b51c2015-08-21 00:18:28 +0000165 b = d;
Gabor Horvath1cbf4352015-09-08 21:04:14 +0000166 c = d; // expected-warning {{Conversion}}
Gabor Horvath717b51c2015-08-21 00:18:28 +0000167}
168
169void genericSubtypeOfGenericReverse(id d, ExceptionalArray<NSString *> *a,
170 MutableArray<NSString *> *b,
171 MutableArray<NSNumber *> *c) {
172 a = d;
173 [d contains: [[NSString alloc] init]];
Gabor Horvath1cbf4352015-09-08 21:04:14 +0000174 [d contains: [[NSNumber alloc] init]]; // expected-warning {{Conversion}}
Gabor Horvath717b51c2015-08-21 00:18:28 +0000175 b = d;
Gabor Horvath1cbf4352015-09-08 21:04:14 +0000176 c = d; // expected-warning {{Conversion}}
Gabor Horvath717b51c2015-08-21 00:18:28 +0000177}
178
179void inferenceFromAPI(id a) {
180 // Here the type parameter is invariant. There should be a warning every time
181 // when the type parameter changes during the conversions.
182 withMutArrString(a);
Gabor Horvath1cbf4352015-09-08 21:04:14 +0000183 withMutArrMutableString(a); // expected-warning {{Conversion}}
Gabor Horvath717b51c2015-08-21 00:18:28 +0000184}
185
186void inferenceFromAPI2(id a) {
187 withMutArrMutableString(a);
Gabor Horvath1cbf4352015-09-08 21:04:14 +0000188 withMutArrString(a); // expected-warning {{Conversion}}
Gabor Horvath717b51c2015-08-21 00:18:28 +0000189}
190
191void inferenceFromAPIWithLegacyTypes(LegacyMutableArray *a) {
192 withMutArrMutableString(a);
Gabor Horvath1cbf4352015-09-08 21:04:14 +0000193 withMutArrString(a); // expected-warning {{Conversion}}
Gabor Horvath717b51c2015-08-21 00:18:28 +0000194}
195
196void inferenceFromAPIWithLegacyTypes2(LegacySpecialMutableArray *a) {
197 withMutArrString(a);
Gabor Horvath1cbf4352015-09-08 21:04:14 +0000198 withMutArrMutableString(a); // expected-warning {{Conversion}}
199}
200
201void inferenceFromAPIWithLegacyTypes3(__kindof NSArray<NSString *> *a) {
202 LegacyMutableArray *b = a;
203 withMutArrString(b);
204 withMutArrMutableString(b); // expected-warning {{Conversion}}
Gabor Horvath717b51c2015-08-21 00:18:28 +0000205}
206
207void inferenceFromAPIWithBuggyTypes(BuggyMutableArray<NSMutableString *> *a) {
208 withMutArrString(a);
Gabor Horvath1cbf4352015-09-08 21:04:14 +0000209 withMutArrMutableString(a); // expected-warning {{Conversion}}
Gabor Horvath717b51c2015-08-21 00:18:28 +0000210}
211
212void InferenceFromAPIWithBuggyTypes2(BuggySpecialMutableArray<NSMutableString *> *a) {
213 withMutArrMutableString(a);
Gabor Horvath1cbf4352015-09-08 21:04:14 +0000214 withMutArrString(a); // expected-warning {{Conversion}}
215}
216
217void InferenceFromAPIWithBuggyTypes3(MutableArray<NSMutableString *> *a) {
218 id b = a;
219 withMutArrMutableString((BuggyMutableArray<NSMutableString *> *)b);
220 withMutArrString(b); // expected-warning {{Conversion}}
221}
222
223void InferenceFromAPIWithBuggyTypes4(__kindof NSArray<NSString *> *a) {
224 BuggyMutableArray<NSMutableString *> *b = a;
225 withMutArrString(b);
226 withMutArrMutableString(b); // expected-warning {{Conversion}}
Gabor Horvath717b51c2015-08-21 00:18:28 +0000227}
228
229NSArray<NSString *> *getStrings();
230void enforceDynamicRulesInsteadOfStatic(NSArray<NSNumber *> *a) {
231 NSArray *b = a;
232 // Valid uses of NSArray of NSNumbers.
233 b = getStrings();
234 // Valid uses of NSArray of NSStrings.
235}
236
237void workWithProperties(NSArray<NSNumber *> *a) {
238 NSArray *b = a;
Gabor Horvathdce40c52015-09-18 21:15:37 +0000239 NSString *str = [b getObjAtIndex: 0]; // expected-warning {{Object has a dynamic type 'NSNumber *' which is incompatible with static type 'NSString *'}}
Gabor Horvath717b51c2015-08-21 00:18:28 +0000240 NSNumber *num = [b getObjAtIndex: 0];
Gabor Horvathdce40c52015-09-18 21:15:37 +0000241 str = [b firstObject]; // expected-warning {{Object has a dynamic type 'NSNumber *' which is incompatible with static type 'NSString *'}}
Gabor Horvath717b51c2015-08-21 00:18:28 +0000242 num = [b firstObject];
Gabor Horvathdce40c52015-09-18 21:15:37 +0000243 str = b.firstObject; // expected-warning {{Object has a dynamic type 'NSNumber *' which is incompatible with static type 'NSString *'}}
Gabor Horvath717b51c2015-08-21 00:18:28 +0000244 num = b.firstObject;
Gabor Horvathdce40c52015-09-18 21:15:37 +0000245 str = b[0]; // expected-warning {{Object has a dynamic type 'NSNumber *' which is incompatible with static type 'NSString *'}}
Gabor Horvath717b51c2015-08-21 00:18:28 +0000246 num = b[0];
247}
248
249void findMethodDeclInTrackedType(id m, NSArray<NSMutableString *> *a,
250 MutableArray<NSMutableString *> *b) {
251 a = b;
252 if (getUnknown() == 5) {
253 m = a;
Gabor Horvath1cbf4352015-09-08 21:04:14 +0000254 [m addObject: [[NSString alloc] init]]; // expected-warning {{Conversion}}
Gabor Horvath717b51c2015-08-21 00:18:28 +0000255 } else {
256 m = b;
257 [m addObject: [[NSMutableString alloc] init]];
258 }
259}
260
261void findMethodDeclInTrackedType2(__kindof NSArray<NSString *> *a,
262 MutableArray<NSMutableString *> *b) {
263 a = b;
264 if (getUnknown() == 5) {
Gabor Horvath1cbf4352015-09-08 21:04:14 +0000265 [a addObject: [[NSString alloc] init]]; // expected-warning {{Conversion}}
Gabor Horvath717b51c2015-08-21 00:18:28 +0000266 } else {
267 [a addObject: [[NSMutableString alloc] init]];
268 }
269}
270
271void testUnannotatedLiterals() {
272 // ObjCArrayLiterals are not specialized in the AST.
273 NSArray *arr = @[@"A", @"B"];
274 [arr contains: [[NSNumber alloc] init]];
275}
276
277void testAnnotatedLiterals() {
278 NSArray<NSString *> *arr = @[@"A", @"B"];
279 NSArray *arr2 = arr;
Gabor Horvath1cbf4352015-09-08 21:04:14 +0000280 [arr2 contains: [[NSNumber alloc] init]]; // expected-warning {{Conversion}}
Gabor Horvath717b51c2015-08-21 00:18:28 +0000281}
282
283void nonExistentMethodDoesNotCrash(id a, MutableArray<NSMutableString *> *b) {
284 a = b;
285 [a nonExistentMethod];
286}
287
288void trackedClassVariables() {
289 Class c = [NSArray<NSString *> class];
Gabor Horvath1cbf4352015-09-08 21:04:14 +0000290 NSArray<NSNumber *> *a = [c getEmpty]; // expected-warning {{Conversion}}
291 a = [c getEmpty2]; // expected-warning {{Conversion}}
Gabor Horvath717b51c2015-08-21 00:18:28 +0000292}
293
294void nestedCollections(NSArray<NSArray<NSNumber *> *> *mat, NSArray<NSString *> *row) {
295 id temp = row;
Gabor Horvath1cbf4352015-09-08 21:04:14 +0000296 [mat contains: temp]; // expected-warning {{Conversion}}
Gabor Horvath717b51c2015-08-21 00:18:28 +0000297}
298
299void testMistmatchedTypeCast(MutableArray<NSMutableString *> *a) {
300 MutableArray *b = (MutableArray<NSNumber *> *)a;
301 [b addObject: [[NSNumber alloc] init]];
302 id c = (UnrelatedType *)a;
303 [c addObject: [[NSNumber alloc] init]];
304 [c addObject: [[NSString alloc] init]];
305}
306
Gabor Horvath3ef9ef22015-09-16 22:44:36 +0000307void returnCollectionToIdVariable(NSArray<NSArray<NSString *> *> *arr) {
308 NSArray *erased = arr;
309 id a = [erased firstObject];
310 NSArray<NSNumber *> *res = a; // expected-warning {{Conversion}}
311}
312
313void eraseSpecialization(NSArray<NSArray<NSString *> *> *arr) {
314 NSArray *erased = arr;
315 NSArray* a = [erased firstObject];
316 NSArray<NSNumber *> *res = a; // expected-warning {{Conversion}}
317}
318
319void returnToUnrelatedType(NSArray<NSArray<NSString *> *> *arr) {
320 NSArray *erased = arr;
Gabor Horvathdce40c52015-09-18 21:15:37 +0000321 NSSet* a = [erased firstObject]; // expected-warning {{Object has a dynamic type 'NSArray<NSString *> *' which is incompatible with static type 'NSSet *'}}
Gabor Horvath3ef9ef22015-09-16 22:44:36 +0000322 (void)a;
323}
324
325void returnToIdVariable(NSArray<NSString *> *arr) {
326 NSArray *erased = arr;
327 id a = [erased firstObject];
Gabor Horvathdce40c52015-09-18 21:15:37 +0000328 NSNumber *res = a; // expected-warning {{Object has a dynamic type 'NSString *' which is incompatible with static type 'NSNumber *'}}
Gabor Horvath3ef9ef22015-09-16 22:44:36 +0000329}
330
Gabor Horvath717b51c2015-08-21 00:18:28 +0000331// CHECK: <array>
332// CHECK: <dict>
333// CHECK: <key>path</key>
334// CHECK: <array>
335// CHECK: <dict>
336// CHECK: <key>kind</key><string>event</string>
337// CHECK: <key>location</key>
338// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +0000339// CHECK: <key>line</key><integer>92</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +0000340// CHECK: <key>col</key><integer>7</integer>
341// CHECK: <key>file</key><integer>0</integer>
342// CHECK: </dict>
343// CHECK: <key>ranges</key>
344// CHECK: <array>
345// CHECK: <array>
346// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +0000347// CHECK: <key>line</key><integer>92</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +0000348// CHECK: <key>col</key><integer>7</integer>
349// CHECK: <key>file</key><integer>0</integer>
350// CHECK: </dict>
351// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +0000352// CHECK: <key>line</key><integer>92</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +0000353// CHECK: <key>col</key><integer>7</integer>
354// CHECK: <key>file</key><integer>0</integer>
355// CHECK: </dict>
356// CHECK: </array>
357// CHECK: </array>
358// CHECK: <key>depth</key><integer>0</integer>
359// CHECK: <key>extended_message</key>
Gabor Horvath03dc4732015-08-25 16:38:05 +0000360// CHECK: <string>Type &apos;NSArray&lt;NSString *&gt; *&apos; is inferred from implicit cast (from &apos;NSArray&lt;NSString *&gt; *&apos; to &apos;NSArray *&apos;)</string>
Gabor Horvath717b51c2015-08-21 00:18:28 +0000361// CHECK: <key>message</key>
Gabor Horvath03dc4732015-08-25 16:38:05 +0000362// CHECK: <string>Type &apos;NSArray&lt;NSString *&gt; *&apos; is inferred from implicit cast (from &apos;NSArray&lt;NSString *&gt; *&apos; to &apos;NSArray *&apos;)</string>
Gabor Horvath717b51c2015-08-21 00:18:28 +0000363// CHECK: </dict>
364// CHECK: <dict>
365// CHECK: <key>kind</key><string>control</string>
366// CHECK: <key>edges</key>
367// CHECK: <array>
368// CHECK: <dict>
369// CHECK: <key>start</key>
370// CHECK: <array>
371// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +0000372// CHECK: <key>line</key><integer>92</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +0000373// CHECK: <key>col</key><integer>3</integer>
374// CHECK: <key>file</key><integer>0</integer>
375// CHECK: </dict>
376// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +0000377// CHECK: <key>line</key><integer>92</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +0000378// CHECK: <key>col</key><integer>3</integer>
379// CHECK: <key>file</key><integer>0</integer>
380// CHECK: </dict>
381// CHECK: </array>
382// CHECK: <key>end</key>
383// CHECK: <array>
384// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +0000385// CHECK: <key>line</key><integer>93</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +0000386// CHECK: <key>col</key><integer>3</integer>
387// CHECK: <key>file</key><integer>0</integer>
388// CHECK: </dict>
389// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +0000390// CHECK: <key>line</key><integer>93</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +0000391// CHECK: <key>col</key><integer>3</integer>
392// CHECK: <key>file</key><integer>0</integer>
393// CHECK: </dict>
394// CHECK: </array>
395// CHECK: </dict>
396// CHECK: </array>
397// CHECK: </dict>
398// CHECK: <dict>
399// CHECK: <key>kind</key><string>control</string>
400// CHECK: <key>edges</key>
401// CHECK: <array>
402// CHECK: <dict>
403// CHECK: <key>start</key>
404// CHECK: <array>
405// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +0000406// CHECK: <key>line</key><integer>93</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +0000407// CHECK: <key>col</key><integer>3</integer>
408// CHECK: <key>file</key><integer>0</integer>
409// CHECK: </dict>
410// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +0000411// CHECK: <key>line</key><integer>93</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +0000412// CHECK: <key>col</key><integer>3</integer>
413// CHECK: <key>file</key><integer>0</integer>
414// CHECK: </dict>
415// CHECK: </array>
416// CHECK: <key>end</key>
417// CHECK: <array>
418// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +0000419// CHECK: <key>line</key><integer>93</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +0000420// CHECK: <key>col</key><integer>7</integer>
421// CHECK: <key>file</key><integer>0</integer>
422// CHECK: </dict>
423// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +0000424// CHECK: <key>line</key><integer>93</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +0000425// CHECK: <key>col</key><integer>7</integer>
426// CHECK: <key>file</key><integer>0</integer>
427// CHECK: </dict>
428// CHECK: </array>
429// CHECK: </dict>
430// CHECK: </array>
431// CHECK: </dict>
432// CHECK: <dict>
433// CHECK: <key>kind</key><string>event</string>
434// CHECK: <key>location</key>
435// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +0000436// CHECK: <key>line</key><integer>93</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +0000437// CHECK: <key>col</key><integer>7</integer>
438// CHECK: <key>file</key><integer>0</integer>
439// CHECK: </dict>
440// CHECK: <key>ranges</key>
441// CHECK: <array>
442// CHECK: <array>
443// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +0000444// CHECK: <key>line</key><integer>93</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +0000445// CHECK: <key>col</key><integer>7</integer>
446// CHECK: <key>file</key><integer>0</integer>
447// CHECK: </dict>
448// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +0000449// CHECK: <key>line</key><integer>93</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +0000450// CHECK: <key>col</key><integer>7</integer>
451// CHECK: <key>file</key><integer>0</integer>
452// CHECK: </dict>
453// CHECK: </array>
454// CHECK: </array>
455// CHECK: <key>depth</key><integer>0</integer>
456// CHECK: <key>extended_message</key>
Gabor Horvath1cbf4352015-09-08 21:04:14 +0000457// CHECK: <string>Conversion from value of type &apos;NSArray&lt;NSString *&gt; *&apos; to incompatible type &apos;NSArray&lt;NSNumber *&gt; *&apos;</string>
Gabor Horvath717b51c2015-08-21 00:18:28 +0000458// CHECK: <key>message</key>
Gabor Horvath1cbf4352015-09-08 21:04:14 +0000459// CHECK: <string>Conversion from value of type &apos;NSArray&lt;NSString *&gt; *&apos; to incompatible type &apos;NSArray&lt;NSNumber *&gt; *&apos;</string>
Gabor Horvath717b51c2015-08-21 00:18:28 +0000460// CHECK: </dict>
461// CHECK: </array>
Gabor Horvath1cbf4352015-09-08 21:04:14 +0000462// CHECK: <key>description</key><string>Conversion from value of type &apos;NSArray&lt;NSString *&gt; *&apos; to incompatible type &apos;NSArray&lt;NSNumber *&gt; *&apos;</string>
Gabor Horvath717b51c2015-08-21 00:18:28 +0000463// CHECK: <key>category</key><string>Core Foundation/Objective-C</string>
464// CHECK: <key>type</key><string>Generics</string>
Gabor Horvathc0c7a5d2015-09-13 23:02:24 +0000465// CHECK: <key>check_name</key><string>core.DynamicTypePropagation</string>
Gabor Horvath717b51c2015-08-21 00:18:28 +0000466// CHECK: <key>issue_context_kind</key><string>function</string>
467// CHECK: <key>issue_context</key><string>incompatibleTypesErased</string>
468// CHECK: <key>issue_hash</key><string>2</string>
469// CHECK: <key>location</key>
470// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +0000471// CHECK: <key>line</key><integer>93</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +0000472// CHECK: <key>col</key><integer>7</integer>
473// CHECK: <key>file</key><integer>0</integer>
474// CHECK: </dict>
475// CHECK: </dict>
476// CHECK: <dict>
477// CHECK: <key>path</key>
478// CHECK: <array>
479// CHECK: <dict>
480// CHECK: <key>kind</key><string>event</string>
481// CHECK: <key>location</key>
482// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +0000483// CHECK: <key>line</key><integer>92</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +0000484// CHECK: <key>col</key><integer>7</integer>
485// CHECK: <key>file</key><integer>0</integer>
486// CHECK: </dict>
487// CHECK: <key>ranges</key>
488// CHECK: <array>
489// CHECK: <array>
490// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +0000491// CHECK: <key>line</key><integer>92</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +0000492// CHECK: <key>col</key><integer>7</integer>
493// CHECK: <key>file</key><integer>0</integer>
494// CHECK: </dict>
495// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +0000496// CHECK: <key>line</key><integer>92</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +0000497// CHECK: <key>col</key><integer>7</integer>
498// CHECK: <key>file</key><integer>0</integer>
499// CHECK: </dict>
500// CHECK: </array>
501// CHECK: </array>
502// CHECK: <key>depth</key><integer>0</integer>
503// CHECK: <key>extended_message</key>
Gabor Horvath03dc4732015-08-25 16:38:05 +0000504// CHECK: <string>Type &apos;NSArray&lt;NSString *&gt; *&apos; is inferred from implicit cast (from &apos;NSArray&lt;NSString *&gt; *&apos; to &apos;NSArray *&apos;)</string>
Gabor Horvath717b51c2015-08-21 00:18:28 +0000505// CHECK: <key>message</key>
Gabor Horvath03dc4732015-08-25 16:38:05 +0000506// CHECK: <string>Type &apos;NSArray&lt;NSString *&gt; *&apos; is inferred from implicit cast (from &apos;NSArray&lt;NSString *&gt; *&apos; to &apos;NSArray *&apos;)</string>
Gabor Horvath717b51c2015-08-21 00:18:28 +0000507// CHECK: </dict>
508// CHECK: <dict>
509// CHECK: <key>kind</key><string>control</string>
510// CHECK: <key>edges</key>
511// CHECK: <array>
512// CHECK: <dict>
513// CHECK: <key>start</key>
514// CHECK: <array>
515// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +0000516// CHECK: <key>line</key><integer>92</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +0000517// CHECK: <key>col</key><integer>3</integer>
518// CHECK: <key>file</key><integer>0</integer>
519// CHECK: </dict>
520// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +0000521// CHECK: <key>line</key><integer>92</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +0000522// CHECK: <key>col</key><integer>3</integer>
523// CHECK: <key>file</key><integer>0</integer>
524// CHECK: </dict>
525// CHECK: </array>
526// CHECK: <key>end</key>
527// CHECK: <array>
528// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +0000529// CHECK: <key>line</key><integer>94</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +0000530// CHECK: <key>col</key><integer>3</integer>
531// CHECK: <key>file</key><integer>0</integer>
532// CHECK: </dict>
533// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +0000534// CHECK: <key>line</key><integer>94</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +0000535// CHECK: <key>col</key><integer>3</integer>
536// CHECK: <key>file</key><integer>0</integer>
537// CHECK: </dict>
538// CHECK: </array>
539// CHECK: </dict>
540// CHECK: </array>
541// CHECK: </dict>
542// CHECK: <dict>
543// CHECK: <key>kind</key><string>event</string>
544// CHECK: <key>location</key>
545// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +0000546// CHECK: <key>line</key><integer>94</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +0000547// CHECK: <key>col</key><integer>3</integer>
548// CHECK: <key>file</key><integer>0</integer>
549// CHECK: </dict>
550// CHECK: <key>ranges</key>
551// CHECK: <array>
552// CHECK: <array>
553// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +0000554// CHECK: <key>line</key><integer>94</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +0000555// CHECK: <key>col</key><integer>16</integer>
556// CHECK: <key>file</key><integer>0</integer>
557// CHECK: </dict>
558// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +0000559// CHECK: <key>line</key><integer>94</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +0000560// CHECK: <key>col</key><integer>38</integer>
561// CHECK: <key>file</key><integer>0</integer>
562// CHECK: </dict>
563// CHECK: </array>
564// CHECK: </array>
565// CHECK: <key>depth</key><integer>0</integer>
566// CHECK: <key>extended_message</key>
Gabor Horvath1cbf4352015-09-08 21:04:14 +0000567// CHECK: <string>Conversion from value of type &apos;NSNumber *&apos; to incompatible type &apos;NSString *&apos;</string>
Gabor Horvath717b51c2015-08-21 00:18:28 +0000568// CHECK: <key>message</key>
Gabor Horvath1cbf4352015-09-08 21:04:14 +0000569// CHECK: <string>Conversion from value of type &apos;NSNumber *&apos; to incompatible type &apos;NSString *&apos;</string>
Gabor Horvath717b51c2015-08-21 00:18:28 +0000570// CHECK: </dict>
571// CHECK: </array>
Gabor Horvath1cbf4352015-09-08 21:04:14 +0000572// CHECK: <key>description</key><string>Conversion from value of type &apos;NSNumber *&apos; to incompatible type &apos;NSString *&apos;</string>
Gabor Horvath717b51c2015-08-21 00:18:28 +0000573// CHECK: <key>category</key><string>Core Foundation/Objective-C</string>
574// CHECK: <key>type</key><string>Generics</string>
Gabor Horvathc0c7a5d2015-09-13 23:02:24 +0000575// CHECK: <key>check_name</key><string>core.DynamicTypePropagation</string>
Gabor Horvath717b51c2015-08-21 00:18:28 +0000576// CHECK: <key>issue_context_kind</key><string>function</string>
577// CHECK: <key>issue_context</key><string>incompatibleTypesErased</string>
578// CHECK: <key>issue_hash</key><string>3</string>
579// CHECK: <key>location</key>
580// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +0000581// CHECK: <key>line</key><integer>94</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +0000582// CHECK: <key>col</key><integer>3</integer>
583// CHECK: <key>file</key><integer>0</integer>
584// CHECK: </dict>
585// CHECK: </dict>
586// CHECK: <dict>
587// CHECK: <key>path</key>
588// CHECK: <array>
589// CHECK: <dict>
590// CHECK: <key>kind</key><string>event</string>
591// CHECK: <key>location</key>
592// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +0000593// CHECK: <key>line</key><integer>92</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +0000594// CHECK: <key>col</key><integer>7</integer>
595// CHECK: <key>file</key><integer>0</integer>
596// CHECK: </dict>
597// CHECK: <key>ranges</key>
598// CHECK: <array>
599// CHECK: <array>
600// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +0000601// CHECK: <key>line</key><integer>92</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +0000602// CHECK: <key>col</key><integer>7</integer>
603// CHECK: <key>file</key><integer>0</integer>
604// CHECK: </dict>
605// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +0000606// CHECK: <key>line</key><integer>92</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +0000607// CHECK: <key>col</key><integer>7</integer>
608// CHECK: <key>file</key><integer>0</integer>
609// CHECK: </dict>
610// CHECK: </array>
611// CHECK: </array>
612// CHECK: <key>depth</key><integer>0</integer>
613// CHECK: <key>extended_message</key>
Gabor Horvath03dc4732015-08-25 16:38:05 +0000614// CHECK: <string>Type &apos;NSArray&lt;NSString *&gt; *&apos; is inferred from implicit cast (from &apos;NSArray&lt;NSString *&gt; *&apos; to &apos;NSArray *&apos;)</string>
Gabor Horvath717b51c2015-08-21 00:18:28 +0000615// CHECK: <key>message</key>
Gabor Horvath03dc4732015-08-25 16:38:05 +0000616// CHECK: <string>Type &apos;NSArray&lt;NSString *&gt; *&apos; is inferred from implicit cast (from &apos;NSArray&lt;NSString *&gt; *&apos; to &apos;NSArray *&apos;)</string>
Gabor Horvath717b51c2015-08-21 00:18:28 +0000617// CHECK: </dict>
618// CHECK: <dict>
619// CHECK: <key>kind</key><string>control</string>
620// CHECK: <key>edges</key>
621// CHECK: <array>
622// CHECK: <dict>
623// CHECK: <key>start</key>
624// CHECK: <array>
625// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +0000626// CHECK: <key>line</key><integer>92</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +0000627// CHECK: <key>col</key><integer>3</integer>
628// CHECK: <key>file</key><integer>0</integer>
629// CHECK: </dict>
630// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +0000631// CHECK: <key>line</key><integer>92</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +0000632// CHECK: <key>col</key><integer>3</integer>
633// CHECK: <key>file</key><integer>0</integer>
634// CHECK: </dict>
635// CHECK: </array>
636// CHECK: <key>end</key>
637// CHECK: <array>
638// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +0000639// CHECK: <key>line</key><integer>96</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +0000640// CHECK: <key>col</key><integer>3</integer>
641// CHECK: <key>file</key><integer>0</integer>
642// CHECK: </dict>
643// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +0000644// CHECK: <key>line</key><integer>96</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +0000645// CHECK: <key>col</key><integer>9</integer>
646// CHECK: <key>file</key><integer>0</integer>
647// CHECK: </dict>
648// CHECK: </array>
649// CHECK: </dict>
650// CHECK: </array>
651// CHECK: </dict>
652// CHECK: <dict>
653// CHECK: <key>kind</key><string>control</string>
654// CHECK: <key>edges</key>
655// CHECK: <array>
656// CHECK: <dict>
657// CHECK: <key>start</key>
658// CHECK: <array>
659// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +0000660// CHECK: <key>line</key><integer>96</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +0000661// CHECK: <key>col</key><integer>3</integer>
662// CHECK: <key>file</key><integer>0</integer>
663// CHECK: </dict>
664// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +0000665// CHECK: <key>line</key><integer>96</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +0000666// CHECK: <key>col</key><integer>9</integer>
667// CHECK: <key>file</key><integer>0</integer>
668// CHECK: </dict>
669// CHECK: </array>
670// CHECK: <key>end</key>
671// CHECK: <array>
672// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +0000673// CHECK: <key>line</key><integer>96</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +0000674// CHECK: <key>col</key><integer>11</integer>
675// CHECK: <key>file</key><integer>0</integer>
676// CHECK: </dict>
677// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +0000678// CHECK: <key>line</key><integer>96</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +0000679// CHECK: <key>col</key><integer>11</integer>
680// CHECK: <key>file</key><integer>0</integer>
681// CHECK: </dict>
682// CHECK: </array>
683// CHECK: </dict>
684// CHECK: </array>
685// CHECK: </dict>
686// CHECK: <dict>
687// CHECK: <key>kind</key><string>event</string>
688// CHECK: <key>location</key>
689// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +0000690// CHECK: <key>line</key><integer>96</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +0000691// CHECK: <key>col</key><integer>11</integer>
692// CHECK: <key>file</key><integer>0</integer>
693// CHECK: </dict>
694// CHECK: <key>ranges</key>
695// CHECK: <array>
696// CHECK: <array>
697// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +0000698// CHECK: <key>line</key><integer>96</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +0000699// CHECK: <key>col</key><integer>11</integer>
700// CHECK: <key>file</key><integer>0</integer>
701// CHECK: </dict>
702// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +0000703// CHECK: <key>line</key><integer>96</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +0000704// CHECK: <key>col</key><integer>11</integer>
705// CHECK: <key>file</key><integer>0</integer>
706// CHECK: </dict>
707// CHECK: </array>
708// CHECK: </array>
709// CHECK: <key>depth</key><integer>0</integer>
710// CHECK: <key>extended_message</key>
Gabor Horvath1cbf4352015-09-08 21:04:14 +0000711// CHECK: <string>Conversion from value of type &apos;NSArray&lt;NSString *&gt; *&apos; to incompatible type &apos;NSArray&lt;NSNumber *&gt; *&apos;</string>
Gabor Horvath717b51c2015-08-21 00:18:28 +0000712// CHECK: <key>message</key>
Gabor Horvath1cbf4352015-09-08 21:04:14 +0000713// CHECK: <string>Conversion from value of type &apos;NSArray&lt;NSString *&gt; *&apos; to incompatible type &apos;NSArray&lt;NSNumber *&gt; *&apos;</string>
Gabor Horvath717b51c2015-08-21 00:18:28 +0000714// CHECK: </dict>
715// CHECK: </array>
Gabor Horvath1cbf4352015-09-08 21:04:14 +0000716// CHECK: <key>description</key><string>Conversion from value of type &apos;NSArray&lt;NSString *&gt; *&apos; to incompatible type &apos;NSArray&lt;NSNumber *&gt; *&apos;</string>
Gabor Horvath717b51c2015-08-21 00:18:28 +0000717// CHECK: <key>category</key><string>Core Foundation/Objective-C</string>
718// CHECK: <key>type</key><string>Generics</string>
Gabor Horvathc0c7a5d2015-09-13 23:02:24 +0000719// CHECK: <key>check_name</key><string>core.DynamicTypePropagation</string>
Gabor Horvath717b51c2015-08-21 00:18:28 +0000720// CHECK: <key>issue_context_kind</key><string>function</string>
721// CHECK: <key>issue_context</key><string>incompatibleTypesErased</string>
722// CHECK: <key>issue_hash</key><string>5</string>
723// CHECK: <key>location</key>
724// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +0000725// CHECK: <key>line</key><integer>96</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +0000726// CHECK: <key>col</key><integer>11</integer>
727// CHECK: <key>file</key><integer>0</integer>
728// CHECK: </dict>
729// CHECK: </dict>
730// CHECK: <dict>
731// CHECK: <key>path</key>
732// CHECK: <array>
733// CHECK: <dict>
734// CHECK: <key>kind</key><string>control</string>
735// CHECK: <key>edges</key>
736// CHECK: <array>
737// CHECK: <dict>
738// CHECK: <key>start</key>
739// CHECK: <array>
740// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +0000741// CHECK: <key>line</key><integer>100</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +0000742// CHECK: <key>col</key><integer>3</integer>
743// CHECK: <key>file</key><integer>0</integer>
744// CHECK: </dict>
745// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +0000746// CHECK: <key>line</key><integer>100</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +0000747// CHECK: <key>col</key><integer>9</integer>
748// CHECK: <key>file</key><integer>0</integer>
749// CHECK: </dict>
750// CHECK: </array>
751// CHECK: <key>end</key>
752// CHECK: <array>
753// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +0000754// CHECK: <key>line</key><integer>100</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +0000755// CHECK: <key>col</key><integer>28</integer>
756// CHECK: <key>file</key><integer>0</integer>
757// CHECK: </dict>
758// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +0000759// CHECK: <key>line</key><integer>100</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +0000760// CHECK: <key>col</key><integer>40</integer>
761// CHECK: <key>file</key><integer>0</integer>
762// CHECK: </dict>
763// CHECK: </array>
764// CHECK: </dict>
765// CHECK: </array>
766// CHECK: </dict>
767// CHECK: <dict>
768// CHECK: <key>kind</key><string>event</string>
769// CHECK: <key>location</key>
770// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +0000771// CHECK: <key>line</key><integer>100</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +0000772// CHECK: <key>col</key><integer>28</integer>
773// CHECK: <key>file</key><integer>0</integer>
774// CHECK: </dict>
775// CHECK: <key>ranges</key>
776// CHECK: <array>
777// CHECK: <array>
778// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +0000779// CHECK: <key>line</key><integer>100</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +0000780// CHECK: <key>col</key><integer>28</integer>
781// CHECK: <key>file</key><integer>0</integer>
782// CHECK: </dict>
783// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +0000784// CHECK: <key>line</key><integer>100</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +0000785// CHECK: <key>col</key><integer>42</integer>
786// CHECK: <key>file</key><integer>0</integer>
787// CHECK: </dict>
788// CHECK: </array>
789// CHECK: </array>
790// CHECK: <key>depth</key><integer>0</integer>
791// CHECK: <key>extended_message</key>
792// CHECK: <string>Calling &apos;getTypedStuff&apos;</string>
793// CHECK: <key>message</key>
794// CHECK: <string>Calling &apos;getTypedStuff&apos;</string>
795// CHECK: </dict>
796// CHECK: <dict>
797// CHECK: <key>kind</key><string>event</string>
798// CHECK: <key>location</key>
799// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +0000800// CHECK: <key>line</key><integer>79</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +0000801// CHECK: <key>col</key><integer>1</integer>
802// CHECK: <key>file</key><integer>0</integer>
803// CHECK: </dict>
804// CHECK: <key>depth</key><integer>1</integer>
805// CHECK: <key>extended_message</key>
806// CHECK: <string>Entered call from &apos;crossProceduralErasedTypes&apos;</string>
807// CHECK: <key>message</key>
808// CHECK: <string>Entered call from &apos;crossProceduralErasedTypes&apos;</string>
809// CHECK: </dict>
810// CHECK: <dict>
811// CHECK: <key>kind</key><string>control</string>
812// CHECK: <key>edges</key>
813// CHECK: <array>
814// CHECK: <dict>
815// CHECK: <key>start</key>
816// CHECK: <array>
817// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +0000818// CHECK: <key>line</key><integer>79</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +0000819// CHECK: <key>col</key><integer>1</integer>
820// CHECK: <key>file</key><integer>0</integer>
821// CHECK: </dict>
822// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +0000823// CHECK: <key>line</key><integer>79</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +0000824// CHECK: <key>col</key><integer>7</integer>
825// CHECK: <key>file</key><integer>0</integer>
826// CHECK: </dict>
827// CHECK: </array>
828// CHECK: <key>end</key>
829// CHECK: <array>
830// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +0000831// CHECK: <key>line</key><integer>80</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +0000832// CHECK: <key>col</key><integer>3</integer>
833// CHECK: <key>file</key><integer>0</integer>
834// CHECK: </dict>
835// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +0000836// CHECK: <key>line</key><integer>80</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +0000837// CHECK: <key>col</key><integer>9</integer>
838// CHECK: <key>file</key><integer>0</integer>
839// CHECK: </dict>
840// CHECK: </array>
841// CHECK: </dict>
842// CHECK: </array>
843// CHECK: </dict>
844// CHECK: <dict>
845// CHECK: <key>kind</key><string>event</string>
846// CHECK: <key>location</key>
847// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +0000848// CHECK: <key>line</key><integer>80</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +0000849// CHECK: <key>col</key><integer>28</integer>
850// CHECK: <key>file</key><integer>0</integer>
851// CHECK: </dict>
852// CHECK: <key>ranges</key>
853// CHECK: <array>
854// CHECK: <array>
855// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +0000856// CHECK: <key>line</key><integer>80</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +0000857// CHECK: <key>col</key><integer>28</integer>
858// CHECK: <key>file</key><integer>0</integer>
859// CHECK: </dict>
860// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +0000861// CHECK: <key>line</key><integer>80</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +0000862// CHECK: <key>col</key><integer>37</integer>
863// CHECK: <key>file</key><integer>0</integer>
864// CHECK: </dict>
865// CHECK: </array>
866// CHECK: </array>
867// CHECK: <key>depth</key><integer>1</integer>
868// CHECK: <key>extended_message</key>
Gabor Horvath03dc4732015-08-25 16:38:05 +0000869// CHECK: <string>Type &apos;NSArray&lt;NSNumber *&gt; *&apos; is inferred from implicit cast (from &apos;NSArray *&apos; to &apos;NSArray&lt;NSNumber *&gt; *&apos;)</string>
Gabor Horvath717b51c2015-08-21 00:18:28 +0000870// CHECK: <key>message</key>
Gabor Horvath03dc4732015-08-25 16:38:05 +0000871// CHECK: <string>Type &apos;NSArray&lt;NSNumber *&gt; *&apos; is inferred from implicit cast (from &apos;NSArray *&apos; to &apos;NSArray&lt;NSNumber *&gt; *&apos;)</string>
Gabor Horvath717b51c2015-08-21 00:18:28 +0000872// CHECK: </dict>
873// CHECK: <dict>
874// CHECK: <key>kind</key><string>control</string>
875// CHECK: <key>edges</key>
876// CHECK: <array>
877// CHECK: <dict>
878// CHECK: <key>start</key>
879// CHECK: <array>
880// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +0000881// CHECK: <key>line</key><integer>80</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +0000882// CHECK: <key>col</key><integer>3</integer>
883// CHECK: <key>file</key><integer>0</integer>
884// CHECK: </dict>
885// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +0000886// CHECK: <key>line</key><integer>80</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +0000887// CHECK: <key>col</key><integer>9</integer>
888// CHECK: <key>file</key><integer>0</integer>
889// CHECK: </dict>
890// CHECK: </array>
891// CHECK: <key>end</key>
892// CHECK: <array>
893// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +0000894// CHECK: <key>line</key><integer>81</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +0000895// CHECK: <key>col</key><integer>3</integer>
896// CHECK: <key>file</key><integer>0</integer>
897// CHECK: </dict>
898// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +0000899// CHECK: <key>line</key><integer>81</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +0000900// CHECK: <key>col</key><integer>8</integer>
901// CHECK: <key>file</key><integer>0</integer>
902// CHECK: </dict>
903// CHECK: </array>
904// CHECK: </dict>
905// CHECK: </array>
906// CHECK: </dict>
907// CHECK: <dict>
908// CHECK: <key>kind</key><string>event</string>
909// CHECK: <key>location</key>
910// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +0000911// CHECK: <key>line</key><integer>100</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +0000912// CHECK: <key>col</key><integer>28</integer>
913// CHECK: <key>file</key><integer>0</integer>
914// CHECK: </dict>
915// CHECK: <key>ranges</key>
916// CHECK: <array>
917// CHECK: <array>
918// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +0000919// CHECK: <key>line</key><integer>100</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +0000920// CHECK: <key>col</key><integer>28</integer>
921// CHECK: <key>file</key><integer>0</integer>
922// CHECK: </dict>
923// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +0000924// CHECK: <key>line</key><integer>100</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +0000925// CHECK: <key>col</key><integer>42</integer>
926// CHECK: <key>file</key><integer>0</integer>
927// CHECK: </dict>
928// CHECK: </array>
929// CHECK: </array>
930// CHECK: <key>depth</key><integer>0</integer>
931// CHECK: <key>extended_message</key>
932// CHECK: <string>Returning from &apos;getTypedStuff&apos;</string>
933// CHECK: <key>message</key>
934// CHECK: <string>Returning from &apos;getTypedStuff&apos;</string>
935// CHECK: </dict>
936// CHECK: <dict>
937// CHECK: <key>kind</key><string>event</string>
938// CHECK: <key>location</key>
939// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +0000940// CHECK: <key>line</key><integer>100</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +0000941// CHECK: <key>col</key><integer>28</integer>
942// CHECK: <key>file</key><integer>0</integer>
943// CHECK: </dict>
944// CHECK: <key>ranges</key>
945// CHECK: <array>
946// CHECK: <array>
947// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +0000948// CHECK: <key>line</key><integer>100</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +0000949// CHECK: <key>col</key><integer>28</integer>
950// CHECK: <key>file</key><integer>0</integer>
951// CHECK: </dict>
952// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +0000953// CHECK: <key>line</key><integer>100</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +0000954// CHECK: <key>col</key><integer>42</integer>
955// CHECK: <key>file</key><integer>0</integer>
956// CHECK: </dict>
957// CHECK: </array>
958// CHECK: </array>
959// CHECK: <key>depth</key><integer>0</integer>
960// CHECK: <key>extended_message</key>
Gabor Horvath1cbf4352015-09-08 21:04:14 +0000961// CHECK: <string>Conversion from value of type &apos;NSArray&lt;NSNumber *&gt; *&apos; to incompatible type &apos;NSArray&lt;NSString *&gt; *&apos;</string>
Gabor Horvath717b51c2015-08-21 00:18:28 +0000962// CHECK: <key>message</key>
Gabor Horvath1cbf4352015-09-08 21:04:14 +0000963// CHECK: <string>Conversion from value of type &apos;NSArray&lt;NSNumber *&gt; *&apos; to incompatible type &apos;NSArray&lt;NSString *&gt; *&apos;</string>
Gabor Horvath717b51c2015-08-21 00:18:28 +0000964// CHECK: </dict>
965// CHECK: </array>
Gabor Horvath1cbf4352015-09-08 21:04:14 +0000966// CHECK: <key>description</key><string>Conversion from value of type &apos;NSArray&lt;NSNumber *&gt; *&apos; to incompatible type &apos;NSArray&lt;NSString *&gt; *&apos;</string>
Gabor Horvath717b51c2015-08-21 00:18:28 +0000967// CHECK: <key>category</key><string>Core Foundation/Objective-C</string>
968// CHECK: <key>type</key><string>Generics</string>
Gabor Horvathc0c7a5d2015-09-13 23:02:24 +0000969// CHECK: <key>check_name</key><string>core.DynamicTypePropagation</string>
Gabor Horvath717b51c2015-08-21 00:18:28 +0000970// CHECK: <key>issue_context_kind</key><string>function</string>
971// CHECK: <key>issue_context</key><string>crossProceduralErasedTypes</string>
972// CHECK: <key>issue_hash</key><string>1</string>
973// CHECK: <key>location</key>
974// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +0000975// CHECK: <key>line</key><integer>100</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +0000976// CHECK: <key>col</key><integer>28</integer>
977// CHECK: <key>file</key><integer>0</integer>
978// CHECK: </dict>
979// CHECK: </dict>
980// CHECK: <dict>
981// CHECK: <key>path</key>
982// CHECK: <array>
983// CHECK: <dict>
984// CHECK: <key>kind</key><string>event</string>
985// CHECK: <key>location</key>
986// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +0000987// CHECK: <key>line</key><integer>105</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +0000988// CHECK: <key>col</key><integer>7</integer>
989// CHECK: <key>file</key><integer>0</integer>
990// CHECK: </dict>
991// CHECK: <key>ranges</key>
992// CHECK: <array>
993// CHECK: <array>
994// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +0000995// CHECK: <key>line</key><integer>105</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +0000996// CHECK: <key>col</key><integer>7</integer>
997// CHECK: <key>file</key><integer>0</integer>
998// CHECK: </dict>
999// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00001000// CHECK: <key>line</key><integer>105</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00001001// CHECK: <key>col</key><integer>7</integer>
1002// CHECK: <key>file</key><integer>0</integer>
1003// CHECK: </dict>
1004// CHECK: </array>
1005// CHECK: </array>
1006// CHECK: <key>depth</key><integer>0</integer>
1007// CHECK: <key>extended_message</key>
Gabor Horvath03dc4732015-08-25 16:38:05 +00001008// CHECK: <string>Type &apos;NSArray&lt;NSString *&gt; *&apos; is inferred from implicit cast (from &apos;NSArray *&apos; to &apos;NSArray&lt;NSString *&gt; *&apos;)</string>
Gabor Horvath717b51c2015-08-21 00:18:28 +00001009// CHECK: <key>message</key>
Gabor Horvath03dc4732015-08-25 16:38:05 +00001010// CHECK: <string>Type &apos;NSArray&lt;NSString *&gt; *&apos; is inferred from implicit cast (from &apos;NSArray *&apos; to &apos;NSArray&lt;NSString *&gt; *&apos;)</string>
Gabor Horvath717b51c2015-08-21 00:18:28 +00001011// CHECK: </dict>
1012// CHECK: <dict>
1013// CHECK: <key>kind</key><string>control</string>
1014// CHECK: <key>edges</key>
1015// CHECK: <array>
1016// CHECK: <dict>
1017// CHECK: <key>start</key>
1018// CHECK: <array>
1019// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00001020// CHECK: <key>line</key><integer>105</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00001021// CHECK: <key>col</key><integer>3</integer>
1022// CHECK: <key>file</key><integer>0</integer>
1023// CHECK: </dict>
1024// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00001025// CHECK: <key>line</key><integer>105</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00001026// CHECK: <key>col</key><integer>3</integer>
1027// CHECK: <key>file</key><integer>0</integer>
1028// CHECK: </dict>
1029// CHECK: </array>
1030// CHECK: <key>end</key>
1031// CHECK: <array>
1032// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00001033// CHECK: <key>line</key><integer>106</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00001034// CHECK: <key>col</key><integer>3</integer>
1035// CHECK: <key>file</key><integer>0</integer>
1036// CHECK: </dict>
1037// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00001038// CHECK: <key>line</key><integer>106</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00001039// CHECK: <key>col</key><integer>3</integer>
1040// CHECK: <key>file</key><integer>0</integer>
1041// CHECK: </dict>
1042// CHECK: </array>
1043// CHECK: </dict>
1044// CHECK: </array>
1045// CHECK: </dict>
1046// CHECK: <dict>
1047// CHECK: <key>kind</key><string>event</string>
1048// CHECK: <key>location</key>
1049// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00001050// CHECK: <key>line</key><integer>106</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00001051// CHECK: <key>col</key><integer>3</integer>
1052// CHECK: <key>file</key><integer>0</integer>
1053// CHECK: </dict>
1054// CHECK: <key>ranges</key>
1055// CHECK: <array>
1056// CHECK: <array>
1057// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00001058// CHECK: <key>line</key><integer>106</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00001059// CHECK: <key>col</key><integer>16</integer>
1060// CHECK: <key>file</key><integer>0</integer>
1061// CHECK: </dict>
1062// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00001063// CHECK: <key>line</key><integer>106</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00001064// CHECK: <key>col</key><integer>38</integer>
1065// CHECK: <key>file</key><integer>0</integer>
1066// CHECK: </dict>
1067// CHECK: </array>
1068// CHECK: </array>
1069// CHECK: <key>depth</key><integer>0</integer>
1070// CHECK: <key>extended_message</key>
Gabor Horvath1cbf4352015-09-08 21:04:14 +00001071// CHECK: <string>Conversion from value of type &apos;NSNumber *&apos; to incompatible type &apos;NSString *&apos;</string>
Gabor Horvath717b51c2015-08-21 00:18:28 +00001072// CHECK: <key>message</key>
Gabor Horvath1cbf4352015-09-08 21:04:14 +00001073// CHECK: <string>Conversion from value of type &apos;NSNumber *&apos; to incompatible type &apos;NSString *&apos;</string>
Gabor Horvath717b51c2015-08-21 00:18:28 +00001074// CHECK: </dict>
1075// CHECK: </array>
Gabor Horvath1cbf4352015-09-08 21:04:14 +00001076// CHECK: <key>description</key><string>Conversion from value of type &apos;NSNumber *&apos; to incompatible type &apos;NSString *&apos;</string>
Gabor Horvath717b51c2015-08-21 00:18:28 +00001077// CHECK: <key>category</key><string>Core Foundation/Objective-C</string>
1078// CHECK: <key>type</key><string>Generics</string>
Gabor Horvathc0c7a5d2015-09-13 23:02:24 +00001079// CHECK: <key>check_name</key><string>core.DynamicTypePropagation</string>
Gabor Horvath717b51c2015-08-21 00:18:28 +00001080// CHECK: <key>issue_context_kind</key><string>function</string>
1081// CHECK: <key>issue_context</key><string>incompatibleTypesErasedReverseConversion</string>
1082// CHECK: <key>issue_hash</key><string>2</string>
1083// CHECK: <key>location</key>
1084// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00001085// CHECK: <key>line</key><integer>106</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00001086// CHECK: <key>col</key><integer>3</integer>
1087// CHECK: <key>file</key><integer>0</integer>
1088// CHECK: </dict>
1089// CHECK: </dict>
1090// CHECK: <dict>
1091// CHECK: <key>path</key>
1092// CHECK: <array>
1093// CHECK: <dict>
1094// CHECK: <key>kind</key><string>event</string>
1095// CHECK: <key>location</key>
1096// CHECK: <dict>
Gabor Horvath717b51c2015-08-21 00:18:28 +00001097// CHECK: <key>line</key><integer>105</integer>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00001098// CHECK: <key>col</key><integer>7</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00001099// CHECK: <key>file</key><integer>0</integer>
1100// CHECK: </dict>
1101// CHECK: <key>ranges</key>
1102// CHECK: <array>
1103// CHECK: <array>
1104// CHECK: <dict>
1105// CHECK: <key>line</key><integer>105</integer>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00001106// CHECK: <key>col</key><integer>7</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00001107// CHECK: <key>file</key><integer>0</integer>
1108// CHECK: </dict>
1109// CHECK: <dict>
1110// CHECK: <key>line</key><integer>105</integer>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00001111// CHECK: <key>col</key><integer>7</integer>
1112// CHECK: <key>file</key><integer>0</integer>
1113// CHECK: </dict>
1114// CHECK: </array>
1115// CHECK: </array>
1116// CHECK: <key>depth</key><integer>0</integer>
1117// CHECK: <key>extended_message</key>
1118// CHECK: <string>Type &apos;NSArray&lt;NSString *&gt; *&apos; is inferred from implicit cast (from &apos;NSArray *&apos; to &apos;NSArray&lt;NSString *&gt; *&apos;)</string>
1119// CHECK: <key>message</key>
1120// CHECK: <string>Type &apos;NSArray&lt;NSString *&gt; *&apos; is inferred from implicit cast (from &apos;NSArray *&apos; to &apos;NSArray&lt;NSString *&gt; *&apos;)</string>
1121// CHECK: </dict>
1122// CHECK: <dict>
1123// CHECK: <key>kind</key><string>control</string>
1124// CHECK: <key>edges</key>
1125// CHECK: <array>
1126// CHECK: <dict>
1127// CHECK: <key>start</key>
1128// CHECK: <array>
1129// CHECK: <dict>
1130// CHECK: <key>line</key><integer>105</integer>
1131// CHECK: <key>col</key><integer>3</integer>
1132// CHECK: <key>file</key><integer>0</integer>
1133// CHECK: </dict>
1134// CHECK: <dict>
1135// CHECK: <key>line</key><integer>105</integer>
1136// CHECK: <key>col</key><integer>3</integer>
1137// CHECK: <key>file</key><integer>0</integer>
1138// CHECK: </dict>
1139// CHECK: </array>
1140// CHECK: <key>end</key>
1141// CHECK: <array>
1142// CHECK: <dict>
1143// CHECK: <key>line</key><integer>108</integer>
1144// CHECK: <key>col</key><integer>3</integer>
1145// CHECK: <key>file</key><integer>0</integer>
1146// CHECK: </dict>
1147// CHECK: <dict>
1148// CHECK: <key>line</key><integer>108</integer>
1149// CHECK: <key>col</key><integer>9</integer>
1150// CHECK: <key>file</key><integer>0</integer>
1151// CHECK: </dict>
1152// CHECK: </array>
1153// CHECK: </dict>
1154// CHECK: </array>
1155// CHECK: </dict>
1156// CHECK: <dict>
1157// CHECK: <key>kind</key><string>control</string>
1158// CHECK: <key>edges</key>
1159// CHECK: <array>
1160// CHECK: <dict>
1161// CHECK: <key>start</key>
1162// CHECK: <array>
1163// CHECK: <dict>
1164// CHECK: <key>line</key><integer>108</integer>
1165// CHECK: <key>col</key><integer>3</integer>
1166// CHECK: <key>file</key><integer>0</integer>
1167// CHECK: </dict>
1168// CHECK: <dict>
1169// CHECK: <key>line</key><integer>108</integer>
1170// CHECK: <key>col</key><integer>9</integer>
1171// CHECK: <key>file</key><integer>0</integer>
1172// CHECK: </dict>
1173// CHECK: </array>
1174// CHECK: <key>end</key>
1175// CHECK: <array>
1176// CHECK: <dict>
1177// CHECK: <key>line</key><integer>108</integer>
1178// CHECK: <key>col</key><integer>11</integer>
1179// CHECK: <key>file</key><integer>0</integer>
1180// CHECK: </dict>
1181// CHECK: <dict>
1182// CHECK: <key>line</key><integer>108</integer>
1183// CHECK: <key>col</key><integer>11</integer>
1184// CHECK: <key>file</key><integer>0</integer>
1185// CHECK: </dict>
1186// CHECK: </array>
1187// CHECK: </dict>
1188// CHECK: </array>
1189// CHECK: </dict>
1190// CHECK: <dict>
1191// CHECK: <key>kind</key><string>event</string>
1192// CHECK: <key>location</key>
1193// CHECK: <dict>
1194// CHECK: <key>line</key><integer>108</integer>
1195// CHECK: <key>col</key><integer>11</integer>
1196// CHECK: <key>file</key><integer>0</integer>
1197// CHECK: </dict>
1198// CHECK: <key>ranges</key>
1199// CHECK: <array>
1200// CHECK: <array>
1201// CHECK: <dict>
1202// CHECK: <key>line</key><integer>108</integer>
1203// CHECK: <key>col</key><integer>11</integer>
1204// CHECK: <key>file</key><integer>0</integer>
1205// CHECK: </dict>
1206// CHECK: <dict>
1207// CHECK: <key>line</key><integer>108</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00001208// CHECK: <key>col</key><integer>11</integer>
1209// CHECK: <key>file</key><integer>0</integer>
1210// CHECK: </dict>
1211// CHECK: </array>
1212// CHECK: </array>
1213// CHECK: <key>depth</key><integer>0</integer>
1214// CHECK: <key>extended_message</key>
Gabor Horvath1cbf4352015-09-08 21:04:14 +00001215// CHECK: <string>Conversion from value of type &apos;NSArray&lt;NSString *&gt; *&apos; to incompatible type &apos;NSArray&lt;NSNumber *&gt; *&apos;</string>
Gabor Horvath717b51c2015-08-21 00:18:28 +00001216// CHECK: <key>message</key>
Gabor Horvath1cbf4352015-09-08 21:04:14 +00001217// CHECK: <string>Conversion from value of type &apos;NSArray&lt;NSString *&gt; *&apos; to incompatible type &apos;NSArray&lt;NSNumber *&gt; *&apos;</string>
Gabor Horvath717b51c2015-08-21 00:18:28 +00001218// CHECK: </dict>
1219// CHECK: </array>
Gabor Horvath1cbf4352015-09-08 21:04:14 +00001220// CHECK: <key>description</key><string>Conversion from value of type &apos;NSArray&lt;NSString *&gt; *&apos; to incompatible type &apos;NSArray&lt;NSNumber *&gt; *&apos;</string>
Gabor Horvath717b51c2015-08-21 00:18:28 +00001221// CHECK: <key>category</key><string>Core Foundation/Objective-C</string>
1222// CHECK: <key>type</key><string>Generics</string>
Gabor Horvathc0c7a5d2015-09-13 23:02:24 +00001223// CHECK: <key>check_name</key><string>core.DynamicTypePropagation</string>
Gabor Horvath717b51c2015-08-21 00:18:28 +00001224// CHECK: <key>issue_context_kind</key><string>function</string>
1225// CHECK: <key>issue_context</key><string>incompatibleTypesErasedReverseConversion</string>
1226// CHECK: <key>issue_hash</key><string>4</string>
1227// CHECK: <key>location</key>
1228// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00001229// CHECK: <key>line</key><integer>108</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00001230// CHECK: <key>col</key><integer>11</integer>
1231// CHECK: <key>file</key><integer>0</integer>
1232// CHECK: </dict>
1233// CHECK: </dict>
1234// CHECK: <dict>
1235// CHECK: <key>path</key>
1236// CHECK: <array>
1237// CHECK: <dict>
1238// CHECK: <key>kind</key><string>event</string>
1239// CHECK: <key>location</key>
1240// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00001241// CHECK: <key>line</key><integer>112</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00001242// CHECK: <key>col</key><integer>7</integer>
1243// CHECK: <key>file</key><integer>0</integer>
1244// CHECK: </dict>
1245// CHECK: <key>ranges</key>
1246// CHECK: <array>
1247// CHECK: <array>
1248// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00001249// CHECK: <key>line</key><integer>112</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00001250// CHECK: <key>col</key><integer>7</integer>
1251// CHECK: <key>file</key><integer>0</integer>
1252// CHECK: </dict>
1253// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00001254// CHECK: <key>line</key><integer>112</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00001255// CHECK: <key>col</key><integer>7</integer>
1256// CHECK: <key>file</key><integer>0</integer>
1257// CHECK: </dict>
1258// CHECK: </array>
1259// CHECK: </array>
1260// CHECK: <key>depth</key><integer>0</integer>
1261// CHECK: <key>extended_message</key>
Gabor Horvath03dc4732015-08-25 16:38:05 +00001262// CHECK: <string>Type &apos;NSArray&lt;NSString *&gt; *&apos; is inferred from implicit cast (from &apos;id&apos; to &apos;NSArray&lt;NSString *&gt; *&apos;)</string>
Gabor Horvath717b51c2015-08-21 00:18:28 +00001263// CHECK: <key>message</key>
Gabor Horvath03dc4732015-08-25 16:38:05 +00001264// CHECK: <string>Type &apos;NSArray&lt;NSString *&gt; *&apos; is inferred from implicit cast (from &apos;id&apos; to &apos;NSArray&lt;NSString *&gt; *&apos;)</string>
Gabor Horvath717b51c2015-08-21 00:18:28 +00001265// CHECK: </dict>
1266// CHECK: <dict>
1267// CHECK: <key>kind</key><string>control</string>
1268// CHECK: <key>edges</key>
1269// CHECK: <array>
1270// CHECK: <dict>
1271// CHECK: <key>start</key>
1272// CHECK: <array>
1273// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00001274// CHECK: <key>line</key><integer>112</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00001275// CHECK: <key>col</key><integer>3</integer>
1276// CHECK: <key>file</key><integer>0</integer>
1277// CHECK: </dict>
1278// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00001279// CHECK: <key>line</key><integer>112</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00001280// CHECK: <key>col</key><integer>3</integer>
1281// CHECK: <key>file</key><integer>0</integer>
1282// CHECK: </dict>
1283// CHECK: </array>
1284// CHECK: <key>end</key>
1285// CHECK: <array>
1286// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00001287// CHECK: <key>line</key><integer>113</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00001288// CHECK: <key>col</key><integer>3</integer>
1289// CHECK: <key>file</key><integer>0</integer>
1290// CHECK: </dict>
1291// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00001292// CHECK: <key>line</key><integer>113</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00001293// CHECK: <key>col</key><integer>3</integer>
1294// CHECK: <key>file</key><integer>0</integer>
1295// CHECK: </dict>
1296// CHECK: </array>
1297// CHECK: </dict>
1298// CHECK: </array>
1299// CHECK: </dict>
1300// CHECK: <dict>
1301// CHECK: <key>kind</key><string>event</string>
1302// CHECK: <key>location</key>
1303// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00001304// CHECK: <key>line</key><integer>113</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00001305// CHECK: <key>col</key><integer>3</integer>
1306// CHECK: <key>file</key><integer>0</integer>
1307// CHECK: </dict>
1308// CHECK: <key>ranges</key>
1309// CHECK: <array>
1310// CHECK: <array>
1311// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00001312// CHECK: <key>line</key><integer>113</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00001313// CHECK: <key>col</key><integer>16</integer>
1314// CHECK: <key>file</key><integer>0</integer>
1315// CHECK: </dict>
1316// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00001317// CHECK: <key>line</key><integer>113</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00001318// CHECK: <key>col</key><integer>38</integer>
1319// CHECK: <key>file</key><integer>0</integer>
1320// CHECK: </dict>
1321// CHECK: </array>
1322// CHECK: </array>
1323// CHECK: <key>depth</key><integer>0</integer>
1324// CHECK: <key>extended_message</key>
Gabor Horvath1cbf4352015-09-08 21:04:14 +00001325// CHECK: <string>Conversion from value of type &apos;NSNumber *&apos; to incompatible type &apos;NSString *&apos;</string>
Gabor Horvath717b51c2015-08-21 00:18:28 +00001326// CHECK: <key>message</key>
Gabor Horvath1cbf4352015-09-08 21:04:14 +00001327// CHECK: <string>Conversion from value of type &apos;NSNumber *&apos; to incompatible type &apos;NSString *&apos;</string>
Gabor Horvath717b51c2015-08-21 00:18:28 +00001328// CHECK: </dict>
1329// CHECK: </array>
Gabor Horvath1cbf4352015-09-08 21:04:14 +00001330// CHECK: <key>description</key><string>Conversion from value of type &apos;NSNumber *&apos; to incompatible type &apos;NSString *&apos;</string>
Gabor Horvath717b51c2015-08-21 00:18:28 +00001331// CHECK: <key>category</key><string>Core Foundation/Objective-C</string>
1332// CHECK: <key>type</key><string>Generics</string>
Gabor Horvathc0c7a5d2015-09-13 23:02:24 +00001333// CHECK: <key>check_name</key><string>core.DynamicTypePropagation</string>
Gabor Horvath717b51c2015-08-21 00:18:28 +00001334// CHECK: <key>issue_context_kind</key><string>function</string>
1335// CHECK: <key>issue_context</key><string>idErasedIncompatibleTypesReverseConversion</string>
1336// CHECK: <key>issue_hash</key><string>2</string>
1337// CHECK: <key>location</key>
1338// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00001339// CHECK: <key>line</key><integer>113</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00001340// CHECK: <key>col</key><integer>3</integer>
1341// CHECK: <key>file</key><integer>0</integer>
1342// CHECK: </dict>
1343// CHECK: </dict>
1344// CHECK: <dict>
1345// CHECK: <key>path</key>
1346// CHECK: <array>
1347// CHECK: <dict>
1348// CHECK: <key>kind</key><string>event</string>
1349// CHECK: <key>location</key>
1350// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00001351// CHECK: <key>line</key><integer>112</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00001352// CHECK: <key>col</key><integer>7</integer>
1353// CHECK: <key>file</key><integer>0</integer>
1354// CHECK: </dict>
1355// CHECK: <key>ranges</key>
1356// CHECK: <array>
1357// CHECK: <array>
1358// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00001359// CHECK: <key>line</key><integer>112</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00001360// CHECK: <key>col</key><integer>7</integer>
1361// CHECK: <key>file</key><integer>0</integer>
1362// CHECK: </dict>
1363// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00001364// CHECK: <key>line</key><integer>112</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00001365// CHECK: <key>col</key><integer>7</integer>
1366// CHECK: <key>file</key><integer>0</integer>
1367// CHECK: </dict>
1368// CHECK: </array>
1369// CHECK: </array>
1370// CHECK: <key>depth</key><integer>0</integer>
1371// CHECK: <key>extended_message</key>
Gabor Horvath03dc4732015-08-25 16:38:05 +00001372// CHECK: <string>Type &apos;NSArray&lt;NSString *&gt; *&apos; is inferred from implicit cast (from &apos;id&apos; to &apos;NSArray&lt;NSString *&gt; *&apos;)</string>
Gabor Horvath717b51c2015-08-21 00:18:28 +00001373// CHECK: <key>message</key>
Gabor Horvath03dc4732015-08-25 16:38:05 +00001374// CHECK: <string>Type &apos;NSArray&lt;NSString *&gt; *&apos; is inferred from implicit cast (from &apos;id&apos; to &apos;NSArray&lt;NSString *&gt; *&apos;)</string>
Gabor Horvath717b51c2015-08-21 00:18:28 +00001375// CHECK: </dict>
1376// CHECK: <dict>
1377// CHECK: <key>kind</key><string>control</string>
1378// CHECK: <key>edges</key>
1379// CHECK: <array>
1380// CHECK: <dict>
1381// CHECK: <key>start</key>
1382// CHECK: <array>
1383// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00001384// CHECK: <key>line</key><integer>112</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00001385// CHECK: <key>col</key><integer>3</integer>
1386// CHECK: <key>file</key><integer>0</integer>
1387// CHECK: </dict>
1388// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00001389// CHECK: <key>line</key><integer>112</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00001390// CHECK: <key>col</key><integer>3</integer>
1391// CHECK: <key>file</key><integer>0</integer>
1392// CHECK: </dict>
1393// CHECK: </array>
1394// CHECK: <key>end</key>
1395// CHECK: <array>
1396// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00001397// CHECK: <key>line</key><integer>115</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00001398// CHECK: <key>col</key><integer>3</integer>
1399// CHECK: <key>file</key><integer>0</integer>
1400// CHECK: </dict>
1401// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00001402// CHECK: <key>line</key><integer>115</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00001403// CHECK: <key>col</key><integer>9</integer>
1404// CHECK: <key>file</key><integer>0</integer>
1405// CHECK: </dict>
1406// CHECK: </array>
1407// CHECK: </dict>
1408// CHECK: </array>
1409// CHECK: </dict>
1410// CHECK: <dict>
1411// CHECK: <key>kind</key><string>control</string>
1412// CHECK: <key>edges</key>
1413// CHECK: <array>
1414// CHECK: <dict>
1415// CHECK: <key>start</key>
1416// CHECK: <array>
1417// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00001418// CHECK: <key>line</key><integer>115</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00001419// CHECK: <key>col</key><integer>3</integer>
1420// CHECK: <key>file</key><integer>0</integer>
1421// CHECK: </dict>
1422// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00001423// CHECK: <key>line</key><integer>115</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00001424// CHECK: <key>col</key><integer>9</integer>
1425// CHECK: <key>file</key><integer>0</integer>
1426// CHECK: </dict>
1427// CHECK: </array>
1428// CHECK: <key>end</key>
1429// CHECK: <array>
1430// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00001431// CHECK: <key>line</key><integer>115</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00001432// CHECK: <key>col</key><integer>11</integer>
1433// CHECK: <key>file</key><integer>0</integer>
1434// CHECK: </dict>
1435// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00001436// CHECK: <key>line</key><integer>115</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00001437// CHECK: <key>col</key><integer>11</integer>
1438// CHECK: <key>file</key><integer>0</integer>
1439// CHECK: </dict>
1440// CHECK: </array>
1441// CHECK: </dict>
1442// CHECK: </array>
1443// CHECK: </dict>
1444// CHECK: <dict>
1445// CHECK: <key>kind</key><string>event</string>
1446// CHECK: <key>location</key>
1447// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00001448// CHECK: <key>line</key><integer>115</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00001449// CHECK: <key>col</key><integer>11</integer>
1450// CHECK: <key>file</key><integer>0</integer>
1451// CHECK: </dict>
1452// CHECK: <key>ranges</key>
1453// CHECK: <array>
1454// CHECK: <array>
1455// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00001456// CHECK: <key>line</key><integer>115</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00001457// CHECK: <key>col</key><integer>11</integer>
1458// CHECK: <key>file</key><integer>0</integer>
1459// CHECK: </dict>
1460// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00001461// CHECK: <key>line</key><integer>115</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00001462// CHECK: <key>col</key><integer>11</integer>
1463// CHECK: <key>file</key><integer>0</integer>
1464// CHECK: </dict>
1465// CHECK: </array>
1466// CHECK: </array>
1467// CHECK: <key>depth</key><integer>0</integer>
1468// CHECK: <key>extended_message</key>
Gabor Horvath1cbf4352015-09-08 21:04:14 +00001469// CHECK: <string>Conversion from value of type &apos;NSArray&lt;NSString *&gt; *&apos; to incompatible type &apos;NSArray&lt;NSNumber *&gt; *&apos;</string>
Gabor Horvath717b51c2015-08-21 00:18:28 +00001470// CHECK: <key>message</key>
Gabor Horvath1cbf4352015-09-08 21:04:14 +00001471// CHECK: <string>Conversion from value of type &apos;NSArray&lt;NSString *&gt; *&apos; to incompatible type &apos;NSArray&lt;NSNumber *&gt; *&apos;</string>
Gabor Horvath717b51c2015-08-21 00:18:28 +00001472// CHECK: </dict>
1473// CHECK: </array>
Gabor Horvath1cbf4352015-09-08 21:04:14 +00001474// CHECK: <key>description</key><string>Conversion from value of type &apos;NSArray&lt;NSString *&gt; *&apos; to incompatible type &apos;NSArray&lt;NSNumber *&gt; *&apos;</string>
Gabor Horvath717b51c2015-08-21 00:18:28 +00001475// CHECK: <key>category</key><string>Core Foundation/Objective-C</string>
1476// CHECK: <key>type</key><string>Generics</string>
Gabor Horvathc0c7a5d2015-09-13 23:02:24 +00001477// CHECK: <key>check_name</key><string>core.DynamicTypePropagation</string>
Gabor Horvath717b51c2015-08-21 00:18:28 +00001478// CHECK: <key>issue_context_kind</key><string>function</string>
1479// CHECK: <key>issue_context</key><string>idErasedIncompatibleTypesReverseConversion</string>
1480// CHECK: <key>issue_hash</key><string>4</string>
1481// CHECK: <key>location</key>
1482// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00001483// CHECK: <key>line</key><integer>115</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00001484// CHECK: <key>col</key><integer>11</integer>
1485// CHECK: <key>file</key><integer>0</integer>
1486// CHECK: </dict>
1487// CHECK: </dict>
1488// CHECK: <dict>
1489// CHECK: <key>path</key>
1490// CHECK: <array>
1491// CHECK: <dict>
1492// CHECK: <key>kind</key><string>event</string>
1493// CHECK: <key>location</key>
1494// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00001495// CHECK: <key>line</key><integer>120</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00001496// CHECK: <key>col</key><integer>7</integer>
1497// CHECK: <key>file</key><integer>0</integer>
1498// CHECK: </dict>
1499// CHECK: <key>ranges</key>
1500// CHECK: <array>
1501// CHECK: <array>
1502// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00001503// CHECK: <key>line</key><integer>120</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00001504// CHECK: <key>col</key><integer>7</integer>
1505// CHECK: <key>file</key><integer>0</integer>
1506// CHECK: </dict>
1507// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00001508// CHECK: <key>line</key><integer>120</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00001509// CHECK: <key>col</key><integer>7</integer>
1510// CHECK: <key>file</key><integer>0</integer>
1511// CHECK: </dict>
1512// CHECK: </array>
1513// CHECK: </array>
1514// CHECK: <key>depth</key><integer>0</integer>
1515// CHECK: <key>extended_message</key>
Gabor Horvath03dc4732015-08-25 16:38:05 +00001516// CHECK: <string>Type &apos;NSArray&lt;NSString *&gt; *&apos; is inferred from implicit cast (from &apos;NSArray&lt;NSString *&gt; *&apos; to &apos;id&apos;)</string>
Gabor Horvath717b51c2015-08-21 00:18:28 +00001517// CHECK: <key>message</key>
Gabor Horvath03dc4732015-08-25 16:38:05 +00001518// CHECK: <string>Type &apos;NSArray&lt;NSString *&gt; *&apos; is inferred from implicit cast (from &apos;NSArray&lt;NSString *&gt; *&apos; to &apos;id&apos;)</string>
Gabor Horvath717b51c2015-08-21 00:18:28 +00001519// CHECK: </dict>
1520// CHECK: <dict>
1521// CHECK: <key>kind</key><string>control</string>
1522// CHECK: <key>edges</key>
1523// CHECK: <array>
1524// CHECK: <dict>
1525// CHECK: <key>start</key>
1526// CHECK: <array>
1527// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00001528// CHECK: <key>line</key><integer>120</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00001529// CHECK: <key>col</key><integer>3</integer>
1530// CHECK: <key>file</key><integer>0</integer>
1531// CHECK: </dict>
1532// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00001533// CHECK: <key>line</key><integer>120</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00001534// CHECK: <key>col</key><integer>3</integer>
1535// CHECK: <key>file</key><integer>0</integer>
1536// CHECK: </dict>
1537// CHECK: </array>
1538// CHECK: <key>end</key>
1539// CHECK: <array>
1540// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00001541// CHECK: <key>line</key><integer>121</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00001542// CHECK: <key>col</key><integer>3</integer>
1543// CHECK: <key>file</key><integer>0</integer>
1544// CHECK: </dict>
1545// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00001546// CHECK: <key>line</key><integer>121</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00001547// CHECK: <key>col</key><integer>3</integer>
1548// CHECK: <key>file</key><integer>0</integer>
1549// CHECK: </dict>
1550// CHECK: </array>
1551// CHECK: </dict>
1552// CHECK: </array>
1553// CHECK: </dict>
1554// CHECK: <dict>
1555// CHECK: <key>kind</key><string>control</string>
1556// CHECK: <key>edges</key>
1557// CHECK: <array>
1558// CHECK: <dict>
1559// CHECK: <key>start</key>
1560// CHECK: <array>
1561// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00001562// CHECK: <key>line</key><integer>121</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00001563// CHECK: <key>col</key><integer>3</integer>
1564// CHECK: <key>file</key><integer>0</integer>
1565// CHECK: </dict>
1566// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00001567// CHECK: <key>line</key><integer>121</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00001568// CHECK: <key>col</key><integer>3</integer>
1569// CHECK: <key>file</key><integer>0</integer>
1570// CHECK: </dict>
1571// CHECK: </array>
1572// CHECK: <key>end</key>
1573// CHECK: <array>
1574// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00001575// CHECK: <key>line</key><integer>121</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00001576// CHECK: <key>col</key><integer>7</integer>
1577// CHECK: <key>file</key><integer>0</integer>
1578// CHECK: </dict>
1579// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00001580// CHECK: <key>line</key><integer>121</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00001581// CHECK: <key>col</key><integer>7</integer>
1582// CHECK: <key>file</key><integer>0</integer>
1583// CHECK: </dict>
1584// CHECK: </array>
1585// CHECK: </dict>
1586// CHECK: </array>
1587// CHECK: </dict>
1588// CHECK: <dict>
1589// CHECK: <key>kind</key><string>event</string>
1590// CHECK: <key>location</key>
1591// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00001592// CHECK: <key>line</key><integer>121</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00001593// CHECK: <key>col</key><integer>7</integer>
1594// CHECK: <key>file</key><integer>0</integer>
1595// CHECK: </dict>
1596// CHECK: <key>ranges</key>
1597// CHECK: <array>
1598// CHECK: <array>
1599// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00001600// CHECK: <key>line</key><integer>121</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00001601// CHECK: <key>col</key><integer>7</integer>
1602// CHECK: <key>file</key><integer>0</integer>
1603// CHECK: </dict>
1604// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00001605// CHECK: <key>line</key><integer>121</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00001606// CHECK: <key>col</key><integer>7</integer>
1607// CHECK: <key>file</key><integer>0</integer>
1608// CHECK: </dict>
1609// CHECK: </array>
1610// CHECK: </array>
1611// CHECK: <key>depth</key><integer>0</integer>
1612// CHECK: <key>extended_message</key>
Gabor Horvath1cbf4352015-09-08 21:04:14 +00001613// CHECK: <string>Conversion from value of type &apos;NSArray&lt;NSString *&gt; *&apos; to incompatible type &apos;NSArray&lt;NSNumber *&gt; *&apos;</string>
Gabor Horvath717b51c2015-08-21 00:18:28 +00001614// CHECK: <key>message</key>
Gabor Horvath1cbf4352015-09-08 21:04:14 +00001615// CHECK: <string>Conversion from value of type &apos;NSArray&lt;NSString *&gt; *&apos; to incompatible type &apos;NSArray&lt;NSNumber *&gt; *&apos;</string>
Gabor Horvath717b51c2015-08-21 00:18:28 +00001616// CHECK: </dict>
1617// CHECK: </array>
Gabor Horvath1cbf4352015-09-08 21:04:14 +00001618// CHECK: <key>description</key><string>Conversion from value of type &apos;NSArray&lt;NSString *&gt; *&apos; to incompatible type &apos;NSArray&lt;NSNumber *&gt; *&apos;</string>
Gabor Horvath717b51c2015-08-21 00:18:28 +00001619// CHECK: <key>category</key><string>Core Foundation/Objective-C</string>
1620// CHECK: <key>type</key><string>Generics</string>
Gabor Horvathc0c7a5d2015-09-13 23:02:24 +00001621// CHECK: <key>check_name</key><string>core.DynamicTypePropagation</string>
Gabor Horvath717b51c2015-08-21 00:18:28 +00001622// CHECK: <key>issue_context_kind</key><string>function</string>
1623// CHECK: <key>issue_context</key><string>idErasedIncompatibleTypes</string>
1624// CHECK: <key>issue_hash</key><string>2</string>
1625// CHECK: <key>location</key>
1626// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00001627// CHECK: <key>line</key><integer>121</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00001628// CHECK: <key>col</key><integer>7</integer>
1629// CHECK: <key>file</key><integer>0</integer>
1630// CHECK: </dict>
1631// CHECK: </dict>
1632// CHECK: <dict>
1633// CHECK: <key>path</key>
1634// CHECK: <array>
1635// CHECK: <dict>
1636// CHECK: <key>kind</key><string>event</string>
1637// CHECK: <key>location</key>
1638// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00001639// CHECK: <key>line</key><integer>120</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00001640// CHECK: <key>col</key><integer>7</integer>
1641// CHECK: <key>file</key><integer>0</integer>
1642// CHECK: </dict>
1643// CHECK: <key>ranges</key>
1644// CHECK: <array>
1645// CHECK: <array>
1646// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00001647// CHECK: <key>line</key><integer>120</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00001648// CHECK: <key>col</key><integer>7</integer>
1649// CHECK: <key>file</key><integer>0</integer>
1650// CHECK: </dict>
1651// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00001652// CHECK: <key>line</key><integer>120</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00001653// CHECK: <key>col</key><integer>7</integer>
1654// CHECK: <key>file</key><integer>0</integer>
1655// CHECK: </dict>
1656// CHECK: </array>
1657// CHECK: </array>
1658// CHECK: <key>depth</key><integer>0</integer>
1659// CHECK: <key>extended_message</key>
Gabor Horvath03dc4732015-08-25 16:38:05 +00001660// CHECK: <string>Type &apos;NSArray&lt;NSString *&gt; *&apos; is inferred from implicit cast (from &apos;NSArray&lt;NSString *&gt; *&apos; to &apos;id&apos;)</string>
Gabor Horvath717b51c2015-08-21 00:18:28 +00001661// CHECK: <key>message</key>
Gabor Horvath03dc4732015-08-25 16:38:05 +00001662// CHECK: <string>Type &apos;NSArray&lt;NSString *&gt; *&apos; is inferred from implicit cast (from &apos;NSArray&lt;NSString *&gt; *&apos; to &apos;id&apos;)</string>
Gabor Horvath717b51c2015-08-21 00:18:28 +00001663// CHECK: </dict>
1664// CHECK: <dict>
1665// CHECK: <key>kind</key><string>control</string>
1666// CHECK: <key>edges</key>
1667// CHECK: <array>
1668// CHECK: <dict>
1669// CHECK: <key>start</key>
1670// CHECK: <array>
1671// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00001672// CHECK: <key>line</key><integer>120</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00001673// CHECK: <key>col</key><integer>3</integer>
1674// CHECK: <key>file</key><integer>0</integer>
1675// CHECK: </dict>
1676// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00001677// CHECK: <key>line</key><integer>120</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00001678// CHECK: <key>col</key><integer>3</integer>
1679// CHECK: <key>file</key><integer>0</integer>
1680// CHECK: </dict>
1681// CHECK: </array>
1682// CHECK: <key>end</key>
1683// CHECK: <array>
1684// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00001685// CHECK: <key>line</key><integer>122</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00001686// CHECK: <key>col</key><integer>3</integer>
1687// CHECK: <key>file</key><integer>0</integer>
1688// CHECK: </dict>
1689// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00001690// CHECK: <key>line</key><integer>122</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00001691// CHECK: <key>col</key><integer>3</integer>
1692// CHECK: <key>file</key><integer>0</integer>
1693// CHECK: </dict>
1694// CHECK: </array>
1695// CHECK: </dict>
1696// CHECK: </array>
1697// CHECK: </dict>
1698// CHECK: <dict>
1699// CHECK: <key>kind</key><string>event</string>
1700// CHECK: <key>location</key>
1701// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00001702// CHECK: <key>line</key><integer>122</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00001703// CHECK: <key>col</key><integer>3</integer>
1704// CHECK: <key>file</key><integer>0</integer>
1705// CHECK: </dict>
1706// CHECK: <key>ranges</key>
1707// CHECK: <array>
1708// CHECK: <array>
1709// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00001710// CHECK: <key>line</key><integer>122</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00001711// CHECK: <key>col</key><integer>16</integer>
1712// CHECK: <key>file</key><integer>0</integer>
1713// CHECK: </dict>
1714// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00001715// CHECK: <key>line</key><integer>122</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00001716// CHECK: <key>col</key><integer>38</integer>
1717// CHECK: <key>file</key><integer>0</integer>
1718// CHECK: </dict>
1719// CHECK: </array>
1720// CHECK: </array>
1721// CHECK: <key>depth</key><integer>0</integer>
1722// CHECK: <key>extended_message</key>
Gabor Horvath1cbf4352015-09-08 21:04:14 +00001723// CHECK: <string>Conversion from value of type &apos;NSNumber *&apos; to incompatible type &apos;NSString *&apos;</string>
Gabor Horvath717b51c2015-08-21 00:18:28 +00001724// CHECK: <key>message</key>
Gabor Horvath1cbf4352015-09-08 21:04:14 +00001725// CHECK: <string>Conversion from value of type &apos;NSNumber *&apos; to incompatible type &apos;NSString *&apos;</string>
Gabor Horvath717b51c2015-08-21 00:18:28 +00001726// CHECK: </dict>
1727// CHECK: </array>
Gabor Horvath1cbf4352015-09-08 21:04:14 +00001728// CHECK: <key>description</key><string>Conversion from value of type &apos;NSNumber *&apos; to incompatible type &apos;NSString *&apos;</string>
Gabor Horvath717b51c2015-08-21 00:18:28 +00001729// CHECK: <key>category</key><string>Core Foundation/Objective-C</string>
1730// CHECK: <key>type</key><string>Generics</string>
Gabor Horvathc0c7a5d2015-09-13 23:02:24 +00001731// CHECK: <key>check_name</key><string>core.DynamicTypePropagation</string>
Gabor Horvath717b51c2015-08-21 00:18:28 +00001732// CHECK: <key>issue_context_kind</key><string>function</string>
1733// CHECK: <key>issue_context</key><string>idErasedIncompatibleTypes</string>
1734// CHECK: <key>issue_hash</key><string>3</string>
1735// CHECK: <key>location</key>
1736// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00001737// CHECK: <key>line</key><integer>122</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00001738// CHECK: <key>col</key><integer>3</integer>
1739// CHECK: <key>file</key><integer>0</integer>
1740// CHECK: </dict>
1741// CHECK: </dict>
1742// CHECK: <dict>
1743// CHECK: <key>path</key>
1744// CHECK: <array>
1745// CHECK: <dict>
1746// CHECK: <key>kind</key><string>event</string>
1747// CHECK: <key>location</key>
1748// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00001749// CHECK: <key>line</key><integer>120</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00001750// CHECK: <key>col</key><integer>7</integer>
1751// CHECK: <key>file</key><integer>0</integer>
1752// CHECK: </dict>
1753// CHECK: <key>ranges</key>
1754// CHECK: <array>
1755// CHECK: <array>
1756// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00001757// CHECK: <key>line</key><integer>120</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00001758// CHECK: <key>col</key><integer>7</integer>
1759// CHECK: <key>file</key><integer>0</integer>
1760// CHECK: </dict>
1761// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00001762// CHECK: <key>line</key><integer>120</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00001763// CHECK: <key>col</key><integer>7</integer>
1764// CHECK: <key>file</key><integer>0</integer>
1765// CHECK: </dict>
1766// CHECK: </array>
1767// CHECK: </array>
1768// CHECK: <key>depth</key><integer>0</integer>
1769// CHECK: <key>extended_message</key>
Gabor Horvath03dc4732015-08-25 16:38:05 +00001770// CHECK: <string>Type &apos;NSArray&lt;NSString *&gt; *&apos; is inferred from implicit cast (from &apos;NSArray&lt;NSString *&gt; *&apos; to &apos;id&apos;)</string>
Gabor Horvath717b51c2015-08-21 00:18:28 +00001771// CHECK: <key>message</key>
Gabor Horvath03dc4732015-08-25 16:38:05 +00001772// CHECK: <string>Type &apos;NSArray&lt;NSString *&gt; *&apos; is inferred from implicit cast (from &apos;NSArray&lt;NSString *&gt; *&apos; to &apos;id&apos;)</string>
Gabor Horvath717b51c2015-08-21 00:18:28 +00001773// CHECK: </dict>
1774// CHECK: <dict>
1775// CHECK: <key>kind</key><string>control</string>
1776// CHECK: <key>edges</key>
1777// CHECK: <array>
1778// CHECK: <dict>
1779// CHECK: <key>start</key>
1780// CHECK: <array>
1781// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00001782// CHECK: <key>line</key><integer>120</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00001783// CHECK: <key>col</key><integer>3</integer>
1784// CHECK: <key>file</key><integer>0</integer>
1785// CHECK: </dict>
1786// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00001787// CHECK: <key>line</key><integer>120</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00001788// CHECK: <key>col</key><integer>3</integer>
1789// CHECK: <key>file</key><integer>0</integer>
1790// CHECK: </dict>
1791// CHECK: </array>
1792// CHECK: <key>end</key>
1793// CHECK: <array>
1794// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00001795// CHECK: <key>line</key><integer>124</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00001796// CHECK: <key>col</key><integer>3</integer>
1797// CHECK: <key>file</key><integer>0</integer>
1798// CHECK: </dict>
1799// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00001800// CHECK: <key>line</key><integer>124</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00001801// CHECK: <key>col</key><integer>9</integer>
1802// CHECK: <key>file</key><integer>0</integer>
1803// CHECK: </dict>
1804// CHECK: </array>
1805// CHECK: </dict>
1806// CHECK: </array>
1807// CHECK: </dict>
1808// CHECK: <dict>
1809// CHECK: <key>kind</key><string>control</string>
1810// CHECK: <key>edges</key>
1811// CHECK: <array>
1812// CHECK: <dict>
1813// CHECK: <key>start</key>
1814// CHECK: <array>
1815// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00001816// CHECK: <key>line</key><integer>124</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00001817// CHECK: <key>col</key><integer>3</integer>
1818// CHECK: <key>file</key><integer>0</integer>
1819// CHECK: </dict>
1820// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00001821// CHECK: <key>line</key><integer>124</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00001822// CHECK: <key>col</key><integer>9</integer>
1823// CHECK: <key>file</key><integer>0</integer>
1824// CHECK: </dict>
1825// CHECK: </array>
1826// CHECK: <key>end</key>
1827// CHECK: <array>
1828// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00001829// CHECK: <key>line</key><integer>124</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00001830// CHECK: <key>col</key><integer>11</integer>
1831// CHECK: <key>file</key><integer>0</integer>
1832// CHECK: </dict>
1833// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00001834// CHECK: <key>line</key><integer>124</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00001835// CHECK: <key>col</key><integer>11</integer>
1836// CHECK: <key>file</key><integer>0</integer>
1837// CHECK: </dict>
1838// CHECK: </array>
1839// CHECK: </dict>
1840// CHECK: </array>
1841// CHECK: </dict>
1842// CHECK: <dict>
1843// CHECK: <key>kind</key><string>event</string>
1844// CHECK: <key>location</key>
1845// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00001846// CHECK: <key>line</key><integer>124</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00001847// CHECK: <key>col</key><integer>11</integer>
1848// CHECK: <key>file</key><integer>0</integer>
1849// CHECK: </dict>
1850// CHECK: <key>ranges</key>
1851// CHECK: <array>
1852// CHECK: <array>
1853// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00001854// CHECK: <key>line</key><integer>124</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00001855// CHECK: <key>col</key><integer>11</integer>
1856// CHECK: <key>file</key><integer>0</integer>
1857// CHECK: </dict>
1858// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00001859// CHECK: <key>line</key><integer>124</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00001860// CHECK: <key>col</key><integer>11</integer>
1861// CHECK: <key>file</key><integer>0</integer>
1862// CHECK: </dict>
1863// CHECK: </array>
1864// CHECK: </array>
1865// CHECK: <key>depth</key><integer>0</integer>
1866// CHECK: <key>extended_message</key>
Gabor Horvath1cbf4352015-09-08 21:04:14 +00001867// CHECK: <string>Conversion from value of type &apos;NSArray&lt;NSString *&gt; *&apos; to incompatible type &apos;NSArray&lt;NSNumber *&gt; *&apos;</string>
Gabor Horvath717b51c2015-08-21 00:18:28 +00001868// CHECK: <key>message</key>
Gabor Horvath1cbf4352015-09-08 21:04:14 +00001869// CHECK: <string>Conversion from value of type &apos;NSArray&lt;NSString *&gt; *&apos; to incompatible type &apos;NSArray&lt;NSNumber *&gt; *&apos;</string>
Gabor Horvath717b51c2015-08-21 00:18:28 +00001870// CHECK: </dict>
1871// CHECK: </array>
Gabor Horvath1cbf4352015-09-08 21:04:14 +00001872// CHECK: <key>description</key><string>Conversion from value of type &apos;NSArray&lt;NSString *&gt; *&apos; to incompatible type &apos;NSArray&lt;NSNumber *&gt; *&apos;</string>
Gabor Horvath717b51c2015-08-21 00:18:28 +00001873// CHECK: <key>category</key><string>Core Foundation/Objective-C</string>
1874// CHECK: <key>type</key><string>Generics</string>
Gabor Horvathc0c7a5d2015-09-13 23:02:24 +00001875// CHECK: <key>check_name</key><string>core.DynamicTypePropagation</string>
Gabor Horvath717b51c2015-08-21 00:18:28 +00001876// CHECK: <key>issue_context_kind</key><string>function</string>
1877// CHECK: <key>issue_context</key><string>idErasedIncompatibleTypes</string>
1878// CHECK: <key>issue_hash</key><string>5</string>
1879// CHECK: <key>location</key>
1880// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00001881// CHECK: <key>line</key><integer>124</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00001882// CHECK: <key>col</key><integer>11</integer>
1883// CHECK: <key>file</key><integer>0</integer>
1884// CHECK: </dict>
1885// CHECK: </dict>
1886// CHECK: <dict>
1887// CHECK: <key>path</key>
1888// CHECK: <array>
1889// CHECK: <dict>
1890// CHECK: <key>kind</key><string>control</string>
1891// CHECK: <key>edges</key>
1892// CHECK: <array>
1893// CHECK: <dict>
1894// CHECK: <key>start</key>
1895// CHECK: <array>
1896// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00001897// CHECK: <key>line</key><integer>129</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00001898// CHECK: <key>col</key><integer>3</integer>
1899// CHECK: <key>file</key><integer>0</integer>
1900// CHECK: </dict>
1901// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00001902// CHECK: <key>line</key><integer>129</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00001903// CHECK: <key>col</key><integer>4</integer>
1904// CHECK: <key>file</key><integer>0</integer>
1905// CHECK: </dict>
1906// CHECK: </array>
1907// CHECK: <key>end</key>
1908// CHECK: <array>
1909// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00001910// CHECK: <key>line</key><integer>133</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00001911// CHECK: <key>col</key><integer>5</integer>
1912// CHECK: <key>file</key><integer>0</integer>
1913// CHECK: </dict>
1914// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00001915// CHECK: <key>line</key><integer>133</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00001916// CHECK: <key>col</key><integer>5</integer>
1917// CHECK: <key>file</key><integer>0</integer>
1918// CHECK: </dict>
1919// CHECK: </array>
1920// CHECK: </dict>
1921// CHECK: </array>
1922// CHECK: </dict>
1923// CHECK: <dict>
1924// CHECK: <key>kind</key><string>event</string>
1925// CHECK: <key>location</key>
1926// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00001927// CHECK: <key>line</key><integer>133</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00001928// CHECK: <key>col</key><integer>9</integer>
1929// CHECK: <key>file</key><integer>0</integer>
1930// CHECK: </dict>
1931// CHECK: <key>ranges</key>
1932// CHECK: <array>
1933// CHECK: <array>
1934// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00001935// CHECK: <key>line</key><integer>133</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00001936// CHECK: <key>col</key><integer>9</integer>
1937// CHECK: <key>file</key><integer>0</integer>
1938// CHECK: </dict>
1939// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00001940// CHECK: <key>line</key><integer>133</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00001941// CHECK: <key>col</key><integer>9</integer>
1942// CHECK: <key>file</key><integer>0</integer>
1943// CHECK: </dict>
1944// CHECK: </array>
1945// CHECK: </array>
1946// CHECK: <key>depth</key><integer>0</integer>
1947// CHECK: <key>extended_message</key>
Gabor Horvath03dc4732015-08-25 16:38:05 +00001948// CHECK: <string>Type &apos;MutableArray&lt;NSMutableString *&gt; *&apos; is inferred from implicit cast (from &apos;MutableArray&lt;NSMutableString *&gt; *&apos; to &apos;MutableArray *&apos;)</string>
Gabor Horvath717b51c2015-08-21 00:18:28 +00001949// CHECK: <key>message</key>
Gabor Horvath03dc4732015-08-25 16:38:05 +00001950// CHECK: <string>Type &apos;MutableArray&lt;NSMutableString *&gt; *&apos; is inferred from implicit cast (from &apos;MutableArray&lt;NSMutableString *&gt; *&apos; to &apos;MutableArray *&apos;)</string>
Gabor Horvath717b51c2015-08-21 00:18:28 +00001951// CHECK: </dict>
1952// CHECK: <dict>
1953// CHECK: <key>kind</key><string>control</string>
1954// CHECK: <key>edges</key>
1955// CHECK: <array>
1956// CHECK: <dict>
1957// CHECK: <key>start</key>
1958// CHECK: <array>
1959// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00001960// CHECK: <key>line</key><integer>133</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00001961// CHECK: <key>col</key><integer>5</integer>
1962// CHECK: <key>file</key><integer>0</integer>
1963// CHECK: </dict>
1964// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00001965// CHECK: <key>line</key><integer>133</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00001966// CHECK: <key>col</key><integer>5</integer>
1967// CHECK: <key>file</key><integer>0</integer>
1968// CHECK: </dict>
1969// CHECK: </array>
1970// CHECK: <key>end</key>
1971// CHECK: <array>
1972// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00001973// CHECK: <key>line</key><integer>134</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00001974// CHECK: <key>col</key><integer>5</integer>
1975// CHECK: <key>file</key><integer>0</integer>
1976// CHECK: </dict>
1977// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00001978// CHECK: <key>line</key><integer>134</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00001979// CHECK: <key>col</key><integer>5</integer>
1980// CHECK: <key>file</key><integer>0</integer>
1981// CHECK: </dict>
1982// CHECK: </array>
1983// CHECK: </dict>
1984// CHECK: </array>
1985// CHECK: </dict>
1986// CHECK: <dict>
1987// CHECK: <key>kind</key><string>control</string>
1988// CHECK: <key>edges</key>
1989// CHECK: <array>
1990// CHECK: <dict>
1991// CHECK: <key>start</key>
1992// CHECK: <array>
1993// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00001994// CHECK: <key>line</key><integer>134</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00001995// CHECK: <key>col</key><integer>5</integer>
1996// CHECK: <key>file</key><integer>0</integer>
1997// CHECK: </dict>
1998// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00001999// CHECK: <key>line</key><integer>134</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00002000// CHECK: <key>col</key><integer>5</integer>
2001// CHECK: <key>file</key><integer>0</integer>
2002// CHECK: </dict>
2003// CHECK: </array>
2004// CHECK: <key>end</key>
2005// CHECK: <array>
2006// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00002007// CHECK: <key>line</key><integer>136</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00002008// CHECK: <key>col</key><integer>3</integer>
2009// CHECK: <key>file</key><integer>0</integer>
2010// CHECK: </dict>
2011// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00002012// CHECK: <key>line</key><integer>136</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00002013// CHECK: <key>col</key><integer>3</integer>
2014// CHECK: <key>file</key><integer>0</integer>
2015// CHECK: </dict>
2016// CHECK: </array>
2017// CHECK: </dict>
2018// CHECK: </array>
2019// CHECK: </dict>
2020// CHECK: <dict>
2021// CHECK: <key>kind</key><string>event</string>
2022// CHECK: <key>location</key>
2023// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00002024// CHECK: <key>line</key><integer>136</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00002025// CHECK: <key>col</key><integer>3</integer>
2026// CHECK: <key>file</key><integer>0</integer>
2027// CHECK: </dict>
2028// CHECK: <key>ranges</key>
2029// CHECK: <array>
2030// CHECK: <array>
2031// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00002032// CHECK: <key>line</key><integer>136</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00002033// CHECK: <key>col</key><integer>17</integer>
2034// CHECK: <key>file</key><integer>0</integer>
2035// CHECK: </dict>
2036// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00002037// CHECK: <key>line</key><integer>136</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00002038// CHECK: <key>col</key><integer>39</integer>
2039// CHECK: <key>file</key><integer>0</integer>
2040// CHECK: </dict>
2041// CHECK: </array>
2042// CHECK: </array>
2043// CHECK: <key>depth</key><integer>0</integer>
2044// CHECK: <key>extended_message</key>
Gabor Horvath1cbf4352015-09-08 21:04:14 +00002045// CHECK: <string>Conversion from value of type &apos;NSString *&apos; to incompatible type &apos;NSMutableString *&apos;</string>
Gabor Horvath717b51c2015-08-21 00:18:28 +00002046// CHECK: <key>message</key>
Gabor Horvath1cbf4352015-09-08 21:04:14 +00002047// CHECK: <string>Conversion from value of type &apos;NSString *&apos; to incompatible type &apos;NSMutableString *&apos;</string>
Gabor Horvath717b51c2015-08-21 00:18:28 +00002048// CHECK: </dict>
2049// CHECK: </array>
Gabor Horvath1cbf4352015-09-08 21:04:14 +00002050// CHECK: <key>description</key><string>Conversion from value of type &apos;NSString *&apos; to incompatible type &apos;NSMutableString *&apos;</string>
Gabor Horvath717b51c2015-08-21 00:18:28 +00002051// CHECK: <key>category</key><string>Core Foundation/Objective-C</string>
2052// CHECK: <key>type</key><string>Generics</string>
Gabor Horvathc0c7a5d2015-09-13 23:02:24 +00002053// CHECK: <key>check_name</key><string>core.DynamicTypePropagation</string>
Gabor Horvath717b51c2015-08-21 00:18:28 +00002054// CHECK: <key>issue_context_kind</key><string>function</string>
2055// CHECK: <key>issue_context</key><string>pathSensitiveInference</string>
2056// CHECK: <key>issue_hash</key><string>8</string>
2057// CHECK: <key>location</key>
2058// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00002059// CHECK: <key>line</key><integer>136</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00002060// CHECK: <key>col</key><integer>3</integer>
2061// CHECK: <key>file</key><integer>0</integer>
2062// CHECK: </dict>
2063// CHECK: </dict>
2064// CHECK: <dict>
2065// CHECK: <key>path</key>
2066// CHECK: <array>
2067// CHECK: <dict>
2068// CHECK: <key>kind</key><string>event</string>
2069// CHECK: <key>location</key>
2070// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00002071// CHECK: <key>line</key><integer>141</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00002072// CHECK: <key>col</key><integer>7</integer>
2073// CHECK: <key>file</key><integer>0</integer>
2074// CHECK: </dict>
2075// CHECK: <key>ranges</key>
2076// CHECK: <array>
2077// CHECK: <array>
2078// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00002079// CHECK: <key>line</key><integer>141</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00002080// CHECK: <key>col</key><integer>7</integer>
2081// CHECK: <key>file</key><integer>0</integer>
2082// CHECK: </dict>
2083// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00002084// CHECK: <key>line</key><integer>141</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00002085// CHECK: <key>col</key><integer>7</integer>
2086// CHECK: <key>file</key><integer>0</integer>
2087// CHECK: </dict>
2088// CHECK: </array>
2089// CHECK: </array>
2090// CHECK: <key>depth</key><integer>0</integer>
2091// CHECK: <key>extended_message</key>
Gabor Horvath03dc4732015-08-25 16:38:05 +00002092// CHECK: <string>Type &apos;MutableArray&lt;NSString *&gt; *&apos; is inferred from implicit cast (from &apos;id&apos; to &apos;MutableArray&lt;NSString *&gt; *&apos;)</string>
Gabor Horvath717b51c2015-08-21 00:18:28 +00002093// CHECK: <key>message</key>
Gabor Horvath03dc4732015-08-25 16:38:05 +00002094// CHECK: <string>Type &apos;MutableArray&lt;NSString *&gt; *&apos; is inferred from implicit cast (from &apos;id&apos; to &apos;MutableArray&lt;NSString *&gt; *&apos;)</string>
Gabor Horvath717b51c2015-08-21 00:18:28 +00002095// CHECK: </dict>
2096// CHECK: <dict>
2097// CHECK: <key>kind</key><string>control</string>
2098// CHECK: <key>edges</key>
2099// CHECK: <array>
2100// CHECK: <dict>
2101// CHECK: <key>start</key>
2102// CHECK: <array>
2103// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00002104// CHECK: <key>line</key><integer>141</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00002105// CHECK: <key>col</key><integer>3</integer>
2106// CHECK: <key>file</key><integer>0</integer>
2107// CHECK: </dict>
2108// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00002109// CHECK: <key>line</key><integer>141</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00002110// CHECK: <key>col</key><integer>3</integer>
2111// CHECK: <key>file</key><integer>0</integer>
2112// CHECK: </dict>
2113// CHECK: </array>
2114// CHECK: <key>end</key>
2115// CHECK: <array>
2116// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00002117// CHECK: <key>line</key><integer>142</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00002118// CHECK: <key>col</key><integer>3</integer>
2119// CHECK: <key>file</key><integer>0</integer>
2120// CHECK: </dict>
2121// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00002122// CHECK: <key>line</key><integer>142</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00002123// CHECK: <key>col</key><integer>9</integer>
2124// CHECK: <key>file</key><integer>0</integer>
2125// CHECK: </dict>
2126// CHECK: </array>
2127// CHECK: </dict>
2128// CHECK: </array>
2129// CHECK: </dict>
2130// CHECK: <dict>
2131// CHECK: <key>kind</key><string>control</string>
2132// CHECK: <key>edges</key>
2133// CHECK: <array>
2134// CHECK: <dict>
2135// CHECK: <key>start</key>
2136// CHECK: <array>
2137// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00002138// CHECK: <key>line</key><integer>142</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00002139// CHECK: <key>col</key><integer>3</integer>
2140// CHECK: <key>file</key><integer>0</integer>
2141// CHECK: </dict>
2142// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00002143// CHECK: <key>line</key><integer>142</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00002144// CHECK: <key>col</key><integer>9</integer>
2145// CHECK: <key>file</key><integer>0</integer>
2146// CHECK: </dict>
2147// CHECK: </array>
2148// CHECK: <key>end</key>
2149// CHECK: <array>
2150// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00002151// CHECK: <key>line</key><integer>142</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00002152// CHECK: <key>col</key><integer>11</integer>
2153// CHECK: <key>file</key><integer>0</integer>
2154// CHECK: </dict>
2155// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00002156// CHECK: <key>line</key><integer>142</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00002157// CHECK: <key>col</key><integer>11</integer>
2158// CHECK: <key>file</key><integer>0</integer>
2159// CHECK: </dict>
2160// CHECK: </array>
2161// CHECK: </dict>
2162// CHECK: </array>
2163// CHECK: </dict>
2164// CHECK: <dict>
2165// CHECK: <key>kind</key><string>event</string>
2166// CHECK: <key>location</key>
2167// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00002168// CHECK: <key>line</key><integer>142</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00002169// CHECK: <key>col</key><integer>11</integer>
2170// CHECK: <key>file</key><integer>0</integer>
2171// CHECK: </dict>
2172// CHECK: <key>ranges</key>
2173// CHECK: <array>
2174// CHECK: <array>
2175// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00002176// CHECK: <key>line</key><integer>142</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00002177// CHECK: <key>col</key><integer>11</integer>
2178// CHECK: <key>file</key><integer>0</integer>
2179// CHECK: </dict>
2180// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00002181// CHECK: <key>line</key><integer>142</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00002182// CHECK: <key>col</key><integer>11</integer>
2183// CHECK: <key>file</key><integer>0</integer>
2184// CHECK: </dict>
2185// CHECK: </array>
2186// CHECK: </array>
2187// CHECK: <key>depth</key><integer>0</integer>
2188// CHECK: <key>extended_message</key>
Gabor Horvath1cbf4352015-09-08 21:04:14 +00002189// CHECK: <string>Conversion from value of type &apos;MutableArray&lt;NSString *&gt; *&apos; to incompatible type &apos;NSArray&lt;NSNumber *&gt; *&apos;</string>
Gabor Horvath717b51c2015-08-21 00:18:28 +00002190// CHECK: <key>message</key>
Gabor Horvath1cbf4352015-09-08 21:04:14 +00002191// CHECK: <string>Conversion from value of type &apos;MutableArray&lt;NSString *&gt; *&apos; to incompatible type &apos;NSArray&lt;NSNumber *&gt; *&apos;</string>
Gabor Horvath717b51c2015-08-21 00:18:28 +00002192// CHECK: </dict>
2193// CHECK: </array>
Gabor Horvath1cbf4352015-09-08 21:04:14 +00002194// CHECK: <key>description</key><string>Conversion from value of type &apos;MutableArray&lt;NSString *&gt; *&apos; to incompatible type &apos;NSArray&lt;NSNumber *&gt; *&apos;</string>
Gabor Horvath717b51c2015-08-21 00:18:28 +00002195// CHECK: <key>category</key><string>Core Foundation/Objective-C</string>
2196// CHECK: <key>type</key><string>Generics</string>
Gabor Horvathc0c7a5d2015-09-13 23:02:24 +00002197// CHECK: <key>check_name</key><string>core.DynamicTypePropagation</string>
Gabor Horvath717b51c2015-08-21 00:18:28 +00002198// CHECK: <key>issue_context_kind</key><string>function</string>
2199// CHECK: <key>issue_context</key><string>verifyAPIusage</string>
2200// CHECK: <key>issue_hash</key><string>2</string>
2201// CHECK: <key>location</key>
2202// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00002203// CHECK: <key>line</key><integer>142</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00002204// CHECK: <key>col</key><integer>11</integer>
2205// CHECK: <key>file</key><integer>0</integer>
2206// CHECK: </dict>
2207// CHECK: </dict>
2208// CHECK: <dict>
2209// CHECK: <key>path</key>
2210// CHECK: <array>
2211// CHECK: <dict>
2212// CHECK: <key>kind</key><string>event</string>
2213// CHECK: <key>location</key>
2214// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00002215// CHECK: <key>line</key><integer>147</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00002216// CHECK: <key>col</key><integer>7</integer>
2217// CHECK: <key>file</key><integer>0</integer>
2218// CHECK: </dict>
2219// CHECK: <key>ranges</key>
2220// CHECK: <array>
2221// CHECK: <array>
2222// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00002223// CHECK: <key>line</key><integer>147</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00002224// CHECK: <key>col</key><integer>7</integer>
2225// CHECK: <key>file</key><integer>0</integer>
2226// CHECK: </dict>
2227// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00002228// CHECK: <key>line</key><integer>147</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00002229// CHECK: <key>col</key><integer>42</integer>
2230// CHECK: <key>file</key><integer>0</integer>
2231// CHECK: </dict>
2232// CHECK: </array>
2233// CHECK: </array>
2234// CHECK: <key>depth</key><integer>0</integer>
2235// CHECK: <key>extended_message</key>
Gabor Horvath03dc4732015-08-25 16:38:05 +00002236// CHECK: <string>Type &apos;MutableArray&lt;NSMutableString *&gt; *&apos; is inferred from explicit cast (from &apos;MutableArray *&apos; to &apos;MutableArray&lt;NSMutableString *&gt; *&apos;)</string>
Gabor Horvath717b51c2015-08-21 00:18:28 +00002237// CHECK: <key>message</key>
Gabor Horvath03dc4732015-08-25 16:38:05 +00002238// CHECK: <string>Type &apos;MutableArray&lt;NSMutableString *&gt; *&apos; is inferred from explicit cast (from &apos;MutableArray *&apos; to &apos;MutableArray&lt;NSMutableString *&gt; *&apos;)</string>
Gabor Horvath717b51c2015-08-21 00:18:28 +00002239// CHECK: </dict>
2240// CHECK: <dict>
2241// CHECK: <key>kind</key><string>control</string>
2242// CHECK: <key>edges</key>
2243// CHECK: <array>
2244// CHECK: <dict>
2245// CHECK: <key>start</key>
2246// CHECK: <array>
2247// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00002248// CHECK: <key>line</key><integer>147</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00002249// CHECK: <key>col</key><integer>3</integer>
2250// CHECK: <key>file</key><integer>0</integer>
2251// CHECK: </dict>
2252// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00002253// CHECK: <key>line</key><integer>147</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00002254// CHECK: <key>col</key><integer>3</integer>
2255// CHECK: <key>file</key><integer>0</integer>
2256// CHECK: </dict>
2257// CHECK: </array>
2258// CHECK: <key>end</key>
2259// CHECK: <array>
2260// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00002261// CHECK: <key>line</key><integer>148</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00002262// CHECK: <key>col</key><integer>3</integer>
2263// CHECK: <key>file</key><integer>0</integer>
2264// CHECK: </dict>
2265// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00002266// CHECK: <key>line</key><integer>148</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00002267// CHECK: <key>col</key><integer>3</integer>
2268// CHECK: <key>file</key><integer>0</integer>
2269// CHECK: </dict>
2270// CHECK: </array>
2271// CHECK: </dict>
2272// CHECK: </array>
2273// CHECK: </dict>
2274// CHECK: <dict>
2275// CHECK: <key>kind</key><string>event</string>
2276// CHECK: <key>location</key>
2277// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00002278// CHECK: <key>line</key><integer>148</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00002279// CHECK: <key>col</key><integer>3</integer>
2280// CHECK: <key>file</key><integer>0</integer>
2281// CHECK: </dict>
2282// CHECK: <key>ranges</key>
2283// CHECK: <array>
2284// CHECK: <array>
2285// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00002286// CHECK: <key>line</key><integer>148</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00002287// CHECK: <key>col</key><integer>17</integer>
2288// CHECK: <key>file</key><integer>0</integer>
2289// CHECK: </dict>
2290// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00002291// CHECK: <key>line</key><integer>148</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00002292// CHECK: <key>col</key><integer>39</integer>
2293// CHECK: <key>file</key><integer>0</integer>
2294// CHECK: </dict>
2295// CHECK: </array>
2296// CHECK: </array>
2297// CHECK: <key>depth</key><integer>0</integer>
2298// CHECK: <key>extended_message</key>
Gabor Horvath1cbf4352015-09-08 21:04:14 +00002299// CHECK: <string>Conversion from value of type &apos;NSString *&apos; to incompatible type &apos;NSMutableString *&apos;</string>
Gabor Horvath717b51c2015-08-21 00:18:28 +00002300// CHECK: <key>message</key>
Gabor Horvath1cbf4352015-09-08 21:04:14 +00002301// CHECK: <string>Conversion from value of type &apos;NSString *&apos; to incompatible type &apos;NSMutableString *&apos;</string>
Gabor Horvath717b51c2015-08-21 00:18:28 +00002302// CHECK: </dict>
2303// CHECK: </array>
Gabor Horvath1cbf4352015-09-08 21:04:14 +00002304// CHECK: <key>description</key><string>Conversion from value of type &apos;NSString *&apos; to incompatible type &apos;NSMutableString *&apos;</string>
Gabor Horvath717b51c2015-08-21 00:18:28 +00002305// CHECK: <key>category</key><string>Core Foundation/Objective-C</string>
2306// CHECK: <key>type</key><string>Generics</string>
Gabor Horvathc0c7a5d2015-09-13 23:02:24 +00002307// CHECK: <key>check_name</key><string>core.DynamicTypePropagation</string>
Gabor Horvath717b51c2015-08-21 00:18:28 +00002308// CHECK: <key>issue_context_kind</key><string>function</string>
2309// CHECK: <key>issue_context</key><string>trustExplicitCasts</string>
2310// CHECK: <key>issue_hash</key><string>2</string>
2311// CHECK: <key>location</key>
2312// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00002313// CHECK: <key>line</key><integer>148</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00002314// CHECK: <key>col</key><integer>3</integer>
2315// CHECK: <key>file</key><integer>0</integer>
2316// CHECK: </dict>
2317// CHECK: </dict>
2318// CHECK: <dict>
2319// CHECK: <key>path</key>
2320// CHECK: <array>
2321// CHECK: <dict>
2322// CHECK: <key>kind</key><string>control</string>
2323// CHECK: <key>edges</key>
2324// CHECK: <array>
2325// CHECK: <dict>
2326// CHECK: <key>start</key>
2327// CHECK: <array>
2328// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00002329// CHECK: <key>line</key><integer>154</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00002330// CHECK: <key>col</key><integer>3</integer>
2331// CHECK: <key>file</key><integer>0</integer>
2332// CHECK: </dict>
2333// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00002334// CHECK: <key>line</key><integer>154</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00002335// CHECK: <key>col</key><integer>3</integer>
2336// CHECK: <key>file</key><integer>0</integer>
2337// CHECK: </dict>
2338// CHECK: </array>
2339// CHECK: <key>end</key>
2340// CHECK: <array>
2341// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00002342// CHECK: <key>line</key><integer>155</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00002343// CHECK: <key>col</key><integer>3</integer>
2344// CHECK: <key>file</key><integer>0</integer>
2345// CHECK: </dict>
2346// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00002347// CHECK: <key>line</key><integer>155</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00002348// CHECK: <key>col</key><integer>3</integer>
2349// CHECK: <key>file</key><integer>0</integer>
2350// CHECK: </dict>
2351// CHECK: </array>
2352// CHECK: </dict>
2353// CHECK: </array>
2354// CHECK: </dict>
2355// CHECK: <dict>
2356// CHECK: <key>kind</key><string>event</string>
2357// CHECK: <key>location</key>
2358// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00002359// CHECK: <key>line</key><integer>155</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00002360// CHECK: <key>col</key><integer>7</integer>
2361// CHECK: <key>file</key><integer>0</integer>
2362// CHECK: </dict>
2363// CHECK: <key>ranges</key>
2364// CHECK: <array>
2365// CHECK: <array>
2366// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00002367// CHECK: <key>line</key><integer>155</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00002368// CHECK: <key>col</key><integer>7</integer>
2369// CHECK: <key>file</key><integer>0</integer>
2370// CHECK: </dict>
2371// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00002372// CHECK: <key>line</key><integer>155</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00002373// CHECK: <key>col</key><integer>7</integer>
2374// CHECK: <key>file</key><integer>0</integer>
2375// CHECK: </dict>
2376// CHECK: </array>
2377// CHECK: </array>
2378// CHECK: <key>depth</key><integer>0</integer>
2379// CHECK: <key>extended_message</key>
Gabor Horvath03dc4732015-08-25 16:38:05 +00002380// CHECK: <string>Type &apos;MutableArray&lt;NSString *&gt; *&apos; is inferred from implicit cast (from &apos;id&apos; to &apos;MutableArray&lt;NSString *&gt; *&apos;)</string>
Gabor Horvath717b51c2015-08-21 00:18:28 +00002381// CHECK: <key>message</key>
Gabor Horvath03dc4732015-08-25 16:38:05 +00002382// CHECK: <string>Type &apos;MutableArray&lt;NSString *&gt; *&apos; is inferred from implicit cast (from &apos;id&apos; to &apos;MutableArray&lt;NSString *&gt; *&apos;)</string>
Gabor Horvath717b51c2015-08-21 00:18:28 +00002383// CHECK: </dict>
2384// CHECK: <dict>
2385// CHECK: <key>kind</key><string>control</string>
2386// CHECK: <key>edges</key>
2387// CHECK: <array>
2388// CHECK: <dict>
2389// CHECK: <key>start</key>
2390// CHECK: <array>
2391// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00002392// CHECK: <key>line</key><integer>155</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00002393// CHECK: <key>col</key><integer>3</integer>
2394// CHECK: <key>file</key><integer>0</integer>
2395// CHECK: </dict>
2396// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00002397// CHECK: <key>line</key><integer>155</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00002398// CHECK: <key>col</key><integer>3</integer>
2399// CHECK: <key>file</key><integer>0</integer>
2400// CHECK: </dict>
2401// CHECK: </array>
2402// CHECK: <key>end</key>
2403// CHECK: <array>
2404// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00002405// CHECK: <key>line</key><integer>156</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00002406// CHECK: <key>col</key><integer>3</integer>
2407// CHECK: <key>file</key><integer>0</integer>
2408// CHECK: </dict>
2409// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00002410// CHECK: <key>line</key><integer>156</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00002411// CHECK: <key>col</key><integer>3</integer>
2412// CHECK: <key>file</key><integer>0</integer>
2413// CHECK: </dict>
2414// CHECK: </array>
2415// CHECK: </dict>
2416// CHECK: </array>
2417// CHECK: </dict>
2418// CHECK: <dict>
2419// CHECK: <key>kind</key><string>control</string>
2420// CHECK: <key>edges</key>
2421// CHECK: <array>
2422// CHECK: <dict>
2423// CHECK: <key>start</key>
2424// CHECK: <array>
2425// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00002426// CHECK: <key>line</key><integer>156</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00002427// CHECK: <key>col</key><integer>3</integer>
2428// CHECK: <key>file</key><integer>0</integer>
2429// CHECK: </dict>
2430// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00002431// CHECK: <key>line</key><integer>156</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00002432// CHECK: <key>col</key><integer>3</integer>
2433// CHECK: <key>file</key><integer>0</integer>
2434// CHECK: </dict>
2435// CHECK: </array>
2436// CHECK: <key>end</key>
2437// CHECK: <array>
2438// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00002439// CHECK: <key>line</key><integer>156</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00002440// CHECK: <key>col</key><integer>7</integer>
2441// CHECK: <key>file</key><integer>0</integer>
2442// CHECK: </dict>
2443// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00002444// CHECK: <key>line</key><integer>156</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00002445// CHECK: <key>col</key><integer>7</integer>
2446// CHECK: <key>file</key><integer>0</integer>
2447// CHECK: </dict>
2448// CHECK: </array>
2449// CHECK: </dict>
2450// CHECK: </array>
2451// CHECK: </dict>
2452// CHECK: <dict>
2453// CHECK: <key>kind</key><string>event</string>
2454// CHECK: <key>location</key>
2455// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00002456// CHECK: <key>line</key><integer>156</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00002457// CHECK: <key>col</key><integer>7</integer>
2458// CHECK: <key>file</key><integer>0</integer>
2459// CHECK: </dict>
2460// CHECK: <key>ranges</key>
2461// CHECK: <array>
2462// CHECK: <array>
2463// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00002464// CHECK: <key>line</key><integer>156</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00002465// CHECK: <key>col</key><integer>7</integer>
2466// CHECK: <key>file</key><integer>0</integer>
2467// CHECK: </dict>
2468// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00002469// CHECK: <key>line</key><integer>156</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00002470// CHECK: <key>col</key><integer>7</integer>
2471// CHECK: <key>file</key><integer>0</integer>
2472// CHECK: </dict>
2473// CHECK: </array>
2474// CHECK: </array>
2475// CHECK: <key>depth</key><integer>0</integer>
2476// CHECK: <key>extended_message</key>
Gabor Horvath1cbf4352015-09-08 21:04:14 +00002477// CHECK: <string>Conversion from value of type &apos;MutableArray&lt;NSString *&gt; *&apos; to incompatible type &apos;MutableArray&lt;NSNumber *&gt; *&apos;</string>
Gabor Horvath717b51c2015-08-21 00:18:28 +00002478// CHECK: <key>message</key>
Gabor Horvath1cbf4352015-09-08 21:04:14 +00002479// CHECK: <string>Conversion from value of type &apos;MutableArray&lt;NSString *&gt; *&apos; to incompatible type &apos;MutableArray&lt;NSNumber *&gt; *&apos;</string>
Gabor Horvath717b51c2015-08-21 00:18:28 +00002480// CHECK: </dict>
2481// CHECK: </array>
Gabor Horvath1cbf4352015-09-08 21:04:14 +00002482// CHECK: <key>description</key><string>Conversion from value of type &apos;MutableArray&lt;NSString *&gt; *&apos; to incompatible type &apos;MutableArray&lt;NSNumber *&gt; *&apos;</string>
Gabor Horvath717b51c2015-08-21 00:18:28 +00002483// CHECK: <key>category</key><string>Core Foundation/Objective-C</string>
2484// CHECK: <key>type</key><string>Generics</string>
Gabor Horvathc0c7a5d2015-09-13 23:02:24 +00002485// CHECK: <key>check_name</key><string>core.DynamicTypePropagation</string>
Gabor Horvath717b51c2015-08-21 00:18:28 +00002486// CHECK: <key>issue_context_kind</key><string>function</string>
2487// CHECK: <key>issue_context</key><string>subtypeOfGeneric</string>
2488// CHECK: <key>issue_hash</key><string>3</string>
2489// CHECK: <key>location</key>
2490// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00002491// CHECK: <key>line</key><integer>156</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00002492// CHECK: <key>col</key><integer>7</integer>
2493// CHECK: <key>file</key><integer>0</integer>
2494// CHECK: </dict>
2495// CHECK: </dict>
2496// CHECK: <dict>
2497// CHECK: <key>path</key>
2498// CHECK: <array>
2499// CHECK: <dict>
2500// CHECK: <key>kind</key><string>event</string>
2501// CHECK: <key>location</key>
2502// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00002503// CHECK: <key>line</key><integer>162</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00002504// CHECK: <key>col</key><integer>7</integer>
2505// CHECK: <key>file</key><integer>0</integer>
2506// CHECK: </dict>
2507// CHECK: <key>ranges</key>
2508// CHECK: <array>
2509// CHECK: <array>
2510// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00002511// CHECK: <key>line</key><integer>162</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00002512// CHECK: <key>col</key><integer>7</integer>
2513// CHECK: <key>file</key><integer>0</integer>
2514// CHECK: </dict>
2515// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00002516// CHECK: <key>line</key><integer>162</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00002517// CHECK: <key>col</key><integer>7</integer>
2518// CHECK: <key>file</key><integer>0</integer>
2519// CHECK: </dict>
2520// CHECK: </array>
2521// CHECK: </array>
2522// CHECK: <key>depth</key><integer>0</integer>
2523// CHECK: <key>extended_message</key>
Gabor Horvath03dc4732015-08-25 16:38:05 +00002524// CHECK: <string>Type &apos;ExceptionalArray&lt;NSString *&gt; *&apos; is inferred from implicit cast (from &apos;ExceptionalArray&lt;NSString *&gt; *&apos; to &apos;id&apos;)</string>
Gabor Horvath717b51c2015-08-21 00:18:28 +00002525// CHECK: <key>message</key>
Gabor Horvath03dc4732015-08-25 16:38:05 +00002526// CHECK: <string>Type &apos;ExceptionalArray&lt;NSString *&gt; *&apos; is inferred from implicit cast (from &apos;ExceptionalArray&lt;NSString *&gt; *&apos; to &apos;id&apos;)</string>
Gabor Horvath717b51c2015-08-21 00:18:28 +00002527// CHECK: </dict>
2528// CHECK: <dict>
2529// CHECK: <key>kind</key><string>control</string>
2530// CHECK: <key>edges</key>
2531// CHECK: <array>
2532// CHECK: <dict>
2533// CHECK: <key>start</key>
2534// CHECK: <array>
2535// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00002536// CHECK: <key>line</key><integer>162</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00002537// CHECK: <key>col</key><integer>3</integer>
2538// CHECK: <key>file</key><integer>0</integer>
2539// CHECK: </dict>
2540// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00002541// CHECK: <key>line</key><integer>162</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00002542// CHECK: <key>col</key><integer>3</integer>
2543// CHECK: <key>file</key><integer>0</integer>
2544// CHECK: </dict>
2545// CHECK: </array>
2546// CHECK: <key>end</key>
2547// CHECK: <array>
2548// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00002549// CHECK: <key>line</key><integer>164</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00002550// CHECK: <key>col</key><integer>3</integer>
2551// CHECK: <key>file</key><integer>0</integer>
2552// CHECK: </dict>
2553// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00002554// CHECK: <key>line</key><integer>164</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00002555// CHECK: <key>col</key><integer>3</integer>
2556// CHECK: <key>file</key><integer>0</integer>
2557// CHECK: </dict>
2558// CHECK: </array>
2559// CHECK: </dict>
2560// CHECK: </array>
2561// CHECK: </dict>
2562// CHECK: <dict>
2563// CHECK: <key>kind</key><string>event</string>
2564// CHECK: <key>location</key>
2565// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00002566// CHECK: <key>line</key><integer>164</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00002567// CHECK: <key>col</key><integer>3</integer>
2568// CHECK: <key>file</key><integer>0</integer>
2569// CHECK: </dict>
2570// CHECK: <key>ranges</key>
2571// CHECK: <array>
2572// CHECK: <array>
2573// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00002574// CHECK: <key>line</key><integer>164</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00002575// CHECK: <key>col</key><integer>16</integer>
2576// CHECK: <key>file</key><integer>0</integer>
2577// CHECK: </dict>
2578// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00002579// CHECK: <key>line</key><integer>164</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00002580// CHECK: <key>col</key><integer>38</integer>
2581// CHECK: <key>file</key><integer>0</integer>
2582// CHECK: </dict>
2583// CHECK: </array>
2584// CHECK: </array>
2585// CHECK: <key>depth</key><integer>0</integer>
2586// CHECK: <key>extended_message</key>
Gabor Horvath1cbf4352015-09-08 21:04:14 +00002587// CHECK: <string>Conversion from value of type &apos;NSNumber *&apos; to incompatible type &apos;NSString *&apos;</string>
Gabor Horvath717b51c2015-08-21 00:18:28 +00002588// CHECK: <key>message</key>
Gabor Horvath1cbf4352015-09-08 21:04:14 +00002589// CHECK: <string>Conversion from value of type &apos;NSNumber *&apos; to incompatible type &apos;NSString *&apos;</string>
Gabor Horvath717b51c2015-08-21 00:18:28 +00002590// CHECK: </dict>
2591// CHECK: </array>
Gabor Horvath1cbf4352015-09-08 21:04:14 +00002592// CHECK: <key>description</key><string>Conversion from value of type &apos;NSNumber *&apos; to incompatible type &apos;NSString *&apos;</string>
Gabor Horvath717b51c2015-08-21 00:18:28 +00002593// CHECK: <key>category</key><string>Core Foundation/Objective-C</string>
2594// CHECK: <key>type</key><string>Generics</string>
Gabor Horvathc0c7a5d2015-09-13 23:02:24 +00002595// CHECK: <key>check_name</key><string>core.DynamicTypePropagation</string>
Gabor Horvath717b51c2015-08-21 00:18:28 +00002596// CHECK: <key>issue_context_kind</key><string>function</string>
2597// CHECK: <key>issue_context</key><string>genericSubtypeOfGeneric</string>
2598// CHECK: <key>issue_hash</key><string>3</string>
2599// CHECK: <key>location</key>
2600// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00002601// CHECK: <key>line</key><integer>164</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00002602// CHECK: <key>col</key><integer>3</integer>
2603// CHECK: <key>file</key><integer>0</integer>
2604// CHECK: </dict>
2605// CHECK: </dict>
2606// CHECK: <dict>
2607// CHECK: <key>path</key>
2608// CHECK: <array>
2609// CHECK: <dict>
2610// CHECK: <key>kind</key><string>event</string>
2611// CHECK: <key>location</key>
2612// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00002613// CHECK: <key>line</key><integer>162</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00002614// CHECK: <key>col</key><integer>7</integer>
2615// CHECK: <key>file</key><integer>0</integer>
2616// CHECK: </dict>
2617// CHECK: <key>ranges</key>
2618// CHECK: <array>
2619// CHECK: <array>
2620// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00002621// CHECK: <key>line</key><integer>162</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00002622// CHECK: <key>col</key><integer>7</integer>
2623// CHECK: <key>file</key><integer>0</integer>
2624// CHECK: </dict>
2625// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00002626// CHECK: <key>line</key><integer>162</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00002627// CHECK: <key>col</key><integer>7</integer>
2628// CHECK: <key>file</key><integer>0</integer>
2629// CHECK: </dict>
2630// CHECK: </array>
2631// CHECK: </array>
2632// CHECK: <key>depth</key><integer>0</integer>
2633// CHECK: <key>extended_message</key>
Gabor Horvath03dc4732015-08-25 16:38:05 +00002634// CHECK: <string>Type &apos;ExceptionalArray&lt;NSString *&gt; *&apos; is inferred from implicit cast (from &apos;ExceptionalArray&lt;NSString *&gt; *&apos; to &apos;id&apos;)</string>
Gabor Horvath717b51c2015-08-21 00:18:28 +00002635// CHECK: <key>message</key>
Gabor Horvath03dc4732015-08-25 16:38:05 +00002636// CHECK: <string>Type &apos;ExceptionalArray&lt;NSString *&gt; *&apos; is inferred from implicit cast (from &apos;ExceptionalArray&lt;NSString *&gt; *&apos; to &apos;id&apos;)</string>
Gabor Horvath717b51c2015-08-21 00:18:28 +00002637// CHECK: </dict>
2638// CHECK: <dict>
2639// CHECK: <key>kind</key><string>control</string>
2640// CHECK: <key>edges</key>
2641// CHECK: <array>
2642// CHECK: <dict>
2643// CHECK: <key>start</key>
2644// CHECK: <array>
2645// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00002646// CHECK: <key>line</key><integer>162</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00002647// CHECK: <key>col</key><integer>3</integer>
2648// CHECK: <key>file</key><integer>0</integer>
2649// CHECK: </dict>
2650// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00002651// CHECK: <key>line</key><integer>162</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00002652// CHECK: <key>col</key><integer>3</integer>
2653// CHECK: <key>file</key><integer>0</integer>
2654// CHECK: </dict>
2655// CHECK: </array>
2656// CHECK: <key>end</key>
2657// CHECK: <array>
2658// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00002659// CHECK: <key>line</key><integer>166</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00002660// CHECK: <key>col</key><integer>3</integer>
2661// CHECK: <key>file</key><integer>0</integer>
2662// CHECK: </dict>
2663// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00002664// CHECK: <key>line</key><integer>166</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00002665// CHECK: <key>col</key><integer>3</integer>
2666// CHECK: <key>file</key><integer>0</integer>
2667// CHECK: </dict>
2668// CHECK: </array>
2669// CHECK: </dict>
2670// CHECK: </array>
2671// CHECK: </dict>
2672// CHECK: <dict>
2673// CHECK: <key>kind</key><string>control</string>
2674// CHECK: <key>edges</key>
2675// CHECK: <array>
2676// CHECK: <dict>
2677// CHECK: <key>start</key>
2678// CHECK: <array>
2679// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00002680// CHECK: <key>line</key><integer>166</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00002681// CHECK: <key>col</key><integer>3</integer>
2682// CHECK: <key>file</key><integer>0</integer>
2683// CHECK: </dict>
2684// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00002685// CHECK: <key>line</key><integer>166</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00002686// CHECK: <key>col</key><integer>3</integer>
2687// CHECK: <key>file</key><integer>0</integer>
2688// CHECK: </dict>
2689// CHECK: </array>
2690// CHECK: <key>end</key>
2691// CHECK: <array>
2692// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00002693// CHECK: <key>line</key><integer>166</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00002694// CHECK: <key>col</key><integer>7</integer>
2695// CHECK: <key>file</key><integer>0</integer>
2696// CHECK: </dict>
2697// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00002698// CHECK: <key>line</key><integer>166</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00002699// CHECK: <key>col</key><integer>7</integer>
2700// CHECK: <key>file</key><integer>0</integer>
2701// CHECK: </dict>
2702// CHECK: </array>
2703// CHECK: </dict>
2704// CHECK: </array>
2705// CHECK: </dict>
2706// CHECK: <dict>
2707// CHECK: <key>kind</key><string>event</string>
2708// CHECK: <key>location</key>
2709// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00002710// CHECK: <key>line</key><integer>166</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00002711// CHECK: <key>col</key><integer>7</integer>
2712// CHECK: <key>file</key><integer>0</integer>
2713// CHECK: </dict>
2714// CHECK: <key>ranges</key>
2715// CHECK: <array>
2716// CHECK: <array>
2717// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00002718// CHECK: <key>line</key><integer>166</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00002719// CHECK: <key>col</key><integer>7</integer>
2720// CHECK: <key>file</key><integer>0</integer>
2721// CHECK: </dict>
2722// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00002723// CHECK: <key>line</key><integer>166</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00002724// CHECK: <key>col</key><integer>7</integer>
2725// CHECK: <key>file</key><integer>0</integer>
2726// CHECK: </dict>
2727// CHECK: </array>
2728// CHECK: </array>
2729// CHECK: <key>depth</key><integer>0</integer>
2730// CHECK: <key>extended_message</key>
Gabor Horvath1cbf4352015-09-08 21:04:14 +00002731// CHECK: <string>Conversion from value of type &apos;ExceptionalArray&lt;NSString *&gt; *&apos; to incompatible type &apos;MutableArray&lt;NSNumber *&gt; *&apos;</string>
Gabor Horvath717b51c2015-08-21 00:18:28 +00002732// CHECK: <key>message</key>
Gabor Horvath1cbf4352015-09-08 21:04:14 +00002733// CHECK: <string>Conversion from value of type &apos;ExceptionalArray&lt;NSString *&gt; *&apos; to incompatible type &apos;MutableArray&lt;NSNumber *&gt; *&apos;</string>
Gabor Horvath717b51c2015-08-21 00:18:28 +00002734// CHECK: </dict>
2735// CHECK: </array>
Gabor Horvath1cbf4352015-09-08 21:04:14 +00002736// CHECK: <key>description</key><string>Conversion from value of type &apos;ExceptionalArray&lt;NSString *&gt; *&apos; to incompatible type &apos;MutableArray&lt;NSNumber *&gt; *&apos;</string>
Gabor Horvath717b51c2015-08-21 00:18:28 +00002737// CHECK: <key>category</key><string>Core Foundation/Objective-C</string>
2738// CHECK: <key>type</key><string>Generics</string>
Gabor Horvathc0c7a5d2015-09-13 23:02:24 +00002739// CHECK: <key>check_name</key><string>core.DynamicTypePropagation</string>
Gabor Horvath717b51c2015-08-21 00:18:28 +00002740// CHECK: <key>issue_context_kind</key><string>function</string>
2741// CHECK: <key>issue_context</key><string>genericSubtypeOfGeneric</string>
2742// CHECK: <key>issue_hash</key><string>5</string>
2743// CHECK: <key>location</key>
2744// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00002745// CHECK: <key>line</key><integer>166</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00002746// CHECK: <key>col</key><integer>7</integer>
2747// CHECK: <key>file</key><integer>0</integer>
2748// CHECK: </dict>
2749// CHECK: </dict>
2750// CHECK: <dict>
2751// CHECK: <key>path</key>
2752// CHECK: <array>
2753// CHECK: <dict>
2754// CHECK: <key>kind</key><string>event</string>
2755// CHECK: <key>location</key>
2756// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00002757// CHECK: <key>line</key><integer>172</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00002758// CHECK: <key>col</key><integer>7</integer>
2759// CHECK: <key>file</key><integer>0</integer>
2760// CHECK: </dict>
2761// CHECK: <key>ranges</key>
2762// CHECK: <array>
2763// CHECK: <array>
2764// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00002765// CHECK: <key>line</key><integer>172</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00002766// CHECK: <key>col</key><integer>7</integer>
2767// CHECK: <key>file</key><integer>0</integer>
2768// CHECK: </dict>
2769// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00002770// CHECK: <key>line</key><integer>172</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00002771// CHECK: <key>col</key><integer>7</integer>
2772// CHECK: <key>file</key><integer>0</integer>
2773// CHECK: </dict>
2774// CHECK: </array>
2775// CHECK: </array>
2776// CHECK: <key>depth</key><integer>0</integer>
2777// CHECK: <key>extended_message</key>
Gabor Horvath03dc4732015-08-25 16:38:05 +00002778// CHECK: <string>Type &apos;ExceptionalArray&lt;NSString *&gt; *&apos; is inferred from implicit cast (from &apos;id&apos; to &apos;ExceptionalArray&lt;NSString *&gt; *&apos;)</string>
Gabor Horvath717b51c2015-08-21 00:18:28 +00002779// CHECK: <key>message</key>
Gabor Horvath03dc4732015-08-25 16:38:05 +00002780// CHECK: <string>Type &apos;ExceptionalArray&lt;NSString *&gt; *&apos; is inferred from implicit cast (from &apos;id&apos; to &apos;ExceptionalArray&lt;NSString *&gt; *&apos;)</string>
Gabor Horvath717b51c2015-08-21 00:18:28 +00002781// CHECK: </dict>
2782// CHECK: <dict>
2783// CHECK: <key>kind</key><string>control</string>
2784// CHECK: <key>edges</key>
2785// CHECK: <array>
2786// CHECK: <dict>
2787// CHECK: <key>start</key>
2788// CHECK: <array>
2789// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00002790// CHECK: <key>line</key><integer>172</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00002791// CHECK: <key>col</key><integer>3</integer>
2792// CHECK: <key>file</key><integer>0</integer>
2793// CHECK: </dict>
2794// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00002795// CHECK: <key>line</key><integer>172</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00002796// CHECK: <key>col</key><integer>3</integer>
2797// CHECK: <key>file</key><integer>0</integer>
2798// CHECK: </dict>
2799// CHECK: </array>
2800// CHECK: <key>end</key>
2801// CHECK: <array>
2802// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00002803// CHECK: <key>line</key><integer>174</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00002804// CHECK: <key>col</key><integer>3</integer>
2805// CHECK: <key>file</key><integer>0</integer>
2806// CHECK: </dict>
2807// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00002808// CHECK: <key>line</key><integer>174</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00002809// CHECK: <key>col</key><integer>3</integer>
2810// CHECK: <key>file</key><integer>0</integer>
2811// CHECK: </dict>
2812// CHECK: </array>
2813// CHECK: </dict>
2814// CHECK: </array>
2815// CHECK: </dict>
2816// CHECK: <dict>
2817// CHECK: <key>kind</key><string>event</string>
2818// CHECK: <key>location</key>
2819// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00002820// CHECK: <key>line</key><integer>174</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00002821// CHECK: <key>col</key><integer>3</integer>
2822// CHECK: <key>file</key><integer>0</integer>
2823// CHECK: </dict>
2824// CHECK: <key>ranges</key>
2825// CHECK: <array>
2826// CHECK: <array>
2827// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00002828// CHECK: <key>line</key><integer>174</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00002829// CHECK: <key>col</key><integer>16</integer>
2830// CHECK: <key>file</key><integer>0</integer>
2831// CHECK: </dict>
2832// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00002833// CHECK: <key>line</key><integer>174</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00002834// CHECK: <key>col</key><integer>38</integer>
2835// CHECK: <key>file</key><integer>0</integer>
2836// CHECK: </dict>
2837// CHECK: </array>
2838// CHECK: </array>
2839// CHECK: <key>depth</key><integer>0</integer>
2840// CHECK: <key>extended_message</key>
Gabor Horvath1cbf4352015-09-08 21:04:14 +00002841// CHECK: <string>Conversion from value of type &apos;NSNumber *&apos; to incompatible type &apos;NSString *&apos;</string>
Gabor Horvath717b51c2015-08-21 00:18:28 +00002842// CHECK: <key>message</key>
Gabor Horvath1cbf4352015-09-08 21:04:14 +00002843// CHECK: <string>Conversion from value of type &apos;NSNumber *&apos; to incompatible type &apos;NSString *&apos;</string>
Gabor Horvath717b51c2015-08-21 00:18:28 +00002844// CHECK: </dict>
2845// CHECK: </array>
Gabor Horvath1cbf4352015-09-08 21:04:14 +00002846// CHECK: <key>description</key><string>Conversion from value of type &apos;NSNumber *&apos; to incompatible type &apos;NSString *&apos;</string>
Gabor Horvath717b51c2015-08-21 00:18:28 +00002847// CHECK: <key>category</key><string>Core Foundation/Objective-C</string>
2848// CHECK: <key>type</key><string>Generics</string>
Gabor Horvathc0c7a5d2015-09-13 23:02:24 +00002849// CHECK: <key>check_name</key><string>core.DynamicTypePropagation</string>
Gabor Horvath717b51c2015-08-21 00:18:28 +00002850// CHECK: <key>issue_context_kind</key><string>function</string>
2851// CHECK: <key>issue_context</key><string>genericSubtypeOfGenericReverse</string>
2852// CHECK: <key>issue_hash</key><string>3</string>
2853// CHECK: <key>location</key>
2854// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00002855// CHECK: <key>line</key><integer>174</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00002856// CHECK: <key>col</key><integer>3</integer>
2857// CHECK: <key>file</key><integer>0</integer>
2858// CHECK: </dict>
2859// CHECK: </dict>
2860// CHECK: <dict>
2861// CHECK: <key>path</key>
2862// CHECK: <array>
2863// CHECK: <dict>
2864// CHECK: <key>kind</key><string>event</string>
2865// CHECK: <key>location</key>
2866// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00002867// CHECK: <key>line</key><integer>172</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00002868// CHECK: <key>col</key><integer>7</integer>
2869// CHECK: <key>file</key><integer>0</integer>
2870// CHECK: </dict>
2871// CHECK: <key>ranges</key>
2872// CHECK: <array>
2873// CHECK: <array>
2874// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00002875// CHECK: <key>line</key><integer>172</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00002876// CHECK: <key>col</key><integer>7</integer>
2877// CHECK: <key>file</key><integer>0</integer>
2878// CHECK: </dict>
2879// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00002880// CHECK: <key>line</key><integer>172</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00002881// CHECK: <key>col</key><integer>7</integer>
2882// CHECK: <key>file</key><integer>0</integer>
2883// CHECK: </dict>
2884// CHECK: </array>
2885// CHECK: </array>
2886// CHECK: <key>depth</key><integer>0</integer>
2887// CHECK: <key>extended_message</key>
Gabor Horvath03dc4732015-08-25 16:38:05 +00002888// CHECK: <string>Type &apos;ExceptionalArray&lt;NSString *&gt; *&apos; is inferred from implicit cast (from &apos;id&apos; to &apos;ExceptionalArray&lt;NSString *&gt; *&apos;)</string>
Gabor Horvath717b51c2015-08-21 00:18:28 +00002889// CHECK: <key>message</key>
Gabor Horvath03dc4732015-08-25 16:38:05 +00002890// CHECK: <string>Type &apos;ExceptionalArray&lt;NSString *&gt; *&apos; is inferred from implicit cast (from &apos;id&apos; to &apos;ExceptionalArray&lt;NSString *&gt; *&apos;)</string>
Gabor Horvath717b51c2015-08-21 00:18:28 +00002891// CHECK: </dict>
2892// CHECK: <dict>
2893// CHECK: <key>kind</key><string>control</string>
2894// CHECK: <key>edges</key>
2895// CHECK: <array>
2896// CHECK: <dict>
2897// CHECK: <key>start</key>
2898// CHECK: <array>
2899// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00002900// CHECK: <key>line</key><integer>172</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00002901// CHECK: <key>col</key><integer>3</integer>
2902// CHECK: <key>file</key><integer>0</integer>
2903// CHECK: </dict>
2904// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00002905// CHECK: <key>line</key><integer>172</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00002906// CHECK: <key>col</key><integer>3</integer>
2907// CHECK: <key>file</key><integer>0</integer>
2908// CHECK: </dict>
2909// CHECK: </array>
2910// CHECK: <key>end</key>
2911// CHECK: <array>
2912// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00002913// CHECK: <key>line</key><integer>176</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00002914// CHECK: <key>col</key><integer>3</integer>
2915// CHECK: <key>file</key><integer>0</integer>
2916// CHECK: </dict>
2917// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00002918// CHECK: <key>line</key><integer>176</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00002919// CHECK: <key>col</key><integer>3</integer>
2920// CHECK: <key>file</key><integer>0</integer>
2921// CHECK: </dict>
2922// CHECK: </array>
2923// CHECK: </dict>
2924// CHECK: </array>
2925// CHECK: </dict>
2926// CHECK: <dict>
2927// CHECK: <key>kind</key><string>control</string>
2928// CHECK: <key>edges</key>
2929// CHECK: <array>
2930// CHECK: <dict>
2931// CHECK: <key>start</key>
2932// CHECK: <array>
2933// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00002934// CHECK: <key>line</key><integer>176</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00002935// CHECK: <key>col</key><integer>3</integer>
2936// CHECK: <key>file</key><integer>0</integer>
2937// CHECK: </dict>
2938// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00002939// CHECK: <key>line</key><integer>176</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00002940// CHECK: <key>col</key><integer>3</integer>
2941// CHECK: <key>file</key><integer>0</integer>
2942// CHECK: </dict>
2943// CHECK: </array>
2944// CHECK: <key>end</key>
2945// CHECK: <array>
2946// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00002947// CHECK: <key>line</key><integer>176</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00002948// CHECK: <key>col</key><integer>7</integer>
2949// CHECK: <key>file</key><integer>0</integer>
2950// CHECK: </dict>
2951// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00002952// CHECK: <key>line</key><integer>176</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00002953// CHECK: <key>col</key><integer>7</integer>
2954// CHECK: <key>file</key><integer>0</integer>
2955// CHECK: </dict>
2956// CHECK: </array>
2957// CHECK: </dict>
2958// CHECK: </array>
2959// CHECK: </dict>
2960// CHECK: <dict>
2961// CHECK: <key>kind</key><string>event</string>
2962// CHECK: <key>location</key>
2963// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00002964// CHECK: <key>line</key><integer>176</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00002965// CHECK: <key>col</key><integer>7</integer>
2966// CHECK: <key>file</key><integer>0</integer>
2967// CHECK: </dict>
2968// CHECK: <key>ranges</key>
2969// CHECK: <array>
2970// CHECK: <array>
2971// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00002972// CHECK: <key>line</key><integer>176</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00002973// CHECK: <key>col</key><integer>7</integer>
2974// CHECK: <key>file</key><integer>0</integer>
2975// CHECK: </dict>
2976// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00002977// CHECK: <key>line</key><integer>176</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00002978// CHECK: <key>col</key><integer>7</integer>
2979// CHECK: <key>file</key><integer>0</integer>
2980// CHECK: </dict>
2981// CHECK: </array>
2982// CHECK: </array>
2983// CHECK: <key>depth</key><integer>0</integer>
2984// CHECK: <key>extended_message</key>
Gabor Horvath1cbf4352015-09-08 21:04:14 +00002985// CHECK: <string>Conversion from value of type &apos;ExceptionalArray&lt;NSString *&gt; *&apos; to incompatible type &apos;MutableArray&lt;NSNumber *&gt; *&apos;</string>
Gabor Horvath717b51c2015-08-21 00:18:28 +00002986// CHECK: <key>message</key>
Gabor Horvath1cbf4352015-09-08 21:04:14 +00002987// CHECK: <string>Conversion from value of type &apos;ExceptionalArray&lt;NSString *&gt; *&apos; to incompatible type &apos;MutableArray&lt;NSNumber *&gt; *&apos;</string>
Gabor Horvath717b51c2015-08-21 00:18:28 +00002988// CHECK: </dict>
2989// CHECK: </array>
Gabor Horvath1cbf4352015-09-08 21:04:14 +00002990// CHECK: <key>description</key><string>Conversion from value of type &apos;ExceptionalArray&lt;NSString *&gt; *&apos; to incompatible type &apos;MutableArray&lt;NSNumber *&gt; *&apos;</string>
Gabor Horvath717b51c2015-08-21 00:18:28 +00002991// CHECK: <key>category</key><string>Core Foundation/Objective-C</string>
2992// CHECK: <key>type</key><string>Generics</string>
Gabor Horvathc0c7a5d2015-09-13 23:02:24 +00002993// CHECK: <key>check_name</key><string>core.DynamicTypePropagation</string>
Gabor Horvath717b51c2015-08-21 00:18:28 +00002994// CHECK: <key>issue_context_kind</key><string>function</string>
2995// CHECK: <key>issue_context</key><string>genericSubtypeOfGenericReverse</string>
2996// CHECK: <key>issue_hash</key><string>5</string>
2997// CHECK: <key>location</key>
2998// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00002999// CHECK: <key>line</key><integer>176</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00003000// CHECK: <key>col</key><integer>7</integer>
3001// CHECK: <key>file</key><integer>0</integer>
3002// CHECK: </dict>
3003// CHECK: </dict>
3004// CHECK: <dict>
3005// CHECK: <key>path</key>
3006// CHECK: <array>
3007// CHECK: <dict>
3008// CHECK: <key>kind</key><string>event</string>
3009// CHECK: <key>location</key>
3010// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00003011// CHECK: <key>line</key><integer>182</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00003012// CHECK: <key>col</key><integer>20</integer>
3013// CHECK: <key>file</key><integer>0</integer>
3014// CHECK: </dict>
3015// CHECK: <key>ranges</key>
3016// CHECK: <array>
3017// CHECK: <array>
3018// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00003019// CHECK: <key>line</key><integer>182</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00003020// CHECK: <key>col</key><integer>20</integer>
3021// CHECK: <key>file</key><integer>0</integer>
3022// CHECK: </dict>
3023// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00003024// CHECK: <key>line</key><integer>182</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00003025// CHECK: <key>col</key><integer>20</integer>
3026// CHECK: <key>file</key><integer>0</integer>
3027// CHECK: </dict>
3028// CHECK: </array>
3029// CHECK: </array>
3030// CHECK: <key>depth</key><integer>0</integer>
3031// CHECK: <key>extended_message</key>
Gabor Horvath03dc4732015-08-25 16:38:05 +00003032// CHECK: <string>Type &apos;MutableArray&lt;NSString *&gt; *&apos; is inferred from implicit cast (from &apos;id&apos; to &apos;MutableArray&lt;NSString *&gt; *&apos;)</string>
Gabor Horvath717b51c2015-08-21 00:18:28 +00003033// CHECK: <key>message</key>
Gabor Horvath03dc4732015-08-25 16:38:05 +00003034// CHECK: <string>Type &apos;MutableArray&lt;NSString *&gt; *&apos; is inferred from implicit cast (from &apos;id&apos; to &apos;MutableArray&lt;NSString *&gt; *&apos;)</string>
Gabor Horvath717b51c2015-08-21 00:18:28 +00003035// CHECK: </dict>
3036// CHECK: <dict>
3037// CHECK: <key>kind</key><string>control</string>
3038// CHECK: <key>edges</key>
3039// CHECK: <array>
3040// CHECK: <dict>
3041// CHECK: <key>start</key>
3042// CHECK: <array>
3043// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00003044// CHECK: <key>line</key><integer>182</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00003045// CHECK: <key>col</key><integer>3</integer>
3046// CHECK: <key>file</key><integer>0</integer>
3047// CHECK: </dict>
3048// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00003049// CHECK: <key>line</key><integer>182</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00003050// CHECK: <key>col</key><integer>18</integer>
3051// CHECK: <key>file</key><integer>0</integer>
3052// CHECK: </dict>
3053// CHECK: </array>
3054// CHECK: <key>end</key>
3055// CHECK: <array>
3056// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00003057// CHECK: <key>line</key><integer>183</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00003058// CHECK: <key>col</key><integer>3</integer>
3059// CHECK: <key>file</key><integer>0</integer>
3060// CHECK: </dict>
3061// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00003062// CHECK: <key>line</key><integer>183</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00003063// CHECK: <key>col</key><integer>25</integer>
3064// CHECK: <key>file</key><integer>0</integer>
3065// CHECK: </dict>
3066// CHECK: </array>
3067// CHECK: </dict>
3068// CHECK: </array>
3069// CHECK: </dict>
3070// CHECK: <dict>
3071// CHECK: <key>kind</key><string>control</string>
3072// CHECK: <key>edges</key>
3073// CHECK: <array>
3074// CHECK: <dict>
3075// CHECK: <key>start</key>
3076// CHECK: <array>
3077// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00003078// CHECK: <key>line</key><integer>183</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00003079// CHECK: <key>col</key><integer>3</integer>
3080// CHECK: <key>file</key><integer>0</integer>
3081// CHECK: </dict>
3082// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00003083// CHECK: <key>line</key><integer>183</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00003084// CHECK: <key>col</key><integer>25</integer>
3085// CHECK: <key>file</key><integer>0</integer>
3086// CHECK: </dict>
3087// CHECK: </array>
3088// CHECK: <key>end</key>
3089// CHECK: <array>
3090// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00003091// CHECK: <key>line</key><integer>183</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00003092// CHECK: <key>col</key><integer>27</integer>
3093// CHECK: <key>file</key><integer>0</integer>
3094// CHECK: </dict>
3095// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00003096// CHECK: <key>line</key><integer>183</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00003097// CHECK: <key>col</key><integer>27</integer>
3098// CHECK: <key>file</key><integer>0</integer>
3099// CHECK: </dict>
3100// CHECK: </array>
3101// CHECK: </dict>
3102// CHECK: </array>
3103// CHECK: </dict>
3104// CHECK: <dict>
3105// CHECK: <key>kind</key><string>event</string>
3106// CHECK: <key>location</key>
3107// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00003108// CHECK: <key>line</key><integer>183</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00003109// CHECK: <key>col</key><integer>27</integer>
3110// CHECK: <key>file</key><integer>0</integer>
3111// CHECK: </dict>
3112// CHECK: <key>ranges</key>
3113// CHECK: <array>
3114// CHECK: <array>
3115// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00003116// CHECK: <key>line</key><integer>183</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00003117// CHECK: <key>col</key><integer>27</integer>
3118// CHECK: <key>file</key><integer>0</integer>
3119// CHECK: </dict>
3120// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00003121// CHECK: <key>line</key><integer>183</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00003122// CHECK: <key>col</key><integer>27</integer>
3123// CHECK: <key>file</key><integer>0</integer>
3124// CHECK: </dict>
3125// CHECK: </array>
3126// CHECK: </array>
3127// CHECK: <key>depth</key><integer>0</integer>
3128// CHECK: <key>extended_message</key>
Gabor Horvath1cbf4352015-09-08 21:04:14 +00003129// CHECK: <string>Conversion from value of type &apos;MutableArray&lt;NSString *&gt; *&apos; to incompatible type &apos;MutableArray&lt;NSMutableString *&gt; *&apos;</string>
Gabor Horvath717b51c2015-08-21 00:18:28 +00003130// CHECK: <key>message</key>
Gabor Horvath1cbf4352015-09-08 21:04:14 +00003131// CHECK: <string>Conversion from value of type &apos;MutableArray&lt;NSString *&gt; *&apos; to incompatible type &apos;MutableArray&lt;NSMutableString *&gt; *&apos;</string>
Gabor Horvath717b51c2015-08-21 00:18:28 +00003132// CHECK: </dict>
3133// CHECK: </array>
Gabor Horvath1cbf4352015-09-08 21:04:14 +00003134// CHECK: <key>description</key><string>Conversion from value of type &apos;MutableArray&lt;NSString *&gt; *&apos; to incompatible type &apos;MutableArray&lt;NSMutableString *&gt; *&apos;</string>
Gabor Horvath717b51c2015-08-21 00:18:28 +00003135// CHECK: <key>category</key><string>Core Foundation/Objective-C</string>
3136// CHECK: <key>type</key><string>Generics</string>
Gabor Horvathc0c7a5d2015-09-13 23:02:24 +00003137// CHECK: <key>check_name</key><string>core.DynamicTypePropagation</string>
Gabor Horvath717b51c2015-08-21 00:18:28 +00003138// CHECK: <key>issue_context_kind</key><string>function</string>
3139// CHECK: <key>issue_context</key><string>inferenceFromAPI</string>
3140// CHECK: <key>issue_hash</key><string>4</string>
3141// CHECK: <key>location</key>
3142// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00003143// CHECK: <key>line</key><integer>183</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00003144// CHECK: <key>col</key><integer>27</integer>
3145// CHECK: <key>file</key><integer>0</integer>
3146// CHECK: </dict>
3147// CHECK: </dict>
3148// CHECK: <dict>
3149// CHECK: <key>path</key>
3150// CHECK: <array>
3151// CHECK: <dict>
3152// CHECK: <key>kind</key><string>event</string>
3153// CHECK: <key>location</key>
3154// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00003155// CHECK: <key>line</key><integer>187</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00003156// CHECK: <key>col</key><integer>27</integer>
3157// CHECK: <key>file</key><integer>0</integer>
3158// CHECK: </dict>
3159// CHECK: <key>ranges</key>
3160// CHECK: <array>
3161// CHECK: <array>
3162// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00003163// CHECK: <key>line</key><integer>187</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00003164// CHECK: <key>col</key><integer>27</integer>
3165// CHECK: <key>file</key><integer>0</integer>
3166// CHECK: </dict>
3167// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00003168// CHECK: <key>line</key><integer>187</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00003169// CHECK: <key>col</key><integer>27</integer>
3170// CHECK: <key>file</key><integer>0</integer>
3171// CHECK: </dict>
3172// CHECK: </array>
3173// CHECK: </array>
3174// CHECK: <key>depth</key><integer>0</integer>
3175// CHECK: <key>extended_message</key>
Gabor Horvath03dc4732015-08-25 16:38:05 +00003176// CHECK: <string>Type &apos;MutableArray&lt;NSMutableString *&gt; *&apos; is inferred from implicit cast (from &apos;id&apos; to &apos;MutableArray&lt;NSMutableString *&gt; *&apos;)</string>
Gabor Horvath717b51c2015-08-21 00:18:28 +00003177// CHECK: <key>message</key>
Gabor Horvath03dc4732015-08-25 16:38:05 +00003178// CHECK: <string>Type &apos;MutableArray&lt;NSMutableString *&gt; *&apos; is inferred from implicit cast (from &apos;id&apos; to &apos;MutableArray&lt;NSMutableString *&gt; *&apos;)</string>
Gabor Horvath717b51c2015-08-21 00:18:28 +00003179// CHECK: </dict>
3180// CHECK: <dict>
3181// CHECK: <key>kind</key><string>control</string>
3182// CHECK: <key>edges</key>
3183// CHECK: <array>
3184// CHECK: <dict>
3185// CHECK: <key>start</key>
3186// CHECK: <array>
3187// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00003188// CHECK: <key>line</key><integer>187</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00003189// CHECK: <key>col</key><integer>3</integer>
3190// CHECK: <key>file</key><integer>0</integer>
3191// CHECK: </dict>
3192// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00003193// CHECK: <key>line</key><integer>187</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00003194// CHECK: <key>col</key><integer>25</integer>
3195// CHECK: <key>file</key><integer>0</integer>
3196// CHECK: </dict>
3197// CHECK: </array>
3198// CHECK: <key>end</key>
3199// CHECK: <array>
3200// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00003201// CHECK: <key>line</key><integer>188</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00003202// CHECK: <key>col</key><integer>3</integer>
3203// CHECK: <key>file</key><integer>0</integer>
3204// CHECK: </dict>
3205// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00003206// CHECK: <key>line</key><integer>188</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00003207// CHECK: <key>col</key><integer>18</integer>
3208// CHECK: <key>file</key><integer>0</integer>
3209// CHECK: </dict>
3210// CHECK: </array>
3211// CHECK: </dict>
3212// CHECK: </array>
3213// CHECK: </dict>
3214// CHECK: <dict>
3215// CHECK: <key>kind</key><string>control</string>
3216// CHECK: <key>edges</key>
3217// CHECK: <array>
3218// CHECK: <dict>
3219// CHECK: <key>start</key>
3220// CHECK: <array>
3221// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00003222// CHECK: <key>line</key><integer>188</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00003223// CHECK: <key>col</key><integer>3</integer>
3224// CHECK: <key>file</key><integer>0</integer>
3225// CHECK: </dict>
3226// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00003227// CHECK: <key>line</key><integer>188</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00003228// CHECK: <key>col</key><integer>18</integer>
3229// CHECK: <key>file</key><integer>0</integer>
3230// CHECK: </dict>
3231// CHECK: </array>
3232// CHECK: <key>end</key>
3233// CHECK: <array>
3234// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00003235// CHECK: <key>line</key><integer>188</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00003236// CHECK: <key>col</key><integer>20</integer>
3237// CHECK: <key>file</key><integer>0</integer>
3238// CHECK: </dict>
3239// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00003240// CHECK: <key>line</key><integer>188</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00003241// CHECK: <key>col</key><integer>20</integer>
3242// CHECK: <key>file</key><integer>0</integer>
3243// CHECK: </dict>
3244// CHECK: </array>
3245// CHECK: </dict>
3246// CHECK: </array>
3247// CHECK: </dict>
3248// CHECK: <dict>
3249// CHECK: <key>kind</key><string>event</string>
3250// CHECK: <key>location</key>
3251// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00003252// CHECK: <key>line</key><integer>188</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00003253// CHECK: <key>col</key><integer>20</integer>
3254// CHECK: <key>file</key><integer>0</integer>
3255// CHECK: </dict>
3256// CHECK: <key>ranges</key>
3257// CHECK: <array>
3258// CHECK: <array>
3259// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00003260// CHECK: <key>line</key><integer>188</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00003261// CHECK: <key>col</key><integer>20</integer>
3262// CHECK: <key>file</key><integer>0</integer>
3263// CHECK: </dict>
3264// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00003265// CHECK: <key>line</key><integer>188</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00003266// CHECK: <key>col</key><integer>20</integer>
3267// CHECK: <key>file</key><integer>0</integer>
3268// CHECK: </dict>
3269// CHECK: </array>
3270// CHECK: </array>
3271// CHECK: <key>depth</key><integer>0</integer>
3272// CHECK: <key>extended_message</key>
Gabor Horvath1cbf4352015-09-08 21:04:14 +00003273// CHECK: <string>Conversion from value of type &apos;MutableArray&lt;NSMutableString *&gt; *&apos; to incompatible type &apos;MutableArray&lt;NSString *&gt; *&apos;</string>
Gabor Horvath717b51c2015-08-21 00:18:28 +00003274// CHECK: <key>message</key>
Gabor Horvath1cbf4352015-09-08 21:04:14 +00003275// CHECK: <string>Conversion from value of type &apos;MutableArray&lt;NSMutableString *&gt; *&apos; to incompatible type &apos;MutableArray&lt;NSString *&gt; *&apos;</string>
Gabor Horvath717b51c2015-08-21 00:18:28 +00003276// CHECK: </dict>
3277// CHECK: </array>
Gabor Horvath1cbf4352015-09-08 21:04:14 +00003278// CHECK: <key>description</key><string>Conversion from value of type &apos;MutableArray&lt;NSMutableString *&gt; *&apos; to incompatible type &apos;MutableArray&lt;NSString *&gt; *&apos;</string>
Gabor Horvath717b51c2015-08-21 00:18:28 +00003279// CHECK: <key>category</key><string>Core Foundation/Objective-C</string>
3280// CHECK: <key>type</key><string>Generics</string>
Gabor Horvathc0c7a5d2015-09-13 23:02:24 +00003281// CHECK: <key>check_name</key><string>core.DynamicTypePropagation</string>
Gabor Horvath717b51c2015-08-21 00:18:28 +00003282// CHECK: <key>issue_context_kind</key><string>function</string>
3283// CHECK: <key>issue_context</key><string>inferenceFromAPI2</string>
3284// CHECK: <key>issue_hash</key><string>2</string>
3285// CHECK: <key>location</key>
3286// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00003287// CHECK: <key>line</key><integer>188</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00003288// CHECK: <key>col</key><integer>20</integer>
3289// CHECK: <key>file</key><integer>0</integer>
3290// CHECK: </dict>
3291// CHECK: </dict>
3292// CHECK: <dict>
3293// CHECK: <key>path</key>
3294// CHECK: <array>
3295// CHECK: <dict>
3296// CHECK: <key>kind</key><string>event</string>
3297// CHECK: <key>location</key>
3298// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00003299// CHECK: <key>line</key><integer>192</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00003300// CHECK: <key>col</key><integer>27</integer>
3301// CHECK: <key>file</key><integer>0</integer>
3302// CHECK: </dict>
3303// CHECK: <key>ranges</key>
3304// CHECK: <array>
3305// CHECK: <array>
3306// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00003307// CHECK: <key>line</key><integer>192</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00003308// CHECK: <key>col</key><integer>27</integer>
3309// CHECK: <key>file</key><integer>0</integer>
3310// CHECK: </dict>
3311// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00003312// CHECK: <key>line</key><integer>192</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00003313// CHECK: <key>col</key><integer>27</integer>
3314// CHECK: <key>file</key><integer>0</integer>
3315// CHECK: </dict>
3316// CHECK: </array>
3317// CHECK: </array>
3318// CHECK: <key>depth</key><integer>0</integer>
3319// CHECK: <key>extended_message</key>
Gabor Horvath03dc4732015-08-25 16:38:05 +00003320// CHECK: <string>Type &apos;MutableArray&lt;NSMutableString *&gt; *&apos; is inferred from implicit cast (from &apos;LegacyMutableArray *&apos; to &apos;MutableArray&lt;NSMutableString *&gt; *&apos;)</string>
Gabor Horvath717b51c2015-08-21 00:18:28 +00003321// CHECK: <key>message</key>
Gabor Horvath03dc4732015-08-25 16:38:05 +00003322// CHECK: <string>Type &apos;MutableArray&lt;NSMutableString *&gt; *&apos; is inferred from implicit cast (from &apos;LegacyMutableArray *&apos; to &apos;MutableArray&lt;NSMutableString *&gt; *&apos;)</string>
Gabor Horvath717b51c2015-08-21 00:18:28 +00003323// CHECK: </dict>
3324// CHECK: <dict>
3325// CHECK: <key>kind</key><string>control</string>
3326// CHECK: <key>edges</key>
3327// CHECK: <array>
3328// CHECK: <dict>
3329// CHECK: <key>start</key>
3330// CHECK: <array>
3331// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00003332// CHECK: <key>line</key><integer>192</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00003333// CHECK: <key>col</key><integer>3</integer>
3334// CHECK: <key>file</key><integer>0</integer>
3335// CHECK: </dict>
3336// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00003337// CHECK: <key>line</key><integer>192</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00003338// CHECK: <key>col</key><integer>25</integer>
3339// CHECK: <key>file</key><integer>0</integer>
3340// CHECK: </dict>
3341// CHECK: </array>
3342// CHECK: <key>end</key>
3343// CHECK: <array>
3344// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00003345// CHECK: <key>line</key><integer>193</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00003346// CHECK: <key>col</key><integer>3</integer>
3347// CHECK: <key>file</key><integer>0</integer>
3348// CHECK: </dict>
3349// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00003350// CHECK: <key>line</key><integer>193</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00003351// CHECK: <key>col</key><integer>18</integer>
3352// CHECK: <key>file</key><integer>0</integer>
3353// CHECK: </dict>
3354// CHECK: </array>
3355// CHECK: </dict>
3356// CHECK: </array>
3357// CHECK: </dict>
3358// CHECK: <dict>
3359// CHECK: <key>kind</key><string>control</string>
3360// CHECK: <key>edges</key>
3361// CHECK: <array>
3362// CHECK: <dict>
3363// CHECK: <key>start</key>
3364// CHECK: <array>
3365// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00003366// CHECK: <key>line</key><integer>193</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00003367// CHECK: <key>col</key><integer>3</integer>
3368// CHECK: <key>file</key><integer>0</integer>
3369// CHECK: </dict>
3370// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00003371// CHECK: <key>line</key><integer>193</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00003372// CHECK: <key>col</key><integer>18</integer>
3373// CHECK: <key>file</key><integer>0</integer>
3374// CHECK: </dict>
3375// CHECK: </array>
3376// CHECK: <key>end</key>
3377// CHECK: <array>
3378// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00003379// CHECK: <key>line</key><integer>193</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00003380// CHECK: <key>col</key><integer>20</integer>
3381// CHECK: <key>file</key><integer>0</integer>
3382// CHECK: </dict>
3383// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00003384// CHECK: <key>line</key><integer>193</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00003385// CHECK: <key>col</key><integer>20</integer>
3386// CHECK: <key>file</key><integer>0</integer>
3387// CHECK: </dict>
3388// CHECK: </array>
3389// CHECK: </dict>
3390// CHECK: </array>
3391// CHECK: </dict>
3392// CHECK: <dict>
3393// CHECK: <key>kind</key><string>event</string>
3394// CHECK: <key>location</key>
3395// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00003396// CHECK: <key>line</key><integer>193</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00003397// CHECK: <key>col</key><integer>20</integer>
3398// CHECK: <key>file</key><integer>0</integer>
3399// CHECK: </dict>
3400// CHECK: <key>ranges</key>
3401// CHECK: <array>
3402// CHECK: <array>
3403// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00003404// CHECK: <key>line</key><integer>193</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00003405// CHECK: <key>col</key><integer>20</integer>
3406// CHECK: <key>file</key><integer>0</integer>
3407// CHECK: </dict>
3408// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00003409// CHECK: <key>line</key><integer>193</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00003410// CHECK: <key>col</key><integer>20</integer>
3411// CHECK: <key>file</key><integer>0</integer>
3412// CHECK: </dict>
3413// CHECK: </array>
3414// CHECK: </array>
3415// CHECK: <key>depth</key><integer>0</integer>
3416// CHECK: <key>extended_message</key>
Gabor Horvath1cbf4352015-09-08 21:04:14 +00003417// CHECK: <string>Conversion from value of type &apos;MutableArray&lt;NSMutableString *&gt; *&apos; to incompatible type &apos;MutableArray&lt;NSString *&gt; *&apos;</string>
Gabor Horvath717b51c2015-08-21 00:18:28 +00003418// CHECK: <key>message</key>
Gabor Horvath1cbf4352015-09-08 21:04:14 +00003419// CHECK: <string>Conversion from value of type &apos;MutableArray&lt;NSMutableString *&gt; *&apos; to incompatible type &apos;MutableArray&lt;NSString *&gt; *&apos;</string>
Gabor Horvath717b51c2015-08-21 00:18:28 +00003420// CHECK: </dict>
3421// CHECK: </array>
Gabor Horvath1cbf4352015-09-08 21:04:14 +00003422// CHECK: <key>description</key><string>Conversion from value of type &apos;MutableArray&lt;NSMutableString *&gt; *&apos; to incompatible type &apos;MutableArray&lt;NSString *&gt; *&apos;</string>
Gabor Horvath717b51c2015-08-21 00:18:28 +00003423// CHECK: <key>category</key><string>Core Foundation/Objective-C</string>
3424// CHECK: <key>type</key><string>Generics</string>
Gabor Horvathc0c7a5d2015-09-13 23:02:24 +00003425// CHECK: <key>check_name</key><string>core.DynamicTypePropagation</string>
Gabor Horvath717b51c2015-08-21 00:18:28 +00003426// CHECK: <key>issue_context_kind</key><string>function</string>
3427// CHECK: <key>issue_context</key><string>inferenceFromAPIWithLegacyTypes</string>
3428// CHECK: <key>issue_hash</key><string>2</string>
3429// CHECK: <key>location</key>
3430// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00003431// CHECK: <key>line</key><integer>193</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00003432// CHECK: <key>col</key><integer>20</integer>
3433// CHECK: <key>file</key><integer>0</integer>
3434// CHECK: </dict>
3435// CHECK: </dict>
3436// CHECK: <dict>
3437// CHECK: <key>path</key>
3438// CHECK: <array>
3439// CHECK: <dict>
3440// CHECK: <key>kind</key><string>event</string>
3441// CHECK: <key>location</key>
3442// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00003443// CHECK: <key>line</key><integer>197</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00003444// CHECK: <key>col</key><integer>20</integer>
3445// CHECK: <key>file</key><integer>0</integer>
3446// CHECK: </dict>
3447// CHECK: <key>ranges</key>
3448// CHECK: <array>
3449// CHECK: <array>
3450// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00003451// CHECK: <key>line</key><integer>197</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00003452// CHECK: <key>col</key><integer>20</integer>
3453// CHECK: <key>file</key><integer>0</integer>
3454// CHECK: </dict>
3455// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00003456// CHECK: <key>line</key><integer>197</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00003457// CHECK: <key>col</key><integer>20</integer>
3458// CHECK: <key>file</key><integer>0</integer>
3459// CHECK: </dict>
3460// CHECK: </array>
3461// CHECK: </array>
3462// CHECK: <key>depth</key><integer>0</integer>
3463// CHECK: <key>extended_message</key>
Gabor Horvath03dc4732015-08-25 16:38:05 +00003464// CHECK: <string>Type &apos;MutableArray&lt;NSString *&gt; *&apos; is inferred from implicit cast (from &apos;LegacySpecialMutableArray *&apos; to &apos;MutableArray&lt;NSString *&gt; *&apos;)</string>
Gabor Horvath717b51c2015-08-21 00:18:28 +00003465// CHECK: <key>message</key>
Gabor Horvath03dc4732015-08-25 16:38:05 +00003466// CHECK: <string>Type &apos;MutableArray&lt;NSString *&gt; *&apos; is inferred from implicit cast (from &apos;LegacySpecialMutableArray *&apos; to &apos;MutableArray&lt;NSString *&gt; *&apos;)</string>
Gabor Horvath717b51c2015-08-21 00:18:28 +00003467// CHECK: </dict>
3468// CHECK: <dict>
3469// CHECK: <key>kind</key><string>control</string>
3470// CHECK: <key>edges</key>
3471// CHECK: <array>
3472// CHECK: <dict>
3473// CHECK: <key>start</key>
3474// CHECK: <array>
3475// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00003476// CHECK: <key>line</key><integer>197</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00003477// CHECK: <key>col</key><integer>3</integer>
3478// CHECK: <key>file</key><integer>0</integer>
3479// CHECK: </dict>
3480// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00003481// CHECK: <key>line</key><integer>197</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00003482// CHECK: <key>col</key><integer>18</integer>
3483// CHECK: <key>file</key><integer>0</integer>
3484// CHECK: </dict>
3485// CHECK: </array>
3486// CHECK: <key>end</key>
3487// CHECK: <array>
3488// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00003489// CHECK: <key>line</key><integer>198</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00003490// CHECK: <key>col</key><integer>3</integer>
3491// CHECK: <key>file</key><integer>0</integer>
3492// CHECK: </dict>
3493// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00003494// CHECK: <key>line</key><integer>198</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00003495// CHECK: <key>col</key><integer>25</integer>
3496// CHECK: <key>file</key><integer>0</integer>
3497// CHECK: </dict>
3498// CHECK: </array>
3499// CHECK: </dict>
3500// CHECK: </array>
3501// CHECK: </dict>
3502// CHECK: <dict>
3503// CHECK: <key>kind</key><string>control</string>
3504// CHECK: <key>edges</key>
3505// CHECK: <array>
3506// CHECK: <dict>
3507// CHECK: <key>start</key>
3508// CHECK: <array>
3509// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00003510// CHECK: <key>line</key><integer>198</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00003511// CHECK: <key>col</key><integer>3</integer>
3512// CHECK: <key>file</key><integer>0</integer>
3513// CHECK: </dict>
3514// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00003515// CHECK: <key>line</key><integer>198</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00003516// CHECK: <key>col</key><integer>25</integer>
3517// CHECK: <key>file</key><integer>0</integer>
3518// CHECK: </dict>
3519// CHECK: </array>
3520// CHECK: <key>end</key>
3521// CHECK: <array>
3522// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00003523// CHECK: <key>line</key><integer>198</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00003524// CHECK: <key>col</key><integer>27</integer>
3525// CHECK: <key>file</key><integer>0</integer>
3526// CHECK: </dict>
3527// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00003528// CHECK: <key>line</key><integer>198</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00003529// CHECK: <key>col</key><integer>27</integer>
3530// CHECK: <key>file</key><integer>0</integer>
3531// CHECK: </dict>
3532// CHECK: </array>
3533// CHECK: </dict>
3534// CHECK: </array>
3535// CHECK: </dict>
3536// CHECK: <dict>
3537// CHECK: <key>kind</key><string>event</string>
3538// CHECK: <key>location</key>
3539// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00003540// CHECK: <key>line</key><integer>198</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00003541// CHECK: <key>col</key><integer>27</integer>
3542// CHECK: <key>file</key><integer>0</integer>
3543// CHECK: </dict>
3544// CHECK: <key>ranges</key>
3545// CHECK: <array>
3546// CHECK: <array>
3547// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00003548// CHECK: <key>line</key><integer>198</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00003549// CHECK: <key>col</key><integer>27</integer>
3550// CHECK: <key>file</key><integer>0</integer>
3551// CHECK: </dict>
3552// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00003553// CHECK: <key>line</key><integer>198</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00003554// CHECK: <key>col</key><integer>27</integer>
3555// CHECK: <key>file</key><integer>0</integer>
3556// CHECK: </dict>
3557// CHECK: </array>
3558// CHECK: </array>
3559// CHECK: <key>depth</key><integer>0</integer>
3560// CHECK: <key>extended_message</key>
Gabor Horvath1cbf4352015-09-08 21:04:14 +00003561// CHECK: <string>Conversion from value of type &apos;MutableArray&lt;NSString *&gt; *&apos; to incompatible type &apos;MutableArray&lt;NSMutableString *&gt; *&apos;</string>
Gabor Horvath717b51c2015-08-21 00:18:28 +00003562// CHECK: <key>message</key>
Gabor Horvath1cbf4352015-09-08 21:04:14 +00003563// CHECK: <string>Conversion from value of type &apos;MutableArray&lt;NSString *&gt; *&apos; to incompatible type &apos;MutableArray&lt;NSMutableString *&gt; *&apos;</string>
Gabor Horvath717b51c2015-08-21 00:18:28 +00003564// CHECK: </dict>
3565// CHECK: </array>
Gabor Horvath1cbf4352015-09-08 21:04:14 +00003566// CHECK: <key>description</key><string>Conversion from value of type &apos;MutableArray&lt;NSString *&gt; *&apos; to incompatible type &apos;MutableArray&lt;NSMutableString *&gt; *&apos;</string>
Gabor Horvath717b51c2015-08-21 00:18:28 +00003567// CHECK: <key>category</key><string>Core Foundation/Objective-C</string>
3568// CHECK: <key>type</key><string>Generics</string>
Gabor Horvathc0c7a5d2015-09-13 23:02:24 +00003569// CHECK: <key>check_name</key><string>core.DynamicTypePropagation</string>
Gabor Horvath717b51c2015-08-21 00:18:28 +00003570// CHECK: <key>issue_context_kind</key><string>function</string>
3571// CHECK: <key>issue_context</key><string>inferenceFromAPIWithLegacyTypes2</string>
3572// CHECK: <key>issue_hash</key><string>2</string>
3573// CHECK: <key>location</key>
3574// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00003575// CHECK: <key>line</key><integer>198</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00003576// CHECK: <key>col</key><integer>27</integer>
3577// CHECK: <key>file</key><integer>0</integer>
3578// CHECK: </dict>
3579// CHECK: </dict>
3580// CHECK: <dict>
3581// CHECK: <key>path</key>
3582// CHECK: <array>
3583// CHECK: <dict>
3584// CHECK: <key>kind</key><string>event</string>
3585// CHECK: <key>location</key>
3586// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00003587// CHECK: <key>line</key><integer>202</integer>
Gabor Horvath1cbf4352015-09-08 21:04:14 +00003588// CHECK: <key>col</key><integer>27</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00003589// CHECK: <key>file</key><integer>0</integer>
3590// CHECK: </dict>
3591// CHECK: <key>ranges</key>
3592// CHECK: <array>
3593// CHECK: <array>
3594// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00003595// CHECK: <key>line</key><integer>202</integer>
Gabor Horvath1cbf4352015-09-08 21:04:14 +00003596// CHECK: <key>col</key><integer>27</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00003597// CHECK: <key>file</key><integer>0</integer>
3598// CHECK: </dict>
3599// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00003600// CHECK: <key>line</key><integer>202</integer>
Gabor Horvath1cbf4352015-09-08 21:04:14 +00003601// CHECK: <key>col</key><integer>27</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00003602// CHECK: <key>file</key><integer>0</integer>
3603// CHECK: </dict>
3604// CHECK: </array>
3605// CHECK: </array>
3606// CHECK: <key>depth</key><integer>0</integer>
3607// CHECK: <key>extended_message</key>
Gabor Horvath1cbf4352015-09-08 21:04:14 +00003608// CHECK: <string>Type &apos;NSArray&lt;NSString *&gt; *&apos; is inferred from implicit cast (from &apos;__kindof NSArray&lt;NSString *&gt; *&apos; to &apos;LegacyMutableArray *&apos;)</string>
Gabor Horvath717b51c2015-08-21 00:18:28 +00003609// CHECK: <key>message</key>
Gabor Horvath1cbf4352015-09-08 21:04:14 +00003610// CHECK: <string>Type &apos;NSArray&lt;NSString *&gt; *&apos; is inferred from implicit cast (from &apos;__kindof NSArray&lt;NSString *&gt; *&apos; to &apos;LegacyMutableArray *&apos;)</string>
Gabor Horvath717b51c2015-08-21 00:18:28 +00003611// CHECK: </dict>
3612// CHECK: <dict>
3613// CHECK: <key>kind</key><string>control</string>
3614// CHECK: <key>edges</key>
3615// CHECK: <array>
3616// CHECK: <dict>
3617// CHECK: <key>start</key>
3618// CHECK: <array>
3619// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00003620// CHECK: <key>line</key><integer>202</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00003621// CHECK: <key>col</key><integer>3</integer>
3622// CHECK: <key>file</key><integer>0</integer>
3623// CHECK: </dict>
3624// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00003625// CHECK: <key>line</key><integer>202</integer>
Gabor Horvath1cbf4352015-09-08 21:04:14 +00003626// CHECK: <key>col</key><integer>20</integer>
3627// CHECK: <key>file</key><integer>0</integer>
3628// CHECK: </dict>
3629// CHECK: </array>
3630// CHECK: <key>end</key>
3631// CHECK: <array>
3632// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00003633// CHECK: <key>line</key><integer>203</integer>
Gabor Horvath1cbf4352015-09-08 21:04:14 +00003634// CHECK: <key>col</key><integer>3</integer>
3635// CHECK: <key>file</key><integer>0</integer>
3636// CHECK: </dict>
3637// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00003638// CHECK: <key>line</key><integer>203</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00003639// CHECK: <key>col</key><integer>18</integer>
3640// CHECK: <key>file</key><integer>0</integer>
3641// CHECK: </dict>
3642// CHECK: </array>
Gabor Horvath717b51c2015-08-21 00:18:28 +00003643// CHECK: </dict>
3644// CHECK: </array>
3645// CHECK: </dict>
3646// CHECK: <dict>
3647// CHECK: <key>kind</key><string>event</string>
3648// CHECK: <key>location</key>
3649// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00003650// CHECK: <key>line</key><integer>203</integer>
Gabor Horvath1cbf4352015-09-08 21:04:14 +00003651// CHECK: <key>col</key><integer>20</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00003652// CHECK: <key>file</key><integer>0</integer>
3653// CHECK: </dict>
3654// CHECK: <key>ranges</key>
3655// CHECK: <array>
3656// CHECK: <array>
3657// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00003658// CHECK: <key>line</key><integer>203</integer>
Gabor Horvath1cbf4352015-09-08 21:04:14 +00003659// CHECK: <key>col</key><integer>20</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00003660// CHECK: <key>file</key><integer>0</integer>
3661// CHECK: </dict>
3662// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00003663// CHECK: <key>line</key><integer>203</integer>
Gabor Horvath1cbf4352015-09-08 21:04:14 +00003664// CHECK: <key>col</key><integer>20</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00003665// CHECK: <key>file</key><integer>0</integer>
3666// CHECK: </dict>
3667// CHECK: </array>
3668// CHECK: </array>
3669// CHECK: <key>depth</key><integer>0</integer>
3670// CHECK: <key>extended_message</key>
Gabor Horvath1cbf4352015-09-08 21:04:14 +00003671// CHECK: <string>Type &apos;MutableArray&lt;NSString *&gt; *&apos; is inferred from implicit cast (from &apos;LegacyMutableArray *&apos; to &apos;MutableArray&lt;NSString *&gt; *&apos;)</string>
Gabor Horvath717b51c2015-08-21 00:18:28 +00003672// CHECK: <key>message</key>
Gabor Horvath1cbf4352015-09-08 21:04:14 +00003673// CHECK: <string>Type &apos;MutableArray&lt;NSString *&gt; *&apos; is inferred from implicit cast (from &apos;LegacyMutableArray *&apos; to &apos;MutableArray&lt;NSString *&gt; *&apos;)</string>
Gabor Horvath717b51c2015-08-21 00:18:28 +00003674// CHECK: </dict>
3675// CHECK: <dict>
3676// CHECK: <key>kind</key><string>control</string>
3677// CHECK: <key>edges</key>
3678// CHECK: <array>
3679// CHECK: <dict>
3680// CHECK: <key>start</key>
3681// CHECK: <array>
3682// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00003683// CHECK: <key>line</key><integer>203</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00003684// CHECK: <key>col</key><integer>3</integer>
3685// CHECK: <key>file</key><integer>0</integer>
3686// CHECK: </dict>
3687// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00003688// CHECK: <key>line</key><integer>203</integer>
Gabor Horvath1cbf4352015-09-08 21:04:14 +00003689// CHECK: <key>col</key><integer>18</integer>
3690// CHECK: <key>file</key><integer>0</integer>
3691// CHECK: </dict>
3692// CHECK: </array>
3693// CHECK: <key>end</key>
3694// CHECK: <array>
3695// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00003696// CHECK: <key>line</key><integer>204</integer>
Gabor Horvath1cbf4352015-09-08 21:04:14 +00003697// CHECK: <key>col</key><integer>3</integer>
3698// CHECK: <key>file</key><integer>0</integer>
3699// CHECK: </dict>
3700// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00003701// CHECK: <key>line</key><integer>204</integer>
Gabor Horvath1cbf4352015-09-08 21:04:14 +00003702// CHECK: <key>col</key><integer>25</integer>
3703// CHECK: <key>file</key><integer>0</integer>
3704// CHECK: </dict>
3705// CHECK: </array>
3706// CHECK: </dict>
3707// CHECK: </array>
3708// CHECK: </dict>
3709// CHECK: <dict>
3710// CHECK: <key>kind</key><string>control</string>
3711// CHECK: <key>edges</key>
3712// CHECK: <array>
3713// CHECK: <dict>
3714// CHECK: <key>start</key>
3715// CHECK: <array>
3716// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00003717// CHECK: <key>line</key><integer>204</integer>
Gabor Horvath1cbf4352015-09-08 21:04:14 +00003718// CHECK: <key>col</key><integer>3</integer>
3719// CHECK: <key>file</key><integer>0</integer>
3720// CHECK: </dict>
3721// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00003722// CHECK: <key>line</key><integer>204</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00003723// CHECK: <key>col</key><integer>25</integer>
3724// CHECK: <key>file</key><integer>0</integer>
3725// CHECK: </dict>
3726// CHECK: </array>
3727// CHECK: <key>end</key>
3728// CHECK: <array>
3729// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00003730// CHECK: <key>line</key><integer>204</integer>
Gabor Horvath1cbf4352015-09-08 21:04:14 +00003731// CHECK: <key>col</key><integer>27</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00003732// CHECK: <key>file</key><integer>0</integer>
3733// CHECK: </dict>
3734// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00003735// CHECK: <key>line</key><integer>204</integer>
Gabor Horvath1cbf4352015-09-08 21:04:14 +00003736// CHECK: <key>col</key><integer>27</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00003737// CHECK: <key>file</key><integer>0</integer>
3738// CHECK: </dict>
3739// CHECK: </array>
3740// CHECK: </dict>
3741// CHECK: </array>
3742// CHECK: </dict>
3743// CHECK: <dict>
Gabor Horvath1cbf4352015-09-08 21:04:14 +00003744// CHECK: <key>kind</key><string>event</string>
3745// CHECK: <key>location</key>
3746// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00003747// CHECK: <key>line</key><integer>204</integer>
Gabor Horvath1cbf4352015-09-08 21:04:14 +00003748// CHECK: <key>col</key><integer>27</integer>
3749// CHECK: <key>file</key><integer>0</integer>
3750// CHECK: </dict>
3751// CHECK: <key>ranges</key>
3752// CHECK: <array>
3753// CHECK: <array>
3754// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00003755// CHECK: <key>line</key><integer>204</integer>
Gabor Horvath1cbf4352015-09-08 21:04:14 +00003756// CHECK: <key>col</key><integer>27</integer>
3757// CHECK: <key>file</key><integer>0</integer>
3758// CHECK: </dict>
3759// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00003760// CHECK: <key>line</key><integer>204</integer>
Gabor Horvath1cbf4352015-09-08 21:04:14 +00003761// CHECK: <key>col</key><integer>27</integer>
3762// CHECK: <key>file</key><integer>0</integer>
3763// CHECK: </dict>
3764// CHECK: </array>
3765// CHECK: </array>
3766// CHECK: <key>depth</key><integer>0</integer>
3767// CHECK: <key>extended_message</key>
3768// CHECK: <string>Conversion from value of type &apos;MutableArray&lt;NSString *&gt; *&apos; to incompatible type &apos;MutableArray&lt;NSMutableString *&gt; *&apos;</string>
3769// CHECK: <key>message</key>
3770// CHECK: <string>Conversion from value of type &apos;MutableArray&lt;NSString *&gt; *&apos; to incompatible type &apos;MutableArray&lt;NSMutableString *&gt; *&apos;</string>
Gabor Horvath717b51c2015-08-21 00:18:28 +00003771// CHECK: </dict>
Gabor Horvath1cbf4352015-09-08 21:04:14 +00003772// CHECK: </array>
3773// CHECK: <key>description</key><string>Conversion from value of type &apos;MutableArray&lt;NSString *&gt; *&apos; to incompatible type &apos;MutableArray&lt;NSMutableString *&gt; *&apos;</string>
3774// CHECK: <key>category</key><string>Core Foundation/Objective-C</string>
3775// CHECK: <key>type</key><string>Generics</string>
Gabor Horvathc0c7a5d2015-09-13 23:02:24 +00003776// CHECK: <key>check_name</key><string>core.DynamicTypePropagation</string>
Gabor Horvath1cbf4352015-09-08 21:04:14 +00003777// CHECK: <key>issue_context_kind</key><string>function</string>
3778// CHECK: <key>issue_context</key><string>inferenceFromAPIWithLegacyTypes3</string>
3779// CHECK: <key>issue_hash</key><string>3</string>
3780// CHECK: <key>location</key>
3781// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00003782// CHECK: <key>line</key><integer>204</integer>
Gabor Horvath1cbf4352015-09-08 21:04:14 +00003783// CHECK: <key>col</key><integer>27</integer>
3784// CHECK: <key>file</key><integer>0</integer>
3785// CHECK: </dict>
3786// CHECK: </dict>
3787// CHECK: <dict>
3788// CHECK: <key>path</key>
3789// CHECK: <array>
Gabor Horvath717b51c2015-08-21 00:18:28 +00003790// CHECK: <dict>
3791// CHECK: <key>kind</key><string>event</string>
3792// CHECK: <key>location</key>
3793// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00003794// CHECK: <key>line</key><integer>208</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00003795// CHECK: <key>col</key><integer>20</integer>
3796// CHECK: <key>file</key><integer>0</integer>
3797// CHECK: </dict>
3798// CHECK: <key>ranges</key>
3799// CHECK: <array>
3800// CHECK: <array>
3801// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00003802// CHECK: <key>line</key><integer>208</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00003803// CHECK: <key>col</key><integer>20</integer>
3804// CHECK: <key>file</key><integer>0</integer>
3805// CHECK: </dict>
3806// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00003807// CHECK: <key>line</key><integer>208</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00003808// CHECK: <key>col</key><integer>20</integer>
3809// CHECK: <key>file</key><integer>0</integer>
3810// CHECK: </dict>
3811// CHECK: </array>
3812// CHECK: </array>
3813// CHECK: <key>depth</key><integer>0</integer>
3814// CHECK: <key>extended_message</key>
Gabor Horvath1cbf4352015-09-08 21:04:14 +00003815// CHECK: <string>Type &apos;MutableArray&lt;NSString *&gt; *&apos; is inferred from implicit cast (from &apos;BuggyMutableArray&lt;NSMutableString *&gt; *&apos; to &apos;MutableArray&lt;NSString *&gt; *&apos;)</string>
Gabor Horvath717b51c2015-08-21 00:18:28 +00003816// CHECK: <key>message</key>
Gabor Horvath1cbf4352015-09-08 21:04:14 +00003817// CHECK: <string>Type &apos;MutableArray&lt;NSString *&gt; *&apos; is inferred from implicit cast (from &apos;BuggyMutableArray&lt;NSMutableString *&gt; *&apos; to &apos;MutableArray&lt;NSString *&gt; *&apos;)</string>
3818// CHECK: </dict>
3819// CHECK: <dict>
3820// CHECK: <key>kind</key><string>control</string>
3821// CHECK: <key>edges</key>
3822// CHECK: <array>
3823// CHECK: <dict>
3824// CHECK: <key>start</key>
3825// CHECK: <array>
3826// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00003827// CHECK: <key>line</key><integer>208</integer>
Gabor Horvath1cbf4352015-09-08 21:04:14 +00003828// CHECK: <key>col</key><integer>3</integer>
3829// CHECK: <key>file</key><integer>0</integer>
3830// CHECK: </dict>
3831// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00003832// CHECK: <key>line</key><integer>208</integer>
Gabor Horvath1cbf4352015-09-08 21:04:14 +00003833// CHECK: <key>col</key><integer>18</integer>
3834// CHECK: <key>file</key><integer>0</integer>
3835// CHECK: </dict>
3836// CHECK: </array>
3837// CHECK: <key>end</key>
3838// CHECK: <array>
3839// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00003840// CHECK: <key>line</key><integer>209</integer>
Gabor Horvath1cbf4352015-09-08 21:04:14 +00003841// CHECK: <key>col</key><integer>3</integer>
3842// CHECK: <key>file</key><integer>0</integer>
3843// CHECK: </dict>
3844// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00003845// CHECK: <key>line</key><integer>209</integer>
Gabor Horvath1cbf4352015-09-08 21:04:14 +00003846// CHECK: <key>col</key><integer>25</integer>
3847// CHECK: <key>file</key><integer>0</integer>
3848// CHECK: </dict>
3849// CHECK: </array>
3850// CHECK: </dict>
3851// CHECK: </array>
3852// CHECK: </dict>
3853// CHECK: <dict>
3854// CHECK: <key>kind</key><string>control</string>
3855// CHECK: <key>edges</key>
3856// CHECK: <array>
3857// CHECK: <dict>
3858// CHECK: <key>start</key>
3859// CHECK: <array>
3860// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00003861// CHECK: <key>line</key><integer>209</integer>
Gabor Horvath1cbf4352015-09-08 21:04:14 +00003862// CHECK: <key>col</key><integer>3</integer>
3863// CHECK: <key>file</key><integer>0</integer>
3864// CHECK: </dict>
3865// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00003866// CHECK: <key>line</key><integer>209</integer>
Gabor Horvath1cbf4352015-09-08 21:04:14 +00003867// CHECK: <key>col</key><integer>25</integer>
3868// CHECK: <key>file</key><integer>0</integer>
3869// CHECK: </dict>
3870// CHECK: </array>
3871// CHECK: <key>end</key>
3872// CHECK: <array>
3873// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00003874// CHECK: <key>line</key><integer>209</integer>
Gabor Horvath1cbf4352015-09-08 21:04:14 +00003875// CHECK: <key>col</key><integer>27</integer>
3876// CHECK: <key>file</key><integer>0</integer>
3877// CHECK: </dict>
3878// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00003879// CHECK: <key>line</key><integer>209</integer>
Gabor Horvath1cbf4352015-09-08 21:04:14 +00003880// CHECK: <key>col</key><integer>27</integer>
3881// CHECK: <key>file</key><integer>0</integer>
3882// CHECK: </dict>
3883// CHECK: </array>
3884// CHECK: </dict>
3885// CHECK: </array>
3886// CHECK: </dict>
3887// CHECK: <dict>
3888// CHECK: <key>kind</key><string>event</string>
3889// CHECK: <key>location</key>
3890// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00003891// CHECK: <key>line</key><integer>209</integer>
Gabor Horvath1cbf4352015-09-08 21:04:14 +00003892// CHECK: <key>col</key><integer>27</integer>
3893// CHECK: <key>file</key><integer>0</integer>
3894// CHECK: </dict>
3895// CHECK: <key>ranges</key>
3896// CHECK: <array>
3897// CHECK: <array>
3898// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00003899// CHECK: <key>line</key><integer>209</integer>
Gabor Horvath1cbf4352015-09-08 21:04:14 +00003900// CHECK: <key>col</key><integer>27</integer>
3901// CHECK: <key>file</key><integer>0</integer>
3902// CHECK: </dict>
3903// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00003904// CHECK: <key>line</key><integer>209</integer>
Gabor Horvath1cbf4352015-09-08 21:04:14 +00003905// CHECK: <key>col</key><integer>27</integer>
3906// CHECK: <key>file</key><integer>0</integer>
3907// CHECK: </dict>
3908// CHECK: </array>
3909// CHECK: </array>
3910// CHECK: <key>depth</key><integer>0</integer>
3911// CHECK: <key>extended_message</key>
3912// CHECK: <string>Conversion from value of type &apos;MutableArray&lt;NSString *&gt; *&apos; to incompatible type &apos;MutableArray&lt;NSMutableString *&gt; *&apos;</string>
3913// CHECK: <key>message</key>
3914// CHECK: <string>Conversion from value of type &apos;MutableArray&lt;NSString *&gt; *&apos; to incompatible type &apos;MutableArray&lt;NSMutableString *&gt; *&apos;</string>
Gabor Horvath717b51c2015-08-21 00:18:28 +00003915// CHECK: </dict>
3916// CHECK: </array>
Gabor Horvath1cbf4352015-09-08 21:04:14 +00003917// CHECK: <key>description</key><string>Conversion from value of type &apos;MutableArray&lt;NSString *&gt; *&apos; to incompatible type &apos;MutableArray&lt;NSMutableString *&gt; *&apos;</string>
3918// CHECK: <key>category</key><string>Core Foundation/Objective-C</string>
3919// CHECK: <key>type</key><string>Generics</string>
Gabor Horvathc0c7a5d2015-09-13 23:02:24 +00003920// CHECK: <key>check_name</key><string>core.DynamicTypePropagation</string>
Gabor Horvath1cbf4352015-09-08 21:04:14 +00003921// CHECK: <key>issue_context_kind</key><string>function</string>
3922// CHECK: <key>issue_context</key><string>inferenceFromAPIWithBuggyTypes</string>
3923// CHECK: <key>issue_hash</key><string>2</string>
3924// CHECK: <key>location</key>
3925// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00003926// CHECK: <key>line</key><integer>209</integer>
Gabor Horvath1cbf4352015-09-08 21:04:14 +00003927// CHECK: <key>col</key><integer>27</integer>
3928// CHECK: <key>file</key><integer>0</integer>
3929// CHECK: </dict>
3930// CHECK: </dict>
3931// CHECK: <dict>
3932// CHECK: <key>path</key>
3933// CHECK: <array>
3934// CHECK: <dict>
3935// CHECK: <key>kind</key><string>event</string>
3936// CHECK: <key>location</key>
3937// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00003938// CHECK: <key>line</key><integer>213</integer>
Gabor Horvath1cbf4352015-09-08 21:04:14 +00003939// CHECK: <key>col</key><integer>27</integer>
3940// CHECK: <key>file</key><integer>0</integer>
3941// CHECK: </dict>
3942// CHECK: <key>ranges</key>
3943// CHECK: <array>
3944// CHECK: <array>
3945// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00003946// CHECK: <key>line</key><integer>213</integer>
Gabor Horvath1cbf4352015-09-08 21:04:14 +00003947// CHECK: <key>col</key><integer>27</integer>
3948// CHECK: <key>file</key><integer>0</integer>
3949// CHECK: </dict>
3950// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00003951// CHECK: <key>line</key><integer>213</integer>
Gabor Horvath1cbf4352015-09-08 21:04:14 +00003952// CHECK: <key>col</key><integer>27</integer>
3953// CHECK: <key>file</key><integer>0</integer>
3954// CHECK: </dict>
3955// CHECK: </array>
3956// CHECK: </array>
3957// CHECK: <key>depth</key><integer>0</integer>
3958// CHECK: <key>extended_message</key>
3959// CHECK: <string>Type &apos;MutableArray&lt;NSMutableString *&gt; *&apos; is inferred from implicit cast (from &apos;BuggySpecialMutableArray&lt;NSMutableString *&gt; *&apos; to &apos;MutableArray&lt;NSMutableString *&gt; *&apos;)</string>
3960// CHECK: <key>message</key>
3961// CHECK: <string>Type &apos;MutableArray&lt;NSMutableString *&gt; *&apos; is inferred from implicit cast (from &apos;BuggySpecialMutableArray&lt;NSMutableString *&gt; *&apos; to &apos;MutableArray&lt;NSMutableString *&gt; *&apos;)</string>
3962// CHECK: </dict>
3963// CHECK: <dict>
3964// CHECK: <key>kind</key><string>control</string>
3965// CHECK: <key>edges</key>
3966// CHECK: <array>
3967// CHECK: <dict>
3968// CHECK: <key>start</key>
3969// CHECK: <array>
3970// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00003971// CHECK: <key>line</key><integer>213</integer>
Gabor Horvath1cbf4352015-09-08 21:04:14 +00003972// CHECK: <key>col</key><integer>3</integer>
3973// CHECK: <key>file</key><integer>0</integer>
3974// CHECK: </dict>
3975// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00003976// CHECK: <key>line</key><integer>213</integer>
Gabor Horvath1cbf4352015-09-08 21:04:14 +00003977// CHECK: <key>col</key><integer>25</integer>
3978// CHECK: <key>file</key><integer>0</integer>
3979// CHECK: </dict>
3980// CHECK: </array>
3981// CHECK: <key>end</key>
3982// CHECK: <array>
3983// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00003984// CHECK: <key>line</key><integer>214</integer>
Gabor Horvath1cbf4352015-09-08 21:04:14 +00003985// CHECK: <key>col</key><integer>3</integer>
3986// CHECK: <key>file</key><integer>0</integer>
3987// CHECK: </dict>
3988// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00003989// CHECK: <key>line</key><integer>214</integer>
Gabor Horvath1cbf4352015-09-08 21:04:14 +00003990// CHECK: <key>col</key><integer>18</integer>
3991// CHECK: <key>file</key><integer>0</integer>
3992// CHECK: </dict>
3993// CHECK: </array>
3994// CHECK: </dict>
3995// CHECK: </array>
3996// CHECK: </dict>
3997// CHECK: <dict>
3998// CHECK: <key>kind</key><string>control</string>
3999// CHECK: <key>edges</key>
4000// CHECK: <array>
4001// CHECK: <dict>
4002// CHECK: <key>start</key>
4003// CHECK: <array>
4004// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00004005// CHECK: <key>line</key><integer>214</integer>
Gabor Horvath1cbf4352015-09-08 21:04:14 +00004006// CHECK: <key>col</key><integer>3</integer>
4007// CHECK: <key>file</key><integer>0</integer>
4008// CHECK: </dict>
4009// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00004010// CHECK: <key>line</key><integer>214</integer>
Gabor Horvath1cbf4352015-09-08 21:04:14 +00004011// CHECK: <key>col</key><integer>18</integer>
4012// CHECK: <key>file</key><integer>0</integer>
4013// CHECK: </dict>
4014// CHECK: </array>
4015// CHECK: <key>end</key>
4016// CHECK: <array>
4017// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00004018// CHECK: <key>line</key><integer>214</integer>
Gabor Horvath1cbf4352015-09-08 21:04:14 +00004019// CHECK: <key>col</key><integer>20</integer>
4020// CHECK: <key>file</key><integer>0</integer>
4021// CHECK: </dict>
4022// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00004023// CHECK: <key>line</key><integer>214</integer>
Gabor Horvath1cbf4352015-09-08 21:04:14 +00004024// CHECK: <key>col</key><integer>20</integer>
4025// CHECK: <key>file</key><integer>0</integer>
4026// CHECK: </dict>
4027// CHECK: </array>
4028// CHECK: </dict>
4029// CHECK: </array>
4030// CHECK: </dict>
4031// CHECK: <dict>
4032// CHECK: <key>kind</key><string>event</string>
4033// CHECK: <key>location</key>
4034// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00004035// CHECK: <key>line</key><integer>214</integer>
Gabor Horvath1cbf4352015-09-08 21:04:14 +00004036// CHECK: <key>col</key><integer>20</integer>
4037// CHECK: <key>file</key><integer>0</integer>
4038// CHECK: </dict>
4039// CHECK: <key>ranges</key>
4040// CHECK: <array>
4041// CHECK: <array>
4042// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00004043// CHECK: <key>line</key><integer>214</integer>
Gabor Horvath1cbf4352015-09-08 21:04:14 +00004044// CHECK: <key>col</key><integer>20</integer>
4045// CHECK: <key>file</key><integer>0</integer>
4046// CHECK: </dict>
4047// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00004048// CHECK: <key>line</key><integer>214</integer>
Gabor Horvath1cbf4352015-09-08 21:04:14 +00004049// CHECK: <key>col</key><integer>20</integer>
4050// CHECK: <key>file</key><integer>0</integer>
4051// CHECK: </dict>
4052// CHECK: </array>
4053// CHECK: </array>
4054// CHECK: <key>depth</key><integer>0</integer>
4055// CHECK: <key>extended_message</key>
4056// CHECK: <string>Conversion from value of type &apos;MutableArray&lt;NSMutableString *&gt; *&apos; to incompatible type &apos;MutableArray&lt;NSString *&gt; *&apos;</string>
4057// CHECK: <key>message</key>
4058// CHECK: <string>Conversion from value of type &apos;MutableArray&lt;NSMutableString *&gt; *&apos; to incompatible type &apos;MutableArray&lt;NSString *&gt; *&apos;</string>
4059// CHECK: </dict>
4060// CHECK: </array>
4061// CHECK: <key>description</key><string>Conversion from value of type &apos;MutableArray&lt;NSMutableString *&gt; *&apos; to incompatible type &apos;MutableArray&lt;NSString *&gt; *&apos;</string>
Gabor Horvath717b51c2015-08-21 00:18:28 +00004062// CHECK: <key>category</key><string>Core Foundation/Objective-C</string>
4063// CHECK: <key>type</key><string>Generics</string>
Gabor Horvathc0c7a5d2015-09-13 23:02:24 +00004064// CHECK: <key>check_name</key><string>core.DynamicTypePropagation</string>
Gabor Horvath717b51c2015-08-21 00:18:28 +00004065// CHECK: <key>issue_context_kind</key><string>function</string>
4066// CHECK: <key>issue_context</key><string>InferenceFromAPIWithBuggyTypes2</string>
4067// CHECK: <key>issue_hash</key><string>2</string>
4068// CHECK: <key>location</key>
4069// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00004070// CHECK: <key>line</key><integer>214</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00004071// CHECK: <key>col</key><integer>20</integer>
4072// CHECK: <key>file</key><integer>0</integer>
4073// CHECK: </dict>
4074// CHECK: </dict>
4075// CHECK: <dict>
4076// CHECK: <key>path</key>
4077// CHECK: <array>
4078// CHECK: <dict>
4079// CHECK: <key>kind</key><string>event</string>
4080// CHECK: <key>location</key>
4081// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00004082// CHECK: <key>line</key><integer>218</integer>
Gabor Horvath1cbf4352015-09-08 21:04:14 +00004083// CHECK: <key>col</key><integer>10</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00004084// CHECK: <key>file</key><integer>0</integer>
4085// CHECK: </dict>
4086// CHECK: <key>ranges</key>
4087// CHECK: <array>
4088// CHECK: <array>
4089// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00004090// CHECK: <key>line</key><integer>218</integer>
Gabor Horvath1cbf4352015-09-08 21:04:14 +00004091// CHECK: <key>col</key><integer>10</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00004092// CHECK: <key>file</key><integer>0</integer>
4093// CHECK: </dict>
4094// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00004095// CHECK: <key>line</key><integer>218</integer>
Gabor Horvath1cbf4352015-09-08 21:04:14 +00004096// CHECK: <key>col</key><integer>10</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00004097// CHECK: <key>file</key><integer>0</integer>
4098// CHECK: </dict>
4099// CHECK: </array>
4100// CHECK: </array>
4101// CHECK: <key>depth</key><integer>0</integer>
4102// CHECK: <key>extended_message</key>
Gabor Horvath1cbf4352015-09-08 21:04:14 +00004103// CHECK: <string>Type &apos;MutableArray&lt;NSMutableString *&gt; *&apos; is inferred from implicit cast (from &apos;MutableArray&lt;NSMutableString *&gt; *&apos; to &apos;id&apos;)</string>
Gabor Horvath717b51c2015-08-21 00:18:28 +00004104// CHECK: <key>message</key>
Gabor Horvath1cbf4352015-09-08 21:04:14 +00004105// CHECK: <string>Type &apos;MutableArray&lt;NSMutableString *&gt; *&apos; is inferred from implicit cast (from &apos;MutableArray&lt;NSMutableString *&gt; *&apos; to &apos;id&apos;)</string>
Gabor Horvath717b51c2015-08-21 00:18:28 +00004106// CHECK: </dict>
4107// CHECK: <dict>
4108// CHECK: <key>kind</key><string>control</string>
4109// CHECK: <key>edges</key>
4110// CHECK: <array>
4111// CHECK: <dict>
4112// CHECK: <key>start</key>
4113// CHECK: <array>
4114// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00004115// CHECK: <key>line</key><integer>218</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00004116// CHECK: <key>col</key><integer>3</integer>
4117// CHECK: <key>file</key><integer>0</integer>
4118// CHECK: </dict>
4119// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00004120// CHECK: <key>line</key><integer>218</integer>
Gabor Horvath1cbf4352015-09-08 21:04:14 +00004121// CHECK: <key>col</key><integer>4</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00004122// CHECK: <key>file</key><integer>0</integer>
4123// CHECK: </dict>
4124// CHECK: </array>
4125// CHECK: <key>end</key>
4126// CHECK: <array>
4127// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00004128// CHECK: <key>line</key><integer>220</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00004129// CHECK: <key>col</key><integer>3</integer>
4130// CHECK: <key>file</key><integer>0</integer>
4131// CHECK: </dict>
4132// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00004133// CHECK: <key>line</key><integer>220</integer>
Gabor Horvath1cbf4352015-09-08 21:04:14 +00004134// CHECK: <key>col</key><integer>18</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00004135// CHECK: <key>file</key><integer>0</integer>
4136// CHECK: </dict>
4137// CHECK: </array>
4138// CHECK: </dict>
4139// CHECK: </array>
4140// CHECK: </dict>
4141// CHECK: <dict>
4142// CHECK: <key>kind</key><string>control</string>
4143// CHECK: <key>edges</key>
4144// CHECK: <array>
4145// CHECK: <dict>
4146// CHECK: <key>start</key>
4147// CHECK: <array>
4148// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00004149// CHECK: <key>line</key><integer>220</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00004150// CHECK: <key>col</key><integer>3</integer>
4151// CHECK: <key>file</key><integer>0</integer>
4152// CHECK: </dict>
4153// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00004154// CHECK: <key>line</key><integer>220</integer>
Gabor Horvath1cbf4352015-09-08 21:04:14 +00004155// CHECK: <key>col</key><integer>18</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00004156// CHECK: <key>file</key><integer>0</integer>
4157// CHECK: </dict>
4158// CHECK: </array>
4159// CHECK: <key>end</key>
4160// CHECK: <array>
4161// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00004162// CHECK: <key>line</key><integer>220</integer>
Gabor Horvath1cbf4352015-09-08 21:04:14 +00004163// CHECK: <key>col</key><integer>20</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00004164// CHECK: <key>file</key><integer>0</integer>
4165// CHECK: </dict>
4166// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00004167// CHECK: <key>line</key><integer>220</integer>
Gabor Horvath1cbf4352015-09-08 21:04:14 +00004168// CHECK: <key>col</key><integer>20</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00004169// CHECK: <key>file</key><integer>0</integer>
4170// CHECK: </dict>
4171// CHECK: </array>
4172// CHECK: </dict>
4173// CHECK: </array>
4174// CHECK: </dict>
4175// CHECK: <dict>
4176// CHECK: <key>kind</key><string>event</string>
4177// CHECK: <key>location</key>
4178// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00004179// CHECK: <key>line</key><integer>220</integer>
Gabor Horvath1cbf4352015-09-08 21:04:14 +00004180// CHECK: <key>col</key><integer>20</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00004181// CHECK: <key>file</key><integer>0</integer>
4182// CHECK: </dict>
4183// CHECK: <key>ranges</key>
4184// CHECK: <array>
4185// CHECK: <array>
4186// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00004187// CHECK: <key>line</key><integer>220</integer>
Gabor Horvath1cbf4352015-09-08 21:04:14 +00004188// CHECK: <key>col</key><integer>20</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00004189// CHECK: <key>file</key><integer>0</integer>
4190// CHECK: </dict>
4191// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00004192// CHECK: <key>line</key><integer>220</integer>
Gabor Horvath1cbf4352015-09-08 21:04:14 +00004193// CHECK: <key>col</key><integer>20</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00004194// CHECK: <key>file</key><integer>0</integer>
4195// CHECK: </dict>
4196// CHECK: </array>
4197// CHECK: </array>
4198// CHECK: <key>depth</key><integer>0</integer>
4199// CHECK: <key>extended_message</key>
Gabor Horvath1cbf4352015-09-08 21:04:14 +00004200// CHECK: <string>Conversion from value of type &apos;MutableArray&lt;NSMutableString *&gt; *&apos; to incompatible type &apos;MutableArray&lt;NSString *&gt; *&apos;</string>
Gabor Horvath717b51c2015-08-21 00:18:28 +00004201// CHECK: <key>message</key>
Gabor Horvath1cbf4352015-09-08 21:04:14 +00004202// CHECK: <string>Conversion from value of type &apos;MutableArray&lt;NSMutableString *&gt; *&apos; to incompatible type &apos;MutableArray&lt;NSString *&gt; *&apos;</string>
Gabor Horvath717b51c2015-08-21 00:18:28 +00004203// CHECK: </dict>
4204// CHECK: </array>
Gabor Horvath1cbf4352015-09-08 21:04:14 +00004205// CHECK: <key>description</key><string>Conversion from value of type &apos;MutableArray&lt;NSMutableString *&gt; *&apos; to incompatible type &apos;MutableArray&lt;NSString *&gt; *&apos;</string>
Gabor Horvath717b51c2015-08-21 00:18:28 +00004206// CHECK: <key>category</key><string>Core Foundation/Objective-C</string>
4207// CHECK: <key>type</key><string>Generics</string>
Gabor Horvathc0c7a5d2015-09-13 23:02:24 +00004208// CHECK: <key>check_name</key><string>core.DynamicTypePropagation</string>
Gabor Horvath717b51c2015-08-21 00:18:28 +00004209// CHECK: <key>issue_context_kind</key><string>function</string>
Gabor Horvath1cbf4352015-09-08 21:04:14 +00004210// CHECK: <key>issue_context</key><string>InferenceFromAPIWithBuggyTypes3</string>
4211// CHECK: <key>issue_hash</key><string>3</string>
Gabor Horvath717b51c2015-08-21 00:18:28 +00004212// CHECK: <key>location</key>
4213// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00004214// CHECK: <key>line</key><integer>220</integer>
Gabor Horvath1cbf4352015-09-08 21:04:14 +00004215// CHECK: <key>col</key><integer>20</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00004216// CHECK: <key>file</key><integer>0</integer>
4217// CHECK: </dict>
4218// CHECK: </dict>
4219// CHECK: <dict>
4220// CHECK: <key>path</key>
4221// CHECK: <array>
4222// CHECK: <dict>
4223// CHECK: <key>kind</key><string>event</string>
4224// CHECK: <key>location</key>
4225// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00004226// CHECK: <key>line</key><integer>224</integer>
Gabor Horvath1cbf4352015-09-08 21:04:14 +00004227// CHECK: <key>col</key><integer>45</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00004228// CHECK: <key>file</key><integer>0</integer>
4229// CHECK: </dict>
4230// CHECK: <key>ranges</key>
4231// CHECK: <array>
4232// CHECK: <array>
4233// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00004234// CHECK: <key>line</key><integer>224</integer>
Gabor Horvath1cbf4352015-09-08 21:04:14 +00004235// CHECK: <key>col</key><integer>45</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00004236// CHECK: <key>file</key><integer>0</integer>
4237// CHECK: </dict>
4238// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00004239// CHECK: <key>line</key><integer>224</integer>
Gabor Horvath1cbf4352015-09-08 21:04:14 +00004240// CHECK: <key>col</key><integer>45</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00004241// CHECK: <key>file</key><integer>0</integer>
4242// CHECK: </dict>
4243// CHECK: </array>
4244// CHECK: </array>
4245// CHECK: <key>depth</key><integer>0</integer>
4246// CHECK: <key>extended_message</key>
Gabor Horvath1cbf4352015-09-08 21:04:14 +00004247// CHECK: <string>Type &apos;NSArray&lt;NSString *&gt; *&apos; is inferred from implicit cast (from &apos;__kindof NSArray&lt;NSString *&gt; *&apos; to &apos;BuggyMutableArray&lt;NSMutableString *&gt; *&apos;)</string>
Gabor Horvath717b51c2015-08-21 00:18:28 +00004248// CHECK: <key>message</key>
Gabor Horvath1cbf4352015-09-08 21:04:14 +00004249// CHECK: <string>Type &apos;NSArray&lt;NSString *&gt; *&apos; is inferred from implicit cast (from &apos;__kindof NSArray&lt;NSString *&gt; *&apos; to &apos;BuggyMutableArray&lt;NSMutableString *&gt; *&apos;)</string>
Gabor Horvath717b51c2015-08-21 00:18:28 +00004250// CHECK: </dict>
4251// CHECK: <dict>
4252// CHECK: <key>kind</key><string>control</string>
4253// CHECK: <key>edges</key>
4254// CHECK: <array>
4255// CHECK: <dict>
4256// CHECK: <key>start</key>
4257// CHECK: <array>
4258// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00004259// CHECK: <key>line</key><integer>224</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00004260// CHECK: <key>col</key><integer>3</integer>
4261// CHECK: <key>file</key><integer>0</integer>
4262// CHECK: </dict>
4263// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00004264// CHECK: <key>line</key><integer>224</integer>
Gabor Horvath1cbf4352015-09-08 21:04:14 +00004265// CHECK: <key>col</key><integer>19</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00004266// CHECK: <key>file</key><integer>0</integer>
4267// CHECK: </dict>
4268// CHECK: </array>
4269// CHECK: <key>end</key>
4270// CHECK: <array>
4271// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00004272// CHECK: <key>line</key><integer>225</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00004273// CHECK: <key>col</key><integer>3</integer>
4274// CHECK: <key>file</key><integer>0</integer>
4275// CHECK: </dict>
4276// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00004277// CHECK: <key>line</key><integer>225</integer>
Gabor Horvath1cbf4352015-09-08 21:04:14 +00004278// CHECK: <key>col</key><integer>18</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00004279// CHECK: <key>file</key><integer>0</integer>
4280// CHECK: </dict>
4281// CHECK: </array>
4282// CHECK: </dict>
4283// CHECK: </array>
4284// CHECK: </dict>
4285// CHECK: <dict>
4286// CHECK: <key>kind</key><string>event</string>
4287// CHECK: <key>location</key>
4288// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00004289// CHECK: <key>line</key><integer>225</integer>
Gabor Horvath1cbf4352015-09-08 21:04:14 +00004290// CHECK: <key>col</key><integer>20</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00004291// CHECK: <key>file</key><integer>0</integer>
4292// CHECK: </dict>
4293// CHECK: <key>ranges</key>
4294// CHECK: <array>
4295// CHECK: <array>
4296// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00004297// CHECK: <key>line</key><integer>225</integer>
Gabor Horvath1cbf4352015-09-08 21:04:14 +00004298// CHECK: <key>col</key><integer>20</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00004299// CHECK: <key>file</key><integer>0</integer>
4300// CHECK: </dict>
4301// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00004302// CHECK: <key>line</key><integer>225</integer>
Gabor Horvath1cbf4352015-09-08 21:04:14 +00004303// CHECK: <key>col</key><integer>20</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00004304// CHECK: <key>file</key><integer>0</integer>
4305// CHECK: </dict>
4306// CHECK: </array>
4307// CHECK: </array>
4308// CHECK: <key>depth</key><integer>0</integer>
4309// CHECK: <key>extended_message</key>
Gabor Horvath1cbf4352015-09-08 21:04:14 +00004310// CHECK: <string>Type &apos;MutableArray&lt;NSString *&gt; *&apos; is inferred from implicit cast (from &apos;BuggyMutableArray&lt;NSMutableString *&gt; *&apos; to &apos;MutableArray&lt;NSString *&gt; *&apos;)</string>
Gabor Horvath717b51c2015-08-21 00:18:28 +00004311// CHECK: <key>message</key>
Gabor Horvath1cbf4352015-09-08 21:04:14 +00004312// CHECK: <string>Type &apos;MutableArray&lt;NSString *&gt; *&apos; is inferred from implicit cast (from &apos;BuggyMutableArray&lt;NSMutableString *&gt; *&apos; to &apos;MutableArray&lt;NSString *&gt; *&apos;)</string>
4313// CHECK: </dict>
4314// CHECK: <dict>
4315// CHECK: <key>kind</key><string>control</string>
4316// CHECK: <key>edges</key>
4317// CHECK: <array>
4318// CHECK: <dict>
4319// CHECK: <key>start</key>
4320// CHECK: <array>
4321// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00004322// CHECK: <key>line</key><integer>225</integer>
Gabor Horvath1cbf4352015-09-08 21:04:14 +00004323// CHECK: <key>col</key><integer>3</integer>
4324// CHECK: <key>file</key><integer>0</integer>
4325// CHECK: </dict>
4326// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00004327// CHECK: <key>line</key><integer>225</integer>
Gabor Horvath1cbf4352015-09-08 21:04:14 +00004328// CHECK: <key>col</key><integer>18</integer>
4329// CHECK: <key>file</key><integer>0</integer>
4330// CHECK: </dict>
4331// CHECK: </array>
4332// CHECK: <key>end</key>
4333// CHECK: <array>
4334// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00004335// CHECK: <key>line</key><integer>226</integer>
Gabor Horvath1cbf4352015-09-08 21:04:14 +00004336// CHECK: <key>col</key><integer>3</integer>
4337// CHECK: <key>file</key><integer>0</integer>
4338// CHECK: </dict>
4339// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00004340// CHECK: <key>line</key><integer>226</integer>
Gabor Horvath1cbf4352015-09-08 21:04:14 +00004341// CHECK: <key>col</key><integer>25</integer>
4342// CHECK: <key>file</key><integer>0</integer>
4343// CHECK: </dict>
4344// CHECK: </array>
4345// CHECK: </dict>
4346// CHECK: </array>
4347// CHECK: </dict>
4348// CHECK: <dict>
4349// CHECK: <key>kind</key><string>control</string>
4350// CHECK: <key>edges</key>
4351// CHECK: <array>
4352// CHECK: <dict>
4353// CHECK: <key>start</key>
4354// CHECK: <array>
4355// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00004356// CHECK: <key>line</key><integer>226</integer>
Gabor Horvath1cbf4352015-09-08 21:04:14 +00004357// CHECK: <key>col</key><integer>3</integer>
4358// CHECK: <key>file</key><integer>0</integer>
4359// CHECK: </dict>
4360// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00004361// CHECK: <key>line</key><integer>226</integer>
Gabor Horvath1cbf4352015-09-08 21:04:14 +00004362// CHECK: <key>col</key><integer>25</integer>
4363// CHECK: <key>file</key><integer>0</integer>
4364// CHECK: </dict>
4365// CHECK: </array>
4366// CHECK: <key>end</key>
4367// CHECK: <array>
4368// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00004369// CHECK: <key>line</key><integer>226</integer>
Gabor Horvath1cbf4352015-09-08 21:04:14 +00004370// CHECK: <key>col</key><integer>27</integer>
4371// CHECK: <key>file</key><integer>0</integer>
4372// CHECK: </dict>
4373// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00004374// CHECK: <key>line</key><integer>226</integer>
Gabor Horvath1cbf4352015-09-08 21:04:14 +00004375// CHECK: <key>col</key><integer>27</integer>
4376// CHECK: <key>file</key><integer>0</integer>
4377// CHECK: </dict>
4378// CHECK: </array>
4379// CHECK: </dict>
4380// CHECK: </array>
4381// CHECK: </dict>
4382// CHECK: <dict>
4383// CHECK: <key>kind</key><string>event</string>
4384// CHECK: <key>location</key>
4385// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00004386// CHECK: <key>line</key><integer>226</integer>
Gabor Horvath1cbf4352015-09-08 21:04:14 +00004387// CHECK: <key>col</key><integer>27</integer>
4388// CHECK: <key>file</key><integer>0</integer>
4389// CHECK: </dict>
4390// CHECK: <key>ranges</key>
4391// CHECK: <array>
4392// CHECK: <array>
4393// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00004394// CHECK: <key>line</key><integer>226</integer>
Gabor Horvath1cbf4352015-09-08 21:04:14 +00004395// CHECK: <key>col</key><integer>27</integer>
4396// CHECK: <key>file</key><integer>0</integer>
4397// CHECK: </dict>
4398// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00004399// CHECK: <key>line</key><integer>226</integer>
Gabor Horvath1cbf4352015-09-08 21:04:14 +00004400// CHECK: <key>col</key><integer>27</integer>
4401// CHECK: <key>file</key><integer>0</integer>
4402// CHECK: </dict>
4403// CHECK: </array>
4404// CHECK: </array>
4405// CHECK: <key>depth</key><integer>0</integer>
4406// CHECK: <key>extended_message</key>
4407// CHECK: <string>Conversion from value of type &apos;MutableArray&lt;NSString *&gt; *&apos; to incompatible type &apos;MutableArray&lt;NSMutableString *&gt; *&apos;</string>
4408// CHECK: <key>message</key>
4409// CHECK: <string>Conversion from value of type &apos;MutableArray&lt;NSString *&gt; *&apos; to incompatible type &apos;MutableArray&lt;NSMutableString *&gt; *&apos;</string>
Gabor Horvath717b51c2015-08-21 00:18:28 +00004410// CHECK: </dict>
4411// CHECK: </array>
Gabor Horvath1cbf4352015-09-08 21:04:14 +00004412// CHECK: <key>description</key><string>Conversion from value of type &apos;MutableArray&lt;NSString *&gt; *&apos; to incompatible type &apos;MutableArray&lt;NSMutableString *&gt; *&apos;</string>
Gabor Horvath717b51c2015-08-21 00:18:28 +00004413// CHECK: <key>category</key><string>Core Foundation/Objective-C</string>
4414// CHECK: <key>type</key><string>Generics</string>
Gabor Horvathc0c7a5d2015-09-13 23:02:24 +00004415// CHECK: <key>check_name</key><string>core.DynamicTypePropagation</string>
Gabor Horvath717b51c2015-08-21 00:18:28 +00004416// CHECK: <key>issue_context_kind</key><string>function</string>
Gabor Horvath1cbf4352015-09-08 21:04:14 +00004417// CHECK: <key>issue_context</key><string>InferenceFromAPIWithBuggyTypes4</string>
4418// CHECK: <key>issue_hash</key><string>3</string>
Gabor Horvath717b51c2015-08-21 00:18:28 +00004419// CHECK: <key>location</key>
4420// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00004421// CHECK: <key>line</key><integer>226</integer>
Gabor Horvath1cbf4352015-09-08 21:04:14 +00004422// CHECK: <key>col</key><integer>27</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00004423// CHECK: <key>file</key><integer>0</integer>
4424// CHECK: </dict>
4425// CHECK: </dict>
4426// CHECK: <dict>
4427// CHECK: <key>path</key>
4428// CHECK: <array>
4429// CHECK: <dict>
Gabor Horvath717b51c2015-08-21 00:18:28 +00004430// CHECK: <key>kind</key><string>control</string>
4431// CHECK: <key>edges</key>
4432// CHECK: <array>
4433// CHECK: <dict>
4434// CHECK: <key>start</key>
4435// CHECK: <array>
4436// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00004437// CHECK: <key>line</key><integer>238</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00004438// CHECK: <key>col</key><integer>3</integer>
4439// CHECK: <key>file</key><integer>0</integer>
4440// CHECK: </dict>
4441// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00004442// CHECK: <key>line</key><integer>238</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00004443// CHECK: <key>col</key><integer>9</integer>
4444// CHECK: <key>file</key><integer>0</integer>
4445// CHECK: </dict>
4446// CHECK: </array>
4447// CHECK: <key>end</key>
4448// CHECK: <array>
4449// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00004450// CHECK: <key>line</key><integer>239</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00004451// CHECK: <key>col</key><integer>3</integer>
4452// CHECK: <key>file</key><integer>0</integer>
4453// CHECK: </dict>
4454// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00004455// CHECK: <key>line</key><integer>239</integer>
Gabor Horvath1cbf4352015-09-08 21:04:14 +00004456// CHECK: <key>col</key><integer>10</integer>
4457// CHECK: <key>file</key><integer>0</integer>
4458// CHECK: </dict>
4459// CHECK: </array>
4460// CHECK: </dict>
4461// CHECK: </array>
4462// CHECK: </dict>
4463// CHECK: <dict>
4464// CHECK: <key>kind</key><string>control</string>
4465// CHECK: <key>edges</key>
4466// CHECK: <array>
4467// CHECK: <dict>
4468// CHECK: <key>start</key>
4469// CHECK: <array>
4470// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00004471// CHECK: <key>line</key><integer>239</integer>
Gabor Horvath1cbf4352015-09-08 21:04:14 +00004472// CHECK: <key>col</key><integer>3</integer>
4473// CHECK: <key>file</key><integer>0</integer>
4474// CHECK: </dict>
4475// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00004476// CHECK: <key>line</key><integer>239</integer>
Gabor Horvath1cbf4352015-09-08 21:04:14 +00004477// CHECK: <key>col</key><integer>10</integer>
4478// CHECK: <key>file</key><integer>0</integer>
4479// CHECK: </dict>
4480// CHECK: </array>
4481// CHECK: <key>end</key>
4482// CHECK: <array>
4483// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00004484// CHECK: <key>line</key><integer>239</integer>
Gabor Horvath1cbf4352015-09-08 21:04:14 +00004485// CHECK: <key>col</key><integer>19</integer>
4486// CHECK: <key>file</key><integer>0</integer>
4487// CHECK: </dict>
4488// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00004489// CHECK: <key>line</key><integer>239</integer>
Gabor Horvath1cbf4352015-09-08 21:04:14 +00004490// CHECK: <key>col</key><integer>19</integer>
4491// CHECK: <key>file</key><integer>0</integer>
4492// CHECK: </dict>
4493// CHECK: </array>
4494// CHECK: </dict>
4495// CHECK: </array>
4496// CHECK: </dict>
4497// CHECK: <dict>
4498// CHECK: <key>kind</key><string>event</string>
4499// CHECK: <key>location</key>
4500// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00004501// CHECK: <key>line</key><integer>239</integer>
Gabor Horvath1cbf4352015-09-08 21:04:14 +00004502// CHECK: <key>col</key><integer>19</integer>
4503// CHECK: <key>file</key><integer>0</integer>
4504// CHECK: </dict>
4505// CHECK: <key>ranges</key>
4506// CHECK: <array>
4507// CHECK: <array>
4508// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00004509// CHECK: <key>line</key><integer>239</integer>
Gabor Horvath1cbf4352015-09-08 21:04:14 +00004510// CHECK: <key>col</key><integer>19</integer>
4511// CHECK: <key>file</key><integer>0</integer>
4512// CHECK: </dict>
4513// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00004514// CHECK: <key>line</key><integer>239</integer>
Gabor Horvath1cbf4352015-09-08 21:04:14 +00004515// CHECK: <key>col</key><integer>38</integer>
4516// CHECK: <key>file</key><integer>0</integer>
4517// CHECK: </dict>
4518// CHECK: </array>
4519// CHECK: </array>
4520// CHECK: <key>depth</key><integer>0</integer>
4521// CHECK: <key>extended_message</key>
Gabor Horvathdce40c52015-09-18 21:15:37 +00004522// CHECK: <string>Type &apos;NSNumber *&apos; is inferred from this context</string>
Gabor Horvath1cbf4352015-09-08 21:04:14 +00004523// CHECK: <key>message</key>
Gabor Horvathdce40c52015-09-18 21:15:37 +00004524// CHECK: <string>Type &apos;NSNumber *&apos; is inferred from this context</string>
4525// CHECK: </dict>
4526// CHECK: <dict>
4527// CHECK: <key>kind</key><string>event</string>
4528// CHECK: <key>location</key>
4529// CHECK: <dict>
4530// CHECK: <key>line</key><integer>239</integer>
4531// CHECK: <key>col</key><integer>19</integer>
4532// CHECK: <key>file</key><integer>0</integer>
4533// CHECK: </dict>
4534// CHECK: <key>ranges</key>
4535// CHECK: <array>
4536// CHECK: <array>
4537// CHECK: <dict>
4538// CHECK: <key>line</key><integer>239</integer>
4539// CHECK: <key>col</key><integer>19</integer>
4540// CHECK: <key>file</key><integer>0</integer>
4541// CHECK: </dict>
4542// CHECK: <dict>
4543// CHECK: <key>line</key><integer>239</integer>
4544// CHECK: <key>col</key><integer>38</integer>
4545// CHECK: <key>file</key><integer>0</integer>
4546// CHECK: </dict>
4547// CHECK: </array>
4548// CHECK: </array>
4549// CHECK: <key>depth</key><integer>0</integer>
4550// CHECK: <key>extended_message</key>
4551// CHECK: <string>Object has a dynamic type &apos;NSNumber *&apos; which is incompatible with static type &apos;NSString *&apos;</string>
4552// CHECK: <key>message</key>
4553// CHECK: <string>Object has a dynamic type &apos;NSNumber *&apos; which is incompatible with static type &apos;NSString *&apos;</string>
Gabor Horvath1cbf4352015-09-08 21:04:14 +00004554// CHECK: </dict>
4555// CHECK: </array>
Gabor Horvathdce40c52015-09-18 21:15:37 +00004556// CHECK: <key>description</key><string>Object has a dynamic type &apos;NSNumber *&apos; which is incompatible with static type &apos;NSString *&apos;</string>
4557// CHECK: <key>category</key><string>Type Error</string>
4558// CHECK: <key>type</key><string>Dynamic and static type mismatch</string>
4559// CHECK: <key>check_name</key><string>alpha.core.DynamicTypeChecker</string>
Gabor Horvath1cbf4352015-09-08 21:04:14 +00004560// CHECK: <key>issue_context_kind</key><string>function</string>
4561// CHECK: <key>issue_context</key><string>workWithProperties</string>
4562// CHECK: <key>issue_hash</key><string>2</string>
4563// CHECK: <key>location</key>
4564// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00004565// CHECK: <key>line</key><integer>239</integer>
Gabor Horvath1cbf4352015-09-08 21:04:14 +00004566// CHECK: <key>col</key><integer>19</integer>
4567// CHECK: <key>file</key><integer>0</integer>
4568// CHECK: </dict>
4569// CHECK: </dict>
4570// CHECK: <dict>
4571// CHECK: <key>path</key>
4572// CHECK: <array>
4573// CHECK: <dict>
Gabor Horvath1cbf4352015-09-08 21:04:14 +00004574// CHECK: <key>kind</key><string>control</string>
4575// CHECK: <key>edges</key>
4576// CHECK: <array>
4577// CHECK: <dict>
4578// CHECK: <key>start</key>
4579// CHECK: <array>
4580// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00004581// CHECK: <key>line</key><integer>238</integer>
Gabor Horvath1cbf4352015-09-08 21:04:14 +00004582// CHECK: <key>col</key><integer>3</integer>
4583// CHECK: <key>file</key><integer>0</integer>
4584// CHECK: </dict>
4585// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00004586// CHECK: <key>line</key><integer>238</integer>
Gabor Horvath1cbf4352015-09-08 21:04:14 +00004587// CHECK: <key>col</key><integer>9</integer>
4588// CHECK: <key>file</key><integer>0</integer>
4589// CHECK: </dict>
4590// CHECK: </array>
4591// CHECK: <key>end</key>
4592// CHECK: <array>
4593// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00004594// CHECK: <key>line</key><integer>241</integer>
Gabor Horvath1cbf4352015-09-08 21:04:14 +00004595// CHECK: <key>col</key><integer>3</integer>
4596// CHECK: <key>file</key><integer>0</integer>
4597// CHECK: </dict>
4598// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00004599// CHECK: <key>line</key><integer>241</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00004600// CHECK: <key>col</key><integer>5</integer>
4601// CHECK: <key>file</key><integer>0</integer>
4602// CHECK: </dict>
4603// CHECK: </array>
4604// CHECK: </dict>
4605// CHECK: </array>
4606// CHECK: </dict>
4607// CHECK: <dict>
4608// CHECK: <key>kind</key><string>control</string>
4609// CHECK: <key>edges</key>
4610// CHECK: <array>
4611// CHECK: <dict>
4612// CHECK: <key>start</key>
4613// CHECK: <array>
4614// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00004615// CHECK: <key>line</key><integer>241</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00004616// CHECK: <key>col</key><integer>3</integer>
4617// CHECK: <key>file</key><integer>0</integer>
4618// CHECK: </dict>
4619// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00004620// CHECK: <key>line</key><integer>241</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00004621// CHECK: <key>col</key><integer>5</integer>
4622// CHECK: <key>file</key><integer>0</integer>
4623// CHECK: </dict>
4624// CHECK: </array>
4625// CHECK: <key>end</key>
4626// CHECK: <array>
4627// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00004628// CHECK: <key>line</key><integer>241</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00004629// CHECK: <key>col</key><integer>9</integer>
4630// CHECK: <key>file</key><integer>0</integer>
4631// CHECK: </dict>
4632// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00004633// CHECK: <key>line</key><integer>241</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00004634// CHECK: <key>col</key><integer>9</integer>
4635// CHECK: <key>file</key><integer>0</integer>
4636// CHECK: </dict>
4637// CHECK: </array>
4638// CHECK: </dict>
4639// CHECK: </array>
4640// CHECK: </dict>
4641// CHECK: <dict>
4642// CHECK: <key>kind</key><string>event</string>
4643// CHECK: <key>location</key>
4644// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00004645// CHECK: <key>line</key><integer>241</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00004646// CHECK: <key>col</key><integer>9</integer>
4647// CHECK: <key>file</key><integer>0</integer>
4648// CHECK: </dict>
4649// CHECK: <key>ranges</key>
4650// CHECK: <array>
4651// CHECK: <array>
4652// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00004653// CHECK: <key>line</key><integer>241</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00004654// CHECK: <key>col</key><integer>9</integer>
4655// CHECK: <key>file</key><integer>0</integer>
4656// CHECK: </dict>
4657// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00004658// CHECK: <key>line</key><integer>241</integer>
Gabor Horvath1cbf4352015-09-08 21:04:14 +00004659// CHECK: <key>col</key><integer>23</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00004660// CHECK: <key>file</key><integer>0</integer>
4661// CHECK: </dict>
4662// CHECK: </array>
4663// CHECK: </array>
4664// CHECK: <key>depth</key><integer>0</integer>
4665// CHECK: <key>extended_message</key>
Gabor Horvathdce40c52015-09-18 21:15:37 +00004666// CHECK: <string>Type &apos;NSNumber *&apos; is inferred from this context</string>
Gabor Horvath717b51c2015-08-21 00:18:28 +00004667// CHECK: <key>message</key>
Gabor Horvathdce40c52015-09-18 21:15:37 +00004668// CHECK: <string>Type &apos;NSNumber *&apos; is inferred from this context</string>
4669// CHECK: </dict>
4670// CHECK: <dict>
4671// CHECK: <key>kind</key><string>event</string>
4672// CHECK: <key>location</key>
4673// CHECK: <dict>
4674// CHECK: <key>line</key><integer>241</integer>
4675// CHECK: <key>col</key><integer>9</integer>
4676// CHECK: <key>file</key><integer>0</integer>
4677// CHECK: </dict>
4678// CHECK: <key>ranges</key>
4679// CHECK: <array>
4680// CHECK: <array>
4681// CHECK: <dict>
4682// CHECK: <key>line</key><integer>241</integer>
4683// CHECK: <key>col</key><integer>9</integer>
4684// CHECK: <key>file</key><integer>0</integer>
4685// CHECK: </dict>
4686// CHECK: <dict>
4687// CHECK: <key>line</key><integer>241</integer>
4688// CHECK: <key>col</key><integer>23</integer>
4689// CHECK: <key>file</key><integer>0</integer>
4690// CHECK: </dict>
4691// CHECK: </array>
4692// CHECK: </array>
4693// CHECK: <key>depth</key><integer>0</integer>
4694// CHECK: <key>extended_message</key>
4695// CHECK: <string>Object has a dynamic type &apos;NSNumber *&apos; which is incompatible with static type &apos;NSString *&apos;</string>
4696// CHECK: <key>message</key>
4697// CHECK: <string>Object has a dynamic type &apos;NSNumber *&apos; which is incompatible with static type &apos;NSString *&apos;</string>
Gabor Horvath717b51c2015-08-21 00:18:28 +00004698// CHECK: </dict>
4699// CHECK: </array>
Gabor Horvathdce40c52015-09-18 21:15:37 +00004700// CHECK: <key>description</key><string>Object has a dynamic type &apos;NSNumber *&apos; which is incompatible with static type &apos;NSString *&apos;</string>
4701// CHECK: <key>category</key><string>Type Error</string>
4702// CHECK: <key>type</key><string>Dynamic and static type mismatch</string>
4703// CHECK: <key>check_name</key><string>alpha.core.DynamicTypeChecker</string>
Gabor Horvath717b51c2015-08-21 00:18:28 +00004704// CHECK: <key>issue_context_kind</key><string>function</string>
4705// CHECK: <key>issue_context</key><string>workWithProperties</string>
Gabor Horvath1cbf4352015-09-08 21:04:14 +00004706// CHECK: <key>issue_hash</key><string>4</string>
Gabor Horvath717b51c2015-08-21 00:18:28 +00004707// CHECK: <key>location</key>
4708// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00004709// CHECK: <key>line</key><integer>241</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00004710// CHECK: <key>col</key><integer>9</integer>
4711// CHECK: <key>file</key><integer>0</integer>
4712// CHECK: </dict>
4713// CHECK: </dict>
4714// CHECK: <dict>
4715// CHECK: <key>path</key>
4716// CHECK: <array>
4717// CHECK: <dict>
Gabor Horvath1cbf4352015-09-08 21:04:14 +00004718// CHECK: <key>kind</key><string>control</string>
4719// CHECK: <key>edges</key>
4720// CHECK: <array>
4721// CHECK: <dict>
4722// CHECK: <key>start</key>
4723// CHECK: <array>
4724// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00004725// CHECK: <key>line</key><integer>238</integer>
Gabor Horvath1cbf4352015-09-08 21:04:14 +00004726// CHECK: <key>col</key><integer>3</integer>
4727// CHECK: <key>file</key><integer>0</integer>
4728// CHECK: </dict>
4729// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00004730// CHECK: <key>line</key><integer>238</integer>
Gabor Horvath1cbf4352015-09-08 21:04:14 +00004731// CHECK: <key>col</key><integer>9</integer>
4732// CHECK: <key>file</key><integer>0</integer>
4733// CHECK: </dict>
4734// CHECK: </array>
4735// CHECK: <key>end</key>
4736// CHECK: <array>
4737// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00004738// CHECK: <key>line</key><integer>243</integer>
Gabor Horvath1cbf4352015-09-08 21:04:14 +00004739// CHECK: <key>col</key><integer>3</integer>
4740// CHECK: <key>file</key><integer>0</integer>
4741// CHECK: </dict>
4742// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00004743// CHECK: <key>line</key><integer>243</integer>
Gabor Horvath1cbf4352015-09-08 21:04:14 +00004744// CHECK: <key>col</key><integer>5</integer>
4745// CHECK: <key>file</key><integer>0</integer>
4746// CHECK: </dict>
4747// CHECK: </array>
4748// CHECK: </dict>
4749// CHECK: </array>
4750// CHECK: </dict>
4751// CHECK: <dict>
4752// CHECK: <key>kind</key><string>control</string>
4753// CHECK: <key>edges</key>
4754// CHECK: <array>
4755// CHECK: <dict>
4756// CHECK: <key>start</key>
4757// CHECK: <array>
4758// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00004759// CHECK: <key>line</key><integer>243</integer>
Gabor Horvath1cbf4352015-09-08 21:04:14 +00004760// CHECK: <key>col</key><integer>3</integer>
4761// CHECK: <key>file</key><integer>0</integer>
4762// CHECK: </dict>
4763// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00004764// CHECK: <key>line</key><integer>243</integer>
Gabor Horvath1cbf4352015-09-08 21:04:14 +00004765// CHECK: <key>col</key><integer>5</integer>
4766// CHECK: <key>file</key><integer>0</integer>
4767// CHECK: </dict>
4768// CHECK: </array>
4769// CHECK: <key>end</key>
4770// CHECK: <array>
4771// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00004772// CHECK: <key>line</key><integer>243</integer>
Gabor Horvath1cbf4352015-09-08 21:04:14 +00004773// CHECK: <key>col</key><integer>11</integer>
4774// CHECK: <key>file</key><integer>0</integer>
4775// CHECK: </dict>
4776// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00004777// CHECK: <key>line</key><integer>243</integer>
Gabor Horvath1cbf4352015-09-08 21:04:14 +00004778// CHECK: <key>col</key><integer>21</integer>
4779// CHECK: <key>file</key><integer>0</integer>
4780// CHECK: </dict>
4781// CHECK: </array>
4782// CHECK: </dict>
4783// CHECK: </array>
4784// CHECK: </dict>
4785// CHECK: <dict>
4786// CHECK: <key>kind</key><string>event</string>
4787// CHECK: <key>location</key>
4788// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00004789// CHECK: <key>line</key><integer>243</integer>
Gabor Horvath1cbf4352015-09-08 21:04:14 +00004790// CHECK: <key>col</key><integer>11</integer>
4791// CHECK: <key>file</key><integer>0</integer>
4792// CHECK: </dict>
4793// CHECK: <key>ranges</key>
4794// CHECK: <array>
4795// CHECK: <array>
4796// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00004797// CHECK: <key>line</key><integer>243</integer>
Gabor Horvath1cbf4352015-09-08 21:04:14 +00004798// CHECK: <key>col</key><integer>11</integer>
4799// CHECK: <key>file</key><integer>0</integer>
4800// CHECK: </dict>
4801// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00004802// CHECK: <key>line</key><integer>243</integer>
Gabor Horvath1cbf4352015-09-08 21:04:14 +00004803// CHECK: <key>col</key><integer>21</integer>
4804// CHECK: <key>file</key><integer>0</integer>
4805// CHECK: </dict>
4806// CHECK: </array>
4807// CHECK: </array>
4808// CHECK: <key>depth</key><integer>0</integer>
4809// CHECK: <key>extended_message</key>
Gabor Horvathdce40c52015-09-18 21:15:37 +00004810// CHECK: <string>Type &apos;NSNumber *&apos; is inferred from this context</string>
Gabor Horvath1cbf4352015-09-08 21:04:14 +00004811// CHECK: <key>message</key>
Gabor Horvathdce40c52015-09-18 21:15:37 +00004812// CHECK: <string>Type &apos;NSNumber *&apos; is inferred from this context</string>
Gabor Horvath1cbf4352015-09-08 21:04:14 +00004813// CHECK: </dict>
Gabor Horvath1cbf4352015-09-08 21:04:14 +00004814// CHECK: <dict>
4815// CHECK: <key>kind</key><string>event</string>
4816// CHECK: <key>location</key>
4817// CHECK: <dict>
Gabor Horvathdce40c52015-09-18 21:15:37 +00004818// CHECK: <key>line</key><integer>243</integer>
4819// CHECK: <key>col</key><integer>9</integer>
Gabor Horvath1cbf4352015-09-08 21:04:14 +00004820// CHECK: <key>file</key><integer>0</integer>
4821// CHECK: </dict>
4822// CHECK: <key>ranges</key>
4823// CHECK: <array>
4824// CHECK: <array>
4825// CHECK: <dict>
Gabor Horvathdce40c52015-09-18 21:15:37 +00004826// CHECK: <key>line</key><integer>243</integer>
4827// CHECK: <key>col</key><integer>9</integer>
Gabor Horvath1cbf4352015-09-08 21:04:14 +00004828// CHECK: <key>file</key><integer>0</integer>
4829// CHECK: </dict>
4830// CHECK: <dict>
Gabor Horvathdce40c52015-09-18 21:15:37 +00004831// CHECK: <key>line</key><integer>243</integer>
4832// CHECK: <key>col</key><integer>21</integer>
Gabor Horvath1cbf4352015-09-08 21:04:14 +00004833// CHECK: <key>file</key><integer>0</integer>
4834// CHECK: </dict>
4835// CHECK: </array>
4836// CHECK: </array>
4837// CHECK: <key>depth</key><integer>0</integer>
4838// CHECK: <key>extended_message</key>
Gabor Horvathdce40c52015-09-18 21:15:37 +00004839// CHECK: <string>Object has a dynamic type &apos;NSNumber *&apos; which is incompatible with static type &apos;NSString *&apos;</string>
Gabor Horvath1cbf4352015-09-08 21:04:14 +00004840// CHECK: <key>message</key>
Gabor Horvathdce40c52015-09-18 21:15:37 +00004841// CHECK: <string>Object has a dynamic type &apos;NSNumber *&apos; which is incompatible with static type &apos;NSString *&apos;</string>
Gabor Horvath1cbf4352015-09-08 21:04:14 +00004842// CHECK: </dict>
Gabor Horvathdce40c52015-09-18 21:15:37 +00004843// CHECK: </array>
4844// CHECK: <key>description</key><string>Object has a dynamic type &apos;NSNumber *&apos; which is incompatible with static type &apos;NSString *&apos;</string>
4845// CHECK: <key>category</key><string>Type Error</string>
4846// CHECK: <key>type</key><string>Dynamic and static type mismatch</string>
4847// CHECK: <key>check_name</key><string>alpha.core.DynamicTypeChecker</string>
4848// CHECK: <key>issue_context_kind</key><string>function</string>
4849// CHECK: <key>issue_context</key><string>workWithProperties</string>
4850// CHECK: <key>issue_hash</key><string>6</string>
4851// CHECK: <key>location</key>
4852// CHECK: <dict>
4853// CHECK: <key>line</key><integer>243</integer>
4854// CHECK: <key>col</key><integer>9</integer>
4855// CHECK: <key>file</key><integer>0</integer>
4856// CHECK: </dict>
4857// CHECK: </dict>
4858// CHECK: <dict>
4859// CHECK: <key>path</key>
4860// CHECK: <array>
Gabor Horvath1cbf4352015-09-08 21:04:14 +00004861// CHECK: <dict>
4862// CHECK: <key>kind</key><string>control</string>
4863// CHECK: <key>edges</key>
4864// CHECK: <array>
4865// CHECK: <dict>
4866// CHECK: <key>start</key>
4867// CHECK: <array>
4868// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00004869// CHECK: <key>line</key><integer>238</integer>
Gabor Horvath1cbf4352015-09-08 21:04:14 +00004870// CHECK: <key>col</key><integer>3</integer>
4871// CHECK: <key>file</key><integer>0</integer>
4872// CHECK: </dict>
4873// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00004874// CHECK: <key>line</key><integer>238</integer>
Gabor Horvath1cbf4352015-09-08 21:04:14 +00004875// CHECK: <key>col</key><integer>9</integer>
4876// CHECK: <key>file</key><integer>0</integer>
4877// CHECK: </dict>
4878// CHECK: </array>
4879// CHECK: <key>end</key>
4880// CHECK: <array>
4881// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00004882// CHECK: <key>line</key><integer>245</integer>
Gabor Horvath1cbf4352015-09-08 21:04:14 +00004883// CHECK: <key>col</key><integer>3</integer>
4884// CHECK: <key>file</key><integer>0</integer>
4885// CHECK: </dict>
4886// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00004887// CHECK: <key>line</key><integer>245</integer>
Gabor Horvath1cbf4352015-09-08 21:04:14 +00004888// CHECK: <key>col</key><integer>5</integer>
4889// CHECK: <key>file</key><integer>0</integer>
4890// CHECK: </dict>
4891// CHECK: </array>
4892// CHECK: </dict>
4893// CHECK: </array>
4894// CHECK: </dict>
4895// CHECK: <dict>
4896// CHECK: <key>kind</key><string>control</string>
4897// CHECK: <key>edges</key>
4898// CHECK: <array>
4899// CHECK: <dict>
4900// CHECK: <key>start</key>
4901// CHECK: <array>
4902// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00004903// CHECK: <key>line</key><integer>245</integer>
Gabor Horvath1cbf4352015-09-08 21:04:14 +00004904// CHECK: <key>col</key><integer>3</integer>
4905// CHECK: <key>file</key><integer>0</integer>
4906// CHECK: </dict>
4907// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00004908// CHECK: <key>line</key><integer>245</integer>
Gabor Horvath1cbf4352015-09-08 21:04:14 +00004909// CHECK: <key>col</key><integer>5</integer>
4910// CHECK: <key>file</key><integer>0</integer>
4911// CHECK: </dict>
4912// CHECK: </array>
4913// CHECK: <key>end</key>
4914// CHECK: <array>
4915// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00004916// CHECK: <key>line</key><integer>245</integer>
Gabor Horvath1cbf4352015-09-08 21:04:14 +00004917// CHECK: <key>col</key><integer>9</integer>
4918// CHECK: <key>file</key><integer>0</integer>
4919// CHECK: </dict>
4920// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00004921// CHECK: <key>line</key><integer>245</integer>
Gabor Horvath1cbf4352015-09-08 21:04:14 +00004922// CHECK: <key>col</key><integer>9</integer>
4923// CHECK: <key>file</key><integer>0</integer>
4924// CHECK: </dict>
4925// CHECK: </array>
4926// CHECK: </dict>
4927// CHECK: </array>
4928// CHECK: </dict>
4929// CHECK: <dict>
4930// CHECK: <key>kind</key><string>event</string>
4931// CHECK: <key>location</key>
4932// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00004933// CHECK: <key>line</key><integer>245</integer>
Gabor Horvath1cbf4352015-09-08 21:04:14 +00004934// CHECK: <key>col</key><integer>9</integer>
4935// CHECK: <key>file</key><integer>0</integer>
4936// CHECK: </dict>
4937// CHECK: <key>ranges</key>
4938// CHECK: <array>
4939// CHECK: <array>
4940// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00004941// CHECK: <key>line</key><integer>245</integer>
Gabor Horvath1cbf4352015-09-08 21:04:14 +00004942// CHECK: <key>col</key><integer>9</integer>
4943// CHECK: <key>file</key><integer>0</integer>
4944// CHECK: </dict>
4945// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00004946// CHECK: <key>line</key><integer>245</integer>
Gabor Horvath1cbf4352015-09-08 21:04:14 +00004947// CHECK: <key>col</key><integer>9</integer>
4948// CHECK: <key>file</key><integer>0</integer>
4949// CHECK: </dict>
4950// CHECK: </array>
4951// CHECK: </array>
4952// CHECK: <key>depth</key><integer>0</integer>
4953// CHECK: <key>extended_message</key>
Gabor Horvathdce40c52015-09-18 21:15:37 +00004954// CHECK: <string>Type &apos;NSNumber *&apos; is inferred from this context</string>
Gabor Horvath1cbf4352015-09-08 21:04:14 +00004955// CHECK: <key>message</key>
Gabor Horvathdce40c52015-09-18 21:15:37 +00004956// CHECK: <string>Type &apos;NSNumber *&apos; is inferred from this context</string>
4957// CHECK: </dict>
4958// CHECK: <dict>
4959// CHECK: <key>kind</key><string>event</string>
4960// CHECK: <key>location</key>
4961// CHECK: <dict>
4962// CHECK: <key>line</key><integer>245</integer>
4963// CHECK: <key>col</key><integer>9</integer>
4964// CHECK: <key>file</key><integer>0</integer>
4965// CHECK: </dict>
4966// CHECK: <key>ranges</key>
4967// CHECK: <array>
4968// CHECK: <array>
4969// CHECK: <dict>
4970// CHECK: <key>line</key><integer>245</integer>
4971// CHECK: <key>col</key><integer>9</integer>
4972// CHECK: <key>file</key><integer>0</integer>
4973// CHECK: </dict>
4974// CHECK: <dict>
4975// CHECK: <key>line</key><integer>245</integer>
4976// CHECK: <key>col</key><integer>12</integer>
4977// CHECK: <key>file</key><integer>0</integer>
4978// CHECK: </dict>
4979// CHECK: </array>
4980// CHECK: </array>
4981// CHECK: <key>depth</key><integer>0</integer>
4982// CHECK: <key>extended_message</key>
4983// CHECK: <string>Object has a dynamic type &apos;NSNumber *&apos; which is incompatible with static type &apos;NSString *&apos;</string>
4984// CHECK: <key>message</key>
4985// CHECK: <string>Object has a dynamic type &apos;NSNumber *&apos; which is incompatible with static type &apos;NSString *&apos;</string>
Gabor Horvath1cbf4352015-09-08 21:04:14 +00004986// CHECK: </dict>
4987// CHECK: </array>
Gabor Horvathdce40c52015-09-18 21:15:37 +00004988// CHECK: <key>description</key><string>Object has a dynamic type &apos;NSNumber *&apos; which is incompatible with static type &apos;NSString *&apos;</string>
4989// CHECK: <key>category</key><string>Type Error</string>
4990// CHECK: <key>type</key><string>Dynamic and static type mismatch</string>
4991// CHECK: <key>check_name</key><string>alpha.core.DynamicTypeChecker</string>
Gabor Horvath1cbf4352015-09-08 21:04:14 +00004992// CHECK: <key>issue_context_kind</key><string>function</string>
4993// CHECK: <key>issue_context</key><string>workWithProperties</string>
4994// CHECK: <key>issue_hash</key><string>8</string>
4995// CHECK: <key>location</key>
4996// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00004997// CHECK: <key>line</key><integer>245</integer>
Gabor Horvath1cbf4352015-09-08 21:04:14 +00004998// CHECK: <key>col</key><integer>9</integer>
4999// CHECK: <key>file</key><integer>0</integer>
5000// CHECK: </dict>
5001// CHECK: </dict>
5002// CHECK: <dict>
5003// CHECK: <key>path</key>
5004// CHECK: <array>
5005// CHECK: <dict>
5006// CHECK: <key>kind</key><string>event</string>
5007// CHECK: <key>location</key>
5008// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00005009// CHECK: <key>line</key><integer>251</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00005010// CHECK: <key>col</key><integer>7</integer>
5011// CHECK: <key>file</key><integer>0</integer>
5012// CHECK: </dict>
5013// CHECK: <key>ranges</key>
5014// CHECK: <array>
5015// CHECK: <array>
5016// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00005017// CHECK: <key>line</key><integer>251</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00005018// CHECK: <key>col</key><integer>7</integer>
5019// CHECK: <key>file</key><integer>0</integer>
5020// CHECK: </dict>
5021// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00005022// CHECK: <key>line</key><integer>251</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00005023// CHECK: <key>col</key><integer>7</integer>
5024// CHECK: <key>file</key><integer>0</integer>
5025// CHECK: </dict>
5026// CHECK: </array>
5027// CHECK: </array>
5028// CHECK: <key>depth</key><integer>0</integer>
5029// CHECK: <key>extended_message</key>
Gabor Horvath03dc4732015-08-25 16:38:05 +00005030// CHECK: <string>Type &apos;MutableArray&lt;NSMutableString *&gt; *&apos; is inferred from implicit cast (from &apos;MutableArray&lt;NSMutableString *&gt; *&apos; to &apos;NSArray&lt;NSMutableString *&gt; *&apos;)</string>
Gabor Horvath717b51c2015-08-21 00:18:28 +00005031// CHECK: <key>message</key>
Gabor Horvath03dc4732015-08-25 16:38:05 +00005032// CHECK: <string>Type &apos;MutableArray&lt;NSMutableString *&gt; *&apos; is inferred from implicit cast (from &apos;MutableArray&lt;NSMutableString *&gt; *&apos; to &apos;NSArray&lt;NSMutableString *&gt; *&apos;)</string>
Gabor Horvath717b51c2015-08-21 00:18:28 +00005033// CHECK: </dict>
5034// CHECK: <dict>
5035// CHECK: <key>kind</key><string>control</string>
5036// CHECK: <key>edges</key>
5037// CHECK: <array>
5038// CHECK: <dict>
5039// CHECK: <key>start</key>
5040// CHECK: <array>
5041// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00005042// CHECK: <key>line</key><integer>251</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00005043// CHECK: <key>col</key><integer>3</integer>
5044// CHECK: <key>file</key><integer>0</integer>
5045// CHECK: </dict>
5046// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00005047// CHECK: <key>line</key><integer>251</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00005048// CHECK: <key>col</key><integer>3</integer>
5049// CHECK: <key>file</key><integer>0</integer>
5050// CHECK: </dict>
5051// CHECK: </array>
5052// CHECK: <key>end</key>
5053// CHECK: <array>
5054// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00005055// CHECK: <key>line</key><integer>252</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00005056// CHECK: <key>col</key><integer>3</integer>
5057// CHECK: <key>file</key><integer>0</integer>
5058// CHECK: </dict>
5059// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00005060// CHECK: <key>line</key><integer>252</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00005061// CHECK: <key>col</key><integer>4</integer>
5062// CHECK: <key>file</key><integer>0</integer>
5063// CHECK: </dict>
5064// CHECK: </array>
5065// CHECK: </dict>
5066// CHECK: </array>
5067// CHECK: </dict>
5068// CHECK: <dict>
5069// CHECK: <key>kind</key><string>control</string>
5070// CHECK: <key>edges</key>
5071// CHECK: <array>
5072// CHECK: <dict>
5073// CHECK: <key>start</key>
5074// CHECK: <array>
5075// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00005076// CHECK: <key>line</key><integer>252</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00005077// CHECK: <key>col</key><integer>3</integer>
5078// CHECK: <key>file</key><integer>0</integer>
5079// CHECK: </dict>
5080// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00005081// CHECK: <key>line</key><integer>252</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00005082// CHECK: <key>col</key><integer>4</integer>
5083// CHECK: <key>file</key><integer>0</integer>
5084// CHECK: </dict>
5085// CHECK: </array>
5086// CHECK: <key>end</key>
5087// CHECK: <array>
5088// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00005089// CHECK: <key>line</key><integer>253</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00005090// CHECK: <key>col</key><integer>5</integer>
5091// CHECK: <key>file</key><integer>0</integer>
5092// CHECK: </dict>
5093// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00005094// CHECK: <key>line</key><integer>253</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00005095// CHECK: <key>col</key><integer>5</integer>
5096// CHECK: <key>file</key><integer>0</integer>
5097// CHECK: </dict>
5098// CHECK: </array>
5099// CHECK: </dict>
5100// CHECK: </array>
5101// CHECK: </dict>
5102// CHECK: <dict>
5103// CHECK: <key>kind</key><string>control</string>
5104// CHECK: <key>edges</key>
5105// CHECK: <array>
5106// CHECK: <dict>
5107// CHECK: <key>start</key>
5108// CHECK: <array>
5109// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00005110// CHECK: <key>line</key><integer>253</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00005111// CHECK: <key>col</key><integer>5</integer>
5112// CHECK: <key>file</key><integer>0</integer>
5113// CHECK: </dict>
5114// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00005115// CHECK: <key>line</key><integer>253</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00005116// CHECK: <key>col</key><integer>5</integer>
5117// CHECK: <key>file</key><integer>0</integer>
5118// CHECK: </dict>
5119// CHECK: </array>
5120// CHECK: <key>end</key>
5121// CHECK: <array>
5122// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00005123// CHECK: <key>line</key><integer>254</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00005124// CHECK: <key>col</key><integer>5</integer>
5125// CHECK: <key>file</key><integer>0</integer>
5126// CHECK: </dict>
5127// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00005128// CHECK: <key>line</key><integer>254</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00005129// CHECK: <key>col</key><integer>5</integer>
5130// CHECK: <key>file</key><integer>0</integer>
5131// CHECK: </dict>
5132// CHECK: </array>
5133// CHECK: </dict>
5134// CHECK: </array>
5135// CHECK: </dict>
5136// CHECK: <dict>
5137// CHECK: <key>kind</key><string>event</string>
5138// CHECK: <key>location</key>
5139// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00005140// CHECK: <key>line</key><integer>254</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00005141// CHECK: <key>col</key><integer>5</integer>
5142// CHECK: <key>file</key><integer>0</integer>
5143// CHECK: </dict>
5144// CHECK: <key>ranges</key>
5145// CHECK: <array>
5146// CHECK: <array>
5147// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00005148// CHECK: <key>line</key><integer>254</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00005149// CHECK: <key>col</key><integer>19</integer>
5150// CHECK: <key>file</key><integer>0</integer>
5151// CHECK: </dict>
5152// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00005153// CHECK: <key>line</key><integer>254</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00005154// CHECK: <key>col</key><integer>41</integer>
5155// CHECK: <key>file</key><integer>0</integer>
5156// CHECK: </dict>
5157// CHECK: </array>
5158// CHECK: </array>
5159// CHECK: <key>depth</key><integer>0</integer>
5160// CHECK: <key>extended_message</key>
Gabor Horvath1cbf4352015-09-08 21:04:14 +00005161// CHECK: <string>Conversion from value of type &apos;NSString *&apos; to incompatible type &apos;NSMutableString *&apos;</string>
Gabor Horvath717b51c2015-08-21 00:18:28 +00005162// CHECK: <key>message</key>
Gabor Horvath1cbf4352015-09-08 21:04:14 +00005163// CHECK: <string>Conversion from value of type &apos;NSString *&apos; to incompatible type &apos;NSMutableString *&apos;</string>
Gabor Horvath717b51c2015-08-21 00:18:28 +00005164// CHECK: </dict>
5165// CHECK: </array>
Gabor Horvath1cbf4352015-09-08 21:04:14 +00005166// CHECK: <key>description</key><string>Conversion from value of type &apos;NSString *&apos; to incompatible type &apos;NSMutableString *&apos;</string>
Gabor Horvath717b51c2015-08-21 00:18:28 +00005167// CHECK: <key>category</key><string>Core Foundation/Objective-C</string>
5168// CHECK: <key>type</key><string>Generics</string>
Gabor Horvathc0c7a5d2015-09-13 23:02:24 +00005169// CHECK: <key>check_name</key><string>core.DynamicTypePropagation</string>
Gabor Horvath717b51c2015-08-21 00:18:28 +00005170// CHECK: <key>issue_context_kind</key><string>function</string>
5171// CHECK: <key>issue_context</key><string>findMethodDeclInTrackedType</string>
5172// CHECK: <key>issue_hash</key><string>4</string>
5173// CHECK: <key>location</key>
5174// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00005175// CHECK: <key>line</key><integer>254</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00005176// CHECK: <key>col</key><integer>5</integer>
5177// CHECK: <key>file</key><integer>0</integer>
5178// CHECK: </dict>
5179// CHECK: </dict>
5180// CHECK: <dict>
5181// CHECK: <key>path</key>
5182// CHECK: <array>
5183// CHECK: <dict>
5184// CHECK: <key>kind</key><string>event</string>
5185// CHECK: <key>location</key>
5186// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00005187// CHECK: <key>line</key><integer>263</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00005188// CHECK: <key>col</key><integer>7</integer>
5189// CHECK: <key>file</key><integer>0</integer>
5190// CHECK: </dict>
5191// CHECK: <key>ranges</key>
5192// CHECK: <array>
5193// CHECK: <array>
5194// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00005195// CHECK: <key>line</key><integer>263</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00005196// CHECK: <key>col</key><integer>7</integer>
5197// CHECK: <key>file</key><integer>0</integer>
5198// CHECK: </dict>
5199// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00005200// CHECK: <key>line</key><integer>263</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00005201// CHECK: <key>col</key><integer>7</integer>
5202// CHECK: <key>file</key><integer>0</integer>
5203// CHECK: </dict>
5204// CHECK: </array>
5205// CHECK: </array>
5206// CHECK: <key>depth</key><integer>0</integer>
5207// CHECK: <key>extended_message</key>
Gabor Horvath03dc4732015-08-25 16:38:05 +00005208// CHECK: <string>Type &apos;MutableArray&lt;NSMutableString *&gt; *&apos; is inferred from implicit cast (from &apos;MutableArray&lt;NSMutableString *&gt; *&apos; to &apos;__kindof NSArray&lt;NSString *&gt; *&apos;)</string>
Gabor Horvath717b51c2015-08-21 00:18:28 +00005209// CHECK: <key>message</key>
Gabor Horvath03dc4732015-08-25 16:38:05 +00005210// CHECK: <string>Type &apos;MutableArray&lt;NSMutableString *&gt; *&apos; is inferred from implicit cast (from &apos;MutableArray&lt;NSMutableString *&gt; *&apos; to &apos;__kindof NSArray&lt;NSString *&gt; *&apos;)</string>
Gabor Horvath717b51c2015-08-21 00:18:28 +00005211// CHECK: </dict>
5212// CHECK: <dict>
5213// CHECK: <key>kind</key><string>control</string>
5214// CHECK: <key>edges</key>
5215// CHECK: <array>
5216// CHECK: <dict>
5217// CHECK: <key>start</key>
5218// CHECK: <array>
5219// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00005220// CHECK: <key>line</key><integer>263</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00005221// CHECK: <key>col</key><integer>3</integer>
5222// CHECK: <key>file</key><integer>0</integer>
5223// CHECK: </dict>
5224// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00005225// CHECK: <key>line</key><integer>263</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00005226// CHECK: <key>col</key><integer>3</integer>
5227// CHECK: <key>file</key><integer>0</integer>
5228// CHECK: </dict>
5229// CHECK: </array>
5230// CHECK: <key>end</key>
5231// CHECK: <array>
5232// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00005233// CHECK: <key>line</key><integer>264</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00005234// CHECK: <key>col</key><integer>3</integer>
5235// CHECK: <key>file</key><integer>0</integer>
5236// CHECK: </dict>
5237// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00005238// CHECK: <key>line</key><integer>264</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00005239// CHECK: <key>col</key><integer>4</integer>
5240// CHECK: <key>file</key><integer>0</integer>
5241// CHECK: </dict>
5242// CHECK: </array>
5243// CHECK: </dict>
5244// CHECK: </array>
5245// CHECK: </dict>
5246// CHECK: <dict>
5247// CHECK: <key>kind</key><string>control</string>
5248// CHECK: <key>edges</key>
5249// CHECK: <array>
5250// CHECK: <dict>
5251// CHECK: <key>start</key>
5252// CHECK: <array>
5253// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00005254// CHECK: <key>line</key><integer>264</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00005255// CHECK: <key>col</key><integer>3</integer>
5256// CHECK: <key>file</key><integer>0</integer>
5257// CHECK: </dict>
5258// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00005259// CHECK: <key>line</key><integer>264</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00005260// CHECK: <key>col</key><integer>4</integer>
5261// CHECK: <key>file</key><integer>0</integer>
5262// CHECK: </dict>
5263// CHECK: </array>
5264// CHECK: <key>end</key>
5265// CHECK: <array>
5266// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00005267// CHECK: <key>line</key><integer>265</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00005268// CHECK: <key>col</key><integer>5</integer>
5269// CHECK: <key>file</key><integer>0</integer>
5270// CHECK: </dict>
5271// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00005272// CHECK: <key>line</key><integer>265</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00005273// CHECK: <key>col</key><integer>5</integer>
5274// CHECK: <key>file</key><integer>0</integer>
5275// CHECK: </dict>
5276// CHECK: </array>
5277// CHECK: </dict>
5278// CHECK: </array>
5279// CHECK: </dict>
5280// CHECK: <dict>
5281// CHECK: <key>kind</key><string>event</string>
5282// CHECK: <key>location</key>
5283// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00005284// CHECK: <key>line</key><integer>265</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00005285// CHECK: <key>col</key><integer>5</integer>
5286// CHECK: <key>file</key><integer>0</integer>
5287// CHECK: </dict>
5288// CHECK: <key>ranges</key>
5289// CHECK: <array>
5290// CHECK: <array>
5291// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00005292// CHECK: <key>line</key><integer>265</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00005293// CHECK: <key>col</key><integer>19</integer>
5294// CHECK: <key>file</key><integer>0</integer>
5295// CHECK: </dict>
5296// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00005297// CHECK: <key>line</key><integer>265</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00005298// CHECK: <key>col</key><integer>41</integer>
5299// CHECK: <key>file</key><integer>0</integer>
5300// CHECK: </dict>
5301// CHECK: </array>
5302// CHECK: </array>
5303// CHECK: <key>depth</key><integer>0</integer>
5304// CHECK: <key>extended_message</key>
Gabor Horvath1cbf4352015-09-08 21:04:14 +00005305// CHECK: <string>Conversion from value of type &apos;NSString *&apos; to incompatible type &apos;NSMutableString *&apos;</string>
Gabor Horvath717b51c2015-08-21 00:18:28 +00005306// CHECK: <key>message</key>
Gabor Horvath1cbf4352015-09-08 21:04:14 +00005307// CHECK: <string>Conversion from value of type &apos;NSString *&apos; to incompatible type &apos;NSMutableString *&apos;</string>
Gabor Horvath717b51c2015-08-21 00:18:28 +00005308// CHECK: </dict>
5309// CHECK: </array>
Gabor Horvath1cbf4352015-09-08 21:04:14 +00005310// CHECK: <key>description</key><string>Conversion from value of type &apos;NSString *&apos; to incompatible type &apos;NSMutableString *&apos;</string>
Gabor Horvath717b51c2015-08-21 00:18:28 +00005311// CHECK: <key>category</key><string>Core Foundation/Objective-C</string>
5312// CHECK: <key>type</key><string>Generics</string>
Gabor Horvathc0c7a5d2015-09-13 23:02:24 +00005313// CHECK: <key>check_name</key><string>core.DynamicTypePropagation</string>
Gabor Horvath717b51c2015-08-21 00:18:28 +00005314// CHECK: <key>issue_context_kind</key><string>function</string>
5315// CHECK: <key>issue_context</key><string>findMethodDeclInTrackedType2</string>
5316// CHECK: <key>issue_hash</key><string>3</string>
5317// CHECK: <key>location</key>
5318// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00005319// CHECK: <key>line</key><integer>265</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00005320// CHECK: <key>col</key><integer>5</integer>
5321// CHECK: <key>file</key><integer>0</integer>
5322// CHECK: </dict>
5323// CHECK: </dict>
5324// CHECK: <dict>
5325// CHECK: <key>path</key>
5326// CHECK: <array>
5327// CHECK: <dict>
5328// CHECK: <key>kind</key><string>event</string>
5329// CHECK: <key>location</key>
5330// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00005331// CHECK: <key>line</key><integer>278</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00005332// CHECK: <key>col</key><integer>30</integer>
5333// CHECK: <key>file</key><integer>0</integer>
5334// CHECK: </dict>
5335// CHECK: <key>ranges</key>
5336// CHECK: <array>
5337// CHECK: <array>
5338// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00005339// CHECK: <key>line</key><integer>278</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00005340// CHECK: <key>col</key><integer>30</integer>
5341// CHECK: <key>file</key><integer>0</integer>
5342// CHECK: </dict>
5343// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00005344// CHECK: <key>line</key><integer>278</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00005345// CHECK: <key>col</key><integer>42</integer>
5346// CHECK: <key>file</key><integer>0</integer>
5347// CHECK: </dict>
5348// CHECK: </array>
5349// CHECK: </array>
5350// CHECK: <key>depth</key><integer>0</integer>
5351// CHECK: <key>extended_message</key>
Gabor Horvath03dc4732015-08-25 16:38:05 +00005352// CHECK: <string>Type &apos;NSArray&lt;NSString *&gt; *&apos; is inferred from implicit cast (from &apos;NSArray *&apos; to &apos;NSArray&lt;NSString *&gt; *&apos;)</string>
Gabor Horvath717b51c2015-08-21 00:18:28 +00005353// CHECK: <key>message</key>
Gabor Horvath03dc4732015-08-25 16:38:05 +00005354// CHECK: <string>Type &apos;NSArray&lt;NSString *&gt; *&apos; is inferred from implicit cast (from &apos;NSArray *&apos; to &apos;NSArray&lt;NSString *&gt; *&apos;)</string>
Gabor Horvath717b51c2015-08-21 00:18:28 +00005355// CHECK: </dict>
5356// CHECK: <dict>
5357// CHECK: <key>kind</key><string>control</string>
5358// CHECK: <key>edges</key>
5359// CHECK: <array>
5360// CHECK: <dict>
5361// CHECK: <key>start</key>
5362// CHECK: <array>
5363// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00005364// CHECK: <key>line</key><integer>278</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00005365// CHECK: <key>col</key><integer>3</integer>
5366// CHECK: <key>file</key><integer>0</integer>
5367// CHECK: </dict>
5368// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00005369// CHECK: <key>line</key><integer>278</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00005370// CHECK: <key>col</key><integer>9</integer>
5371// CHECK: <key>file</key><integer>0</integer>
5372// CHECK: </dict>
5373// CHECK: </array>
5374// CHECK: <key>end</key>
5375// CHECK: <array>
5376// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00005377// CHECK: <key>line</key><integer>280</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00005378// CHECK: <key>col</key><integer>3</integer>
5379// CHECK: <key>file</key><integer>0</integer>
5380// CHECK: </dict>
5381// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00005382// CHECK: <key>line</key><integer>280</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00005383// CHECK: <key>col</key><integer>3</integer>
5384// CHECK: <key>file</key><integer>0</integer>
5385// CHECK: </dict>
5386// CHECK: </array>
5387// CHECK: </dict>
5388// CHECK: </array>
5389// CHECK: </dict>
5390// CHECK: <dict>
5391// CHECK: <key>kind</key><string>event</string>
5392// CHECK: <key>location</key>
5393// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00005394// CHECK: <key>line</key><integer>280</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00005395// CHECK: <key>col</key><integer>3</integer>
5396// CHECK: <key>file</key><integer>0</integer>
5397// CHECK: </dict>
5398// CHECK: <key>ranges</key>
5399// CHECK: <array>
5400// CHECK: <array>
5401// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00005402// CHECK: <key>line</key><integer>280</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00005403// CHECK: <key>col</key><integer>19</integer>
5404// CHECK: <key>file</key><integer>0</integer>
5405// CHECK: </dict>
5406// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00005407// CHECK: <key>line</key><integer>280</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00005408// CHECK: <key>col</key><integer>41</integer>
5409// CHECK: <key>file</key><integer>0</integer>
5410// CHECK: </dict>
5411// CHECK: </array>
5412// CHECK: </array>
5413// CHECK: <key>depth</key><integer>0</integer>
5414// CHECK: <key>extended_message</key>
Gabor Horvath1cbf4352015-09-08 21:04:14 +00005415// CHECK: <string>Conversion from value of type &apos;NSNumber *&apos; to incompatible type &apos;NSString *&apos;</string>
Gabor Horvath717b51c2015-08-21 00:18:28 +00005416// CHECK: <key>message</key>
Gabor Horvath1cbf4352015-09-08 21:04:14 +00005417// CHECK: <string>Conversion from value of type &apos;NSNumber *&apos; to incompatible type &apos;NSString *&apos;</string>
Gabor Horvath717b51c2015-08-21 00:18:28 +00005418// CHECK: </dict>
5419// CHECK: </array>
Gabor Horvath1cbf4352015-09-08 21:04:14 +00005420// CHECK: <key>description</key><string>Conversion from value of type &apos;NSNumber *&apos; to incompatible type &apos;NSString *&apos;</string>
Gabor Horvath717b51c2015-08-21 00:18:28 +00005421// CHECK: <key>category</key><string>Core Foundation/Objective-C</string>
5422// CHECK: <key>type</key><string>Generics</string>
Gabor Horvathc0c7a5d2015-09-13 23:02:24 +00005423// CHECK: <key>check_name</key><string>core.DynamicTypePropagation</string>
Gabor Horvath717b51c2015-08-21 00:18:28 +00005424// CHECK: <key>issue_context_kind</key><string>function</string>
5425// CHECK: <key>issue_context</key><string>testAnnotatedLiterals</string>
5426// CHECK: <key>issue_hash</key><string>3</string>
5427// CHECK: <key>location</key>
5428// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00005429// CHECK: <key>line</key><integer>280</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00005430// CHECK: <key>col</key><integer>3</integer>
5431// CHECK: <key>file</key><integer>0</integer>
5432// CHECK: </dict>
5433// CHECK: </dict>
5434// CHECK: <dict>
5435// CHECK: <key>path</key>
5436// CHECK: <array>
5437// CHECK: <dict>
Gabor Horvath717b51c2015-08-21 00:18:28 +00005438// CHECK: <key>kind</key><string>control</string>
5439// CHECK: <key>edges</key>
5440// CHECK: <array>
5441// CHECK: <dict>
5442// CHECK: <key>start</key>
5443// CHECK: <array>
5444// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00005445// CHECK: <key>line</key><integer>289</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00005446// CHECK: <key>col</key><integer>3</integer>
5447// CHECK: <key>file</key><integer>0</integer>
5448// CHECK: </dict>
5449// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00005450// CHECK: <key>line</key><integer>289</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00005451// CHECK: <key>col</key><integer>7</integer>
5452// CHECK: <key>file</key><integer>0</integer>
5453// CHECK: </dict>
5454// CHECK: </array>
5455// CHECK: <key>end</key>
5456// CHECK: <array>
5457// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00005458// CHECK: <key>line</key><integer>290</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00005459// CHECK: <key>col</key><integer>3</integer>
5460// CHECK: <key>file</key><integer>0</integer>
5461// CHECK: </dict>
5462// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00005463// CHECK: <key>line</key><integer>290</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00005464// CHECK: <key>col</key><integer>9</integer>
5465// CHECK: <key>file</key><integer>0</integer>
5466// CHECK: </dict>
5467// CHECK: </array>
5468// CHECK: </dict>
5469// CHECK: </array>
5470// CHECK: </dict>
5471// CHECK: <dict>
5472// CHECK: <key>kind</key><string>control</string>
5473// CHECK: <key>edges</key>
5474// CHECK: <array>
5475// CHECK: <dict>
5476// CHECK: <key>start</key>
5477// CHECK: <array>
5478// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00005479// CHECK: <key>line</key><integer>290</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00005480// CHECK: <key>col</key><integer>3</integer>
5481// CHECK: <key>file</key><integer>0</integer>
5482// CHECK: </dict>
5483// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00005484// CHECK: <key>line</key><integer>290</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00005485// CHECK: <key>col</key><integer>9</integer>
5486// CHECK: <key>file</key><integer>0</integer>
5487// CHECK: </dict>
5488// CHECK: </array>
5489// CHECK: <key>end</key>
5490// CHECK: <array>
5491// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00005492// CHECK: <key>line</key><integer>290</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00005493// CHECK: <key>col</key><integer>28</integer>
5494// CHECK: <key>file</key><integer>0</integer>
5495// CHECK: </dict>
5496// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00005497// CHECK: <key>line</key><integer>290</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00005498// CHECK: <key>col</key><integer>28</integer>
5499// CHECK: <key>file</key><integer>0</integer>
5500// CHECK: </dict>
5501// CHECK: </array>
5502// CHECK: </dict>
5503// CHECK: </array>
5504// CHECK: </dict>
5505// CHECK: <dict>
5506// CHECK: <key>kind</key><string>event</string>
5507// CHECK: <key>location</key>
5508// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00005509// CHECK: <key>line</key><integer>290</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00005510// CHECK: <key>col</key><integer>28</integer>
5511// CHECK: <key>file</key><integer>0</integer>
5512// CHECK: </dict>
5513// CHECK: <key>ranges</key>
5514// CHECK: <array>
5515// CHECK: <array>
5516// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00005517// CHECK: <key>line</key><integer>290</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00005518// CHECK: <key>col</key><integer>28</integer>
5519// CHECK: <key>file</key><integer>0</integer>
5520// CHECK: </dict>
5521// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00005522// CHECK: <key>line</key><integer>290</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00005523// CHECK: <key>col</key><integer>39</integer>
5524// CHECK: <key>file</key><integer>0</integer>
5525// CHECK: </dict>
5526// CHECK: </array>
5527// CHECK: </array>
5528// CHECK: <key>depth</key><integer>0</integer>
5529// CHECK: <key>extended_message</key>
Gabor Horvathdce40c52015-09-18 21:15:37 +00005530// CHECK: <string>Type &apos;NSArray&lt;NSString *&gt; *&apos; is inferred from this context</string>
5531// CHECK: <key>message</key>
5532// CHECK: <string>Type &apos;NSArray&lt;NSString *&gt; *&apos; is inferred from this context</string>
5533// CHECK: </dict>
5534// CHECK: <dict>
5535// CHECK: <key>kind</key><string>event</string>
5536// CHECK: <key>location</key>
5537// CHECK: <dict>
5538// CHECK: <key>line</key><integer>290</integer>
5539// CHECK: <key>col</key><integer>28</integer>
5540// CHECK: <key>file</key><integer>0</integer>
5541// CHECK: </dict>
5542// CHECK: <key>ranges</key>
5543// CHECK: <array>
5544// CHECK: <array>
5545// CHECK: <dict>
5546// CHECK: <key>line</key><integer>290</integer>
5547// CHECK: <key>col</key><integer>28</integer>
5548// CHECK: <key>file</key><integer>0</integer>
5549// CHECK: </dict>
5550// CHECK: <dict>
5551// CHECK: <key>line</key><integer>290</integer>
5552// CHECK: <key>col</key><integer>39</integer>
5553// CHECK: <key>file</key><integer>0</integer>
5554// CHECK: </dict>
5555// CHECK: </array>
5556// CHECK: </array>
5557// CHECK: <key>depth</key><integer>0</integer>
5558// CHECK: <key>extended_message</key>
Gabor Horvath1cbf4352015-09-08 21:04:14 +00005559// CHECK: <string>Conversion from value of type &apos;NSArray&lt;NSString *&gt; *&apos; to incompatible type &apos;NSArray&lt;NSNumber *&gt; *&apos;</string>
Gabor Horvath717b51c2015-08-21 00:18:28 +00005560// CHECK: <key>message</key>
Gabor Horvath1cbf4352015-09-08 21:04:14 +00005561// CHECK: <string>Conversion from value of type &apos;NSArray&lt;NSString *&gt; *&apos; to incompatible type &apos;NSArray&lt;NSNumber *&gt; *&apos;</string>
Gabor Horvath717b51c2015-08-21 00:18:28 +00005562// CHECK: </dict>
5563// CHECK: </array>
Gabor Horvath1cbf4352015-09-08 21:04:14 +00005564// CHECK: <key>description</key><string>Conversion from value of type &apos;NSArray&lt;NSString *&gt; *&apos; to incompatible type &apos;NSArray&lt;NSNumber *&gt; *&apos;</string>
Gabor Horvath717b51c2015-08-21 00:18:28 +00005565// CHECK: <key>category</key><string>Core Foundation/Objective-C</string>
5566// CHECK: <key>type</key><string>Generics</string>
Gabor Horvathc0c7a5d2015-09-13 23:02:24 +00005567// CHECK: <key>check_name</key><string>core.DynamicTypePropagation</string>
Gabor Horvath717b51c2015-08-21 00:18:28 +00005568// CHECK: <key>issue_context_kind</key><string>function</string>
5569// CHECK: <key>issue_context</key><string>trackedClassVariables</string>
5570// CHECK: <key>issue_hash</key><string>2</string>
5571// CHECK: <key>location</key>
5572// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00005573// CHECK: <key>line</key><integer>290</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00005574// CHECK: <key>col</key><integer>28</integer>
5575// CHECK: <key>file</key><integer>0</integer>
5576// CHECK: </dict>
5577// CHECK: </dict>
5578// CHECK: <dict>
5579// CHECK: <key>path</key>
5580// CHECK: <array>
5581// CHECK: <dict>
Gabor Horvathdce40c52015-09-18 21:15:37 +00005582// CHECK: <key>kind</key><string>control</string>
5583// CHECK: <key>edges</key>
5584// CHECK: <array>
5585// CHECK: <dict>
5586// CHECK: <key>start</key>
5587// CHECK: <array>
5588// CHECK: <dict>
5589// CHECK: <key>line</key><integer>289</integer>
5590// CHECK: <key>col</key><integer>3</integer>
5591// CHECK: <key>file</key><integer>0</integer>
5592// CHECK: </dict>
5593// CHECK: <dict>
5594// CHECK: <key>line</key><integer>289</integer>
5595// CHECK: <key>col</key><integer>7</integer>
5596// CHECK: <key>file</key><integer>0</integer>
5597// CHECK: </dict>
5598// CHECK: </array>
5599// CHECK: <key>end</key>
5600// CHECK: <array>
5601// CHECK: <dict>
5602// CHECK: <key>line</key><integer>291</integer>
5603// CHECK: <key>col</key><integer>3</integer>
5604// CHECK: <key>file</key><integer>0</integer>
5605// CHECK: </dict>
5606// CHECK: <dict>
5607// CHECK: <key>line</key><integer>291</integer>
5608// CHECK: <key>col</key><integer>3</integer>
5609// CHECK: <key>file</key><integer>0</integer>
5610// CHECK: </dict>
5611// CHECK: </array>
5612// CHECK: </dict>
5613// CHECK: </array>
5614// CHECK: </dict>
5615// CHECK: <dict>
5616// CHECK: <key>kind</key><string>control</string>
5617// CHECK: <key>edges</key>
5618// CHECK: <array>
5619// CHECK: <dict>
5620// CHECK: <key>start</key>
5621// CHECK: <array>
5622// CHECK: <dict>
5623// CHECK: <key>line</key><integer>291</integer>
5624// CHECK: <key>col</key><integer>3</integer>
5625// CHECK: <key>file</key><integer>0</integer>
5626// CHECK: </dict>
5627// CHECK: <dict>
5628// CHECK: <key>line</key><integer>291</integer>
5629// CHECK: <key>col</key><integer>3</integer>
5630// CHECK: <key>file</key><integer>0</integer>
5631// CHECK: </dict>
5632// CHECK: </array>
5633// CHECK: <key>end</key>
5634// CHECK: <array>
5635// CHECK: <dict>
5636// CHECK: <key>line</key><integer>291</integer>
5637// CHECK: <key>col</key><integer>7</integer>
5638// CHECK: <key>file</key><integer>0</integer>
5639// CHECK: </dict>
5640// CHECK: <dict>
5641// CHECK: <key>line</key><integer>291</integer>
5642// CHECK: <key>col</key><integer>7</integer>
5643// CHECK: <key>file</key><integer>0</integer>
5644// CHECK: </dict>
5645// CHECK: </array>
5646// CHECK: </dict>
5647// CHECK: </array>
5648// CHECK: </dict>
5649// CHECK: <dict>
Gabor Horvath717b51c2015-08-21 00:18:28 +00005650// CHECK: <key>kind</key><string>event</string>
5651// CHECK: <key>location</key>
5652// CHECK: <dict>
Gabor Horvathdce40c52015-09-18 21:15:37 +00005653// CHECK: <key>line</key><integer>291</integer>
5654// CHECK: <key>col</key><integer>7</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00005655// CHECK: <key>file</key><integer>0</integer>
5656// CHECK: </dict>
5657// CHECK: <key>ranges</key>
5658// CHECK: <array>
5659// CHECK: <array>
5660// CHECK: <dict>
Gabor Horvathdce40c52015-09-18 21:15:37 +00005661// CHECK: <key>line</key><integer>291</integer>
5662// CHECK: <key>col</key><integer>7</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00005663// CHECK: <key>file</key><integer>0</integer>
5664// CHECK: </dict>
5665// CHECK: <dict>
Gabor Horvathdce40c52015-09-18 21:15:37 +00005666// CHECK: <key>line</key><integer>291</integer>
5667// CHECK: <key>col</key><integer>19</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00005668// CHECK: <key>file</key><integer>0</integer>
5669// CHECK: </dict>
5670// CHECK: </array>
5671// CHECK: </array>
5672// CHECK: <key>depth</key><integer>0</integer>
5673// CHECK: <key>extended_message</key>
Gabor Horvath03dc4732015-08-25 16:38:05 +00005674// CHECK: <string>Type &apos;NSArray&lt;NSString *&gt; *&apos; is inferred from this context</string>
Gabor Horvath717b51c2015-08-21 00:18:28 +00005675// CHECK: <key>message</key>
Gabor Horvath03dc4732015-08-25 16:38:05 +00005676// CHECK: <string>Type &apos;NSArray&lt;NSString *&gt; *&apos; is inferred from this context</string>
Gabor Horvath717b51c2015-08-21 00:18:28 +00005677// CHECK: </dict>
5678// CHECK: <dict>
Gabor Horvath717b51c2015-08-21 00:18:28 +00005679// CHECK: <key>kind</key><string>event</string>
5680// CHECK: <key>location</key>
5681// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00005682// CHECK: <key>line</key><integer>291</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00005683// CHECK: <key>col</key><integer>7</integer>
5684// CHECK: <key>file</key><integer>0</integer>
5685// CHECK: </dict>
5686// CHECK: <key>ranges</key>
5687// CHECK: <array>
5688// CHECK: <array>
5689// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00005690// CHECK: <key>line</key><integer>291</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00005691// CHECK: <key>col</key><integer>7</integer>
5692// CHECK: <key>file</key><integer>0</integer>
5693// CHECK: </dict>
5694// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00005695// CHECK: <key>line</key><integer>291</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00005696// CHECK: <key>col</key><integer>19</integer>
5697// CHECK: <key>file</key><integer>0</integer>
5698// CHECK: </dict>
5699// CHECK: </array>
5700// CHECK: </array>
5701// CHECK: <key>depth</key><integer>0</integer>
5702// CHECK: <key>extended_message</key>
Gabor Horvath1cbf4352015-09-08 21:04:14 +00005703// CHECK: <string>Conversion from value of type &apos;NSArray&lt;NSString *&gt; *&apos; to incompatible type &apos;NSArray&lt;NSNumber *&gt; *&apos;</string>
Gabor Horvath717b51c2015-08-21 00:18:28 +00005704// CHECK: <key>message</key>
Gabor Horvath1cbf4352015-09-08 21:04:14 +00005705// CHECK: <string>Conversion from value of type &apos;NSArray&lt;NSString *&gt; *&apos; to incompatible type &apos;NSArray&lt;NSNumber *&gt; *&apos;</string>
Gabor Horvath717b51c2015-08-21 00:18:28 +00005706// CHECK: </dict>
5707// CHECK: </array>
Gabor Horvath1cbf4352015-09-08 21:04:14 +00005708// CHECK: <key>description</key><string>Conversion from value of type &apos;NSArray&lt;NSString *&gt; *&apos; to incompatible type &apos;NSArray&lt;NSNumber *&gt; *&apos;</string>
Gabor Horvath717b51c2015-08-21 00:18:28 +00005709// CHECK: <key>category</key><string>Core Foundation/Objective-C</string>
5710// CHECK: <key>type</key><string>Generics</string>
Gabor Horvathc0c7a5d2015-09-13 23:02:24 +00005711// CHECK: <key>check_name</key><string>core.DynamicTypePropagation</string>
Gabor Horvath717b51c2015-08-21 00:18:28 +00005712// CHECK: <key>issue_context_kind</key><string>function</string>
5713// CHECK: <key>issue_context</key><string>trackedClassVariables</string>
5714// CHECK: <key>issue_hash</key><string>3</string>
5715// CHECK: <key>location</key>
5716// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00005717// CHECK: <key>line</key><integer>291</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00005718// CHECK: <key>col</key><integer>7</integer>
5719// CHECK: <key>file</key><integer>0</integer>
5720// CHECK: </dict>
5721// CHECK: </dict>
5722// CHECK: <dict>
5723// CHECK: <key>path</key>
5724// CHECK: <array>
5725// CHECK: <dict>
5726// CHECK: <key>kind</key><string>event</string>
5727// CHECK: <key>location</key>
5728// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00005729// CHECK: <key>line</key><integer>295</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00005730// CHECK: <key>col</key><integer>13</integer>
5731// CHECK: <key>file</key><integer>0</integer>
5732// CHECK: </dict>
5733// CHECK: <key>ranges</key>
5734// CHECK: <array>
5735// CHECK: <array>
5736// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00005737// CHECK: <key>line</key><integer>295</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00005738// CHECK: <key>col</key><integer>13</integer>
5739// CHECK: <key>file</key><integer>0</integer>
5740// CHECK: </dict>
5741// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00005742// CHECK: <key>line</key><integer>295</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00005743// CHECK: <key>col</key><integer>15</integer>
5744// CHECK: <key>file</key><integer>0</integer>
5745// CHECK: </dict>
5746// CHECK: </array>
5747// CHECK: </array>
5748// CHECK: <key>depth</key><integer>0</integer>
5749// CHECK: <key>extended_message</key>
Gabor Horvath03dc4732015-08-25 16:38:05 +00005750// CHECK: <string>Type &apos;NSArray&lt;NSString *&gt; *&apos; is inferred from implicit cast (from &apos;NSArray&lt;NSString *&gt; *&apos; to &apos;id&apos;)</string>
Gabor Horvath717b51c2015-08-21 00:18:28 +00005751// CHECK: <key>message</key>
Gabor Horvath03dc4732015-08-25 16:38:05 +00005752// CHECK: <string>Type &apos;NSArray&lt;NSString *&gt; *&apos; is inferred from implicit cast (from &apos;NSArray&lt;NSString *&gt; *&apos; to &apos;id&apos;)</string>
Gabor Horvath717b51c2015-08-21 00:18:28 +00005753// CHECK: </dict>
5754// CHECK: <dict>
5755// CHECK: <key>kind</key><string>control</string>
5756// CHECK: <key>edges</key>
5757// CHECK: <array>
5758// CHECK: <dict>
5759// CHECK: <key>start</key>
5760// CHECK: <array>
5761// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00005762// CHECK: <key>line</key><integer>295</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00005763// CHECK: <key>col</key><integer>3</integer>
5764// CHECK: <key>file</key><integer>0</integer>
5765// CHECK: </dict>
5766// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00005767// CHECK: <key>line</key><integer>295</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00005768// CHECK: <key>col</key><integer>4</integer>
5769// CHECK: <key>file</key><integer>0</integer>
5770// CHECK: </dict>
5771// CHECK: </array>
5772// CHECK: <key>end</key>
5773// CHECK: <array>
5774// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00005775// CHECK: <key>line</key><integer>296</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00005776// CHECK: <key>col</key><integer>3</integer>
5777// CHECK: <key>file</key><integer>0</integer>
5778// CHECK: </dict>
5779// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00005780// CHECK: <key>line</key><integer>296</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00005781// CHECK: <key>col</key><integer>3</integer>
5782// CHECK: <key>file</key><integer>0</integer>
5783// CHECK: </dict>
5784// CHECK: </array>
5785// CHECK: </dict>
5786// CHECK: </array>
5787// CHECK: </dict>
5788// CHECK: <dict>
5789// CHECK: <key>kind</key><string>control</string>
5790// CHECK: <key>edges</key>
5791// CHECK: <array>
5792// CHECK: <dict>
5793// CHECK: <key>start</key>
5794// CHECK: <array>
5795// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00005796// CHECK: <key>line</key><integer>296</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00005797// CHECK: <key>col</key><integer>3</integer>
5798// CHECK: <key>file</key><integer>0</integer>
5799// CHECK: </dict>
5800// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00005801// CHECK: <key>line</key><integer>296</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00005802// CHECK: <key>col</key><integer>3</integer>
5803// CHECK: <key>file</key><integer>0</integer>
5804// CHECK: </dict>
5805// CHECK: </array>
5806// CHECK: <key>end</key>
5807// CHECK: <array>
5808// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00005809// CHECK: <key>line</key><integer>296</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00005810// CHECK: <key>col</key><integer>18</integer>
5811// CHECK: <key>file</key><integer>0</integer>
5812// CHECK: </dict>
5813// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00005814// CHECK: <key>line</key><integer>296</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00005815// CHECK: <key>col</key><integer>21</integer>
5816// CHECK: <key>file</key><integer>0</integer>
5817// CHECK: </dict>
5818// CHECK: </array>
5819// CHECK: </dict>
5820// CHECK: </array>
5821// CHECK: </dict>
5822// CHECK: <dict>
5823// CHECK: <key>kind</key><string>event</string>
5824// CHECK: <key>location</key>
5825// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00005826// CHECK: <key>line</key><integer>296</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00005827// CHECK: <key>col</key><integer>18</integer>
5828// CHECK: <key>file</key><integer>0</integer>
5829// CHECK: </dict>
5830// CHECK: <key>ranges</key>
5831// CHECK: <array>
5832// CHECK: <array>
5833// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00005834// CHECK: <key>line</key><integer>296</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00005835// CHECK: <key>col</key><integer>18</integer>
5836// CHECK: <key>file</key><integer>0</integer>
5837// CHECK: </dict>
5838// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00005839// CHECK: <key>line</key><integer>296</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00005840// CHECK: <key>col</key><integer>21</integer>
5841// CHECK: <key>file</key><integer>0</integer>
5842// CHECK: </dict>
5843// CHECK: </array>
5844// CHECK: </array>
5845// CHECK: <key>depth</key><integer>0</integer>
5846// CHECK: <key>extended_message</key>
Gabor Horvath1cbf4352015-09-08 21:04:14 +00005847// CHECK: <string>Conversion from value of type &apos;NSArray&lt;NSString *&gt; *&apos; to incompatible type &apos;NSArray&lt;NSNumber *&gt; *&apos;</string>
Gabor Horvath717b51c2015-08-21 00:18:28 +00005848// CHECK: <key>message</key>
Gabor Horvath1cbf4352015-09-08 21:04:14 +00005849// CHECK: <string>Conversion from value of type &apos;NSArray&lt;NSString *&gt; *&apos; to incompatible type &apos;NSArray&lt;NSNumber *&gt; *&apos;</string>
Gabor Horvath717b51c2015-08-21 00:18:28 +00005850// CHECK: </dict>
5851// CHECK: </array>
Gabor Horvath1cbf4352015-09-08 21:04:14 +00005852// CHECK: <key>description</key><string>Conversion from value of type &apos;NSArray&lt;NSString *&gt; *&apos; to incompatible type &apos;NSArray&lt;NSNumber *&gt; *&apos;</string>
Gabor Horvath717b51c2015-08-21 00:18:28 +00005853// CHECK: <key>category</key><string>Core Foundation/Objective-C</string>
5854// CHECK: <key>type</key><string>Generics</string>
Gabor Horvathc0c7a5d2015-09-13 23:02:24 +00005855// CHECK: <key>check_name</key><string>core.DynamicTypePropagation</string>
Gabor Horvath717b51c2015-08-21 00:18:28 +00005856// CHECK: <key>issue_context_kind</key><string>function</string>
5857// CHECK: <key>issue_context</key><string>nestedCollections</string>
5858// CHECK: <key>issue_hash</key><string>2</string>
5859// CHECK: <key>location</key>
5860// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00005861// CHECK: <key>line</key><integer>296</integer>
Gabor Horvath717b51c2015-08-21 00:18:28 +00005862// CHECK: <key>col</key><integer>18</integer>
5863// CHECK: <key>file</key><integer>0</integer>
5864// CHECK: </dict>
5865// CHECK: </dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00005866// CHECK: <dict>
5867// CHECK: <key>path</key>
5868// CHECK: <array>
5869// CHECK: <dict>
5870// CHECK: <key>kind</key><string>control</string>
5871// CHECK: <key>edges</key>
5872// CHECK: <array>
5873// CHECK: <dict>
5874// CHECK: <key>start</key>
5875// CHECK: <array>
5876// CHECK: <dict>
5877// CHECK: <key>line</key><integer>308</integer>
5878// CHECK: <key>col</key><integer>3</integer>
5879// CHECK: <key>file</key><integer>0</integer>
5880// CHECK: </dict>
5881// CHECK: <dict>
5882// CHECK: <key>line</key><integer>308</integer>
5883// CHECK: <key>col</key><integer>9</integer>
5884// CHECK: <key>file</key><integer>0</integer>
5885// CHECK: </dict>
5886// CHECK: </array>
5887// CHECK: <key>end</key>
5888// CHECK: <array>
5889// CHECK: <dict>
5890// CHECK: <key>line</key><integer>309</integer>
5891// CHECK: <key>col</key><integer>3</integer>
5892// CHECK: <key>file</key><integer>0</integer>
5893// CHECK: </dict>
5894// CHECK: <dict>
5895// CHECK: <key>line</key><integer>309</integer>
5896// CHECK: <key>col</key><integer>4</integer>
5897// CHECK: <key>file</key><integer>0</integer>
5898// CHECK: </dict>
5899// CHECK: </array>
5900// CHECK: </dict>
5901// CHECK: </array>
5902// CHECK: </dict>
5903// CHECK: <dict>
5904// CHECK: <key>kind</key><string>event</string>
5905// CHECK: <key>location</key>
5906// CHECK: <dict>
5907// CHECK: <key>line</key><integer>309</integer>
5908// CHECK: <key>col</key><integer>10</integer>
5909// CHECK: <key>file</key><integer>0</integer>
5910// CHECK: </dict>
5911// CHECK: <key>ranges</key>
5912// CHECK: <array>
5913// CHECK: <array>
5914// CHECK: <dict>
5915// CHECK: <key>line</key><integer>309</integer>
5916// CHECK: <key>col</key><integer>10</integer>
5917// CHECK: <key>file</key><integer>0</integer>
5918// CHECK: </dict>
5919// CHECK: <dict>
5920// CHECK: <key>line</key><integer>309</integer>
5921// CHECK: <key>col</key><integer>29</integer>
5922// CHECK: <key>file</key><integer>0</integer>
5923// CHECK: </dict>
5924// CHECK: </array>
5925// CHECK: </array>
5926// CHECK: <key>depth</key><integer>0</integer>
5927// CHECK: <key>extended_message</key>
5928// CHECK: <string>Type &apos;NSArray&lt;NSString *&gt; *&apos; is inferred from this context</string>
5929// CHECK: <key>message</key>
5930// CHECK: <string>Type &apos;NSArray&lt;NSString *&gt; *&apos; is inferred from this context</string>
5931// CHECK: </dict>
5932// CHECK: <dict>
5933// CHECK: <key>kind</key><string>control</string>
5934// CHECK: <key>edges</key>
5935// CHECK: <array>
5936// CHECK: <dict>
5937// CHECK: <key>start</key>
5938// CHECK: <array>
5939// CHECK: <dict>
5940// CHECK: <key>line</key><integer>309</integer>
5941// CHECK: <key>col</key><integer>3</integer>
5942// CHECK: <key>file</key><integer>0</integer>
5943// CHECK: </dict>
5944// CHECK: <dict>
5945// CHECK: <key>line</key><integer>309</integer>
5946// CHECK: <key>col</key><integer>4</integer>
5947// CHECK: <key>file</key><integer>0</integer>
5948// CHECK: </dict>
5949// CHECK: </array>
5950// CHECK: <key>end</key>
5951// CHECK: <array>
5952// CHECK: <dict>
5953// CHECK: <key>line</key><integer>310</integer>
5954// CHECK: <key>col</key><integer>3</integer>
5955// CHECK: <key>file</key><integer>0</integer>
5956// CHECK: </dict>
5957// CHECK: <dict>
5958// CHECK: <key>line</key><integer>310</integer>
5959// CHECK: <key>col</key><integer>9</integer>
5960// CHECK: <key>file</key><integer>0</integer>
5961// CHECK: </dict>
5962// CHECK: </array>
5963// CHECK: </dict>
5964// CHECK: </array>
5965// CHECK: </dict>
5966// CHECK: <dict>
5967// CHECK: <key>kind</key><string>control</string>
5968// CHECK: <key>edges</key>
5969// CHECK: <array>
5970// CHECK: <dict>
5971// CHECK: <key>start</key>
5972// CHECK: <array>
5973// CHECK: <dict>
5974// CHECK: <key>line</key><integer>310</integer>
5975// CHECK: <key>col</key><integer>3</integer>
5976// CHECK: <key>file</key><integer>0</integer>
5977// CHECK: </dict>
5978// CHECK: <dict>
5979// CHECK: <key>line</key><integer>310</integer>
5980// CHECK: <key>col</key><integer>9</integer>
5981// CHECK: <key>file</key><integer>0</integer>
5982// CHECK: </dict>
5983// CHECK: </array>
5984// CHECK: <key>end</key>
5985// CHECK: <array>
5986// CHECK: <dict>
5987// CHECK: <key>line</key><integer>310</integer>
5988// CHECK: <key>col</key><integer>30</integer>
5989// CHECK: <key>file</key><integer>0</integer>
5990// CHECK: </dict>
5991// CHECK: <dict>
5992// CHECK: <key>line</key><integer>310</integer>
5993// CHECK: <key>col</key><integer>30</integer>
5994// CHECK: <key>file</key><integer>0</integer>
5995// CHECK: </dict>
5996// CHECK: </array>
5997// CHECK: </dict>
5998// CHECK: </array>
5999// CHECK: </dict>
6000// CHECK: <dict>
6001// CHECK: <key>kind</key><string>event</string>
6002// CHECK: <key>location</key>
6003// CHECK: <dict>
6004// CHECK: <key>line</key><integer>310</integer>
6005// CHECK: <key>col</key><integer>30</integer>
6006// CHECK: <key>file</key><integer>0</integer>
6007// CHECK: </dict>
6008// CHECK: <key>ranges</key>
6009// CHECK: <array>
6010// CHECK: <array>
6011// CHECK: <dict>
6012// CHECK: <key>line</key><integer>310</integer>
6013// CHECK: <key>col</key><integer>30</integer>
6014// CHECK: <key>file</key><integer>0</integer>
6015// CHECK: </dict>
6016// CHECK: <dict>
6017// CHECK: <key>line</key><integer>310</integer>
6018// CHECK: <key>col</key><integer>30</integer>
6019// CHECK: <key>file</key><integer>0</integer>
6020// CHECK: </dict>
6021// CHECK: </array>
6022// CHECK: </array>
6023// CHECK: <key>depth</key><integer>0</integer>
6024// CHECK: <key>extended_message</key>
6025// CHECK: <string>Conversion from value of type &apos;NSArray&lt;NSString *&gt; *&apos; to incompatible type &apos;NSArray&lt;NSNumber *&gt; *&apos;</string>
6026// CHECK: <key>message</key>
6027// CHECK: <string>Conversion from value of type &apos;NSArray&lt;NSString *&gt; *&apos; to incompatible type &apos;NSArray&lt;NSNumber *&gt; *&apos;</string>
6028// CHECK: </dict>
6029// CHECK: </array>
6030// CHECK: <key>description</key><string>Conversion from value of type &apos;NSArray&lt;NSString *&gt; *&apos; to incompatible type &apos;NSArray&lt;NSNumber *&gt; *&apos;</string>
6031// CHECK: <key>category</key><string>Core Foundation/Objective-C</string>
6032// CHECK: <key>type</key><string>Generics</string>
6033// CHECK: <key>check_name</key><string>core.DynamicTypePropagation</string>
6034// CHECK: <key>issue_context_kind</key><string>function</string>
6035// CHECK: <key>issue_context</key><string>returnCollectionToIdVariable</string>
6036// CHECK: <key>issue_hash</key><string>3</string>
6037// CHECK: <key>location</key>
6038// CHECK: <dict>
6039// CHECK: <key>line</key><integer>310</integer>
6040// CHECK: <key>col</key><integer>30</integer>
6041// CHECK: <key>file</key><integer>0</integer>
6042// CHECK: </dict>
6043// CHECK: </dict>
6044// CHECK: <dict>
6045// CHECK: <key>path</key>
6046// CHECK: <array>
6047// CHECK: <dict>
6048// CHECK: <key>kind</key><string>control</string>
6049// CHECK: <key>edges</key>
6050// CHECK: <array>
6051// CHECK: <dict>
6052// CHECK: <key>start</key>
6053// CHECK: <array>
6054// CHECK: <dict>
6055// CHECK: <key>line</key><integer>314</integer>
6056// CHECK: <key>col</key><integer>3</integer>
6057// CHECK: <key>file</key><integer>0</integer>
6058// CHECK: </dict>
6059// CHECK: <dict>
6060// CHECK: <key>line</key><integer>314</integer>
6061// CHECK: <key>col</key><integer>9</integer>
6062// CHECK: <key>file</key><integer>0</integer>
6063// CHECK: </dict>
6064// CHECK: </array>
6065// CHECK: <key>end</key>
6066// CHECK: <array>
6067// CHECK: <dict>
6068// CHECK: <key>line</key><integer>315</integer>
6069// CHECK: <key>col</key><integer>3</integer>
6070// CHECK: <key>file</key><integer>0</integer>
6071// CHECK: </dict>
6072// CHECK: <dict>
6073// CHECK: <key>line</key><integer>315</integer>
6074// CHECK: <key>col</key><integer>9</integer>
6075// CHECK: <key>file</key><integer>0</integer>
6076// CHECK: </dict>
6077// CHECK: </array>
6078// CHECK: </dict>
6079// CHECK: </array>
6080// CHECK: </dict>
6081// CHECK: <dict>
6082// CHECK: <key>kind</key><string>event</string>
6083// CHECK: <key>location</key>
6084// CHECK: <dict>
6085// CHECK: <key>line</key><integer>315</integer>
6086// CHECK: <key>col</key><integer>16</integer>
6087// CHECK: <key>file</key><integer>0</integer>
6088// CHECK: </dict>
6089// CHECK: <key>ranges</key>
6090// CHECK: <array>
6091// CHECK: <array>
6092// CHECK: <dict>
6093// CHECK: <key>line</key><integer>315</integer>
6094// CHECK: <key>col</key><integer>16</integer>
6095// CHECK: <key>file</key><integer>0</integer>
6096// CHECK: </dict>
6097// CHECK: <dict>
6098// CHECK: <key>line</key><integer>315</integer>
6099// CHECK: <key>col</key><integer>35</integer>
6100// CHECK: <key>file</key><integer>0</integer>
6101// CHECK: </dict>
6102// CHECK: </array>
6103// CHECK: </array>
6104// CHECK: <key>depth</key><integer>0</integer>
6105// CHECK: <key>extended_message</key>
6106// CHECK: <string>Type &apos;NSArray&lt;NSString *&gt; *&apos; is inferred from this context</string>
6107// CHECK: <key>message</key>
6108// CHECK: <string>Type &apos;NSArray&lt;NSString *&gt; *&apos; is inferred from this context</string>
6109// CHECK: </dict>
6110// CHECK: <dict>
6111// CHECK: <key>kind</key><string>control</string>
6112// CHECK: <key>edges</key>
6113// CHECK: <array>
6114// CHECK: <dict>
6115// CHECK: <key>start</key>
6116// CHECK: <array>
6117// CHECK: <dict>
6118// CHECK: <key>line</key><integer>315</integer>
6119// CHECK: <key>col</key><integer>3</integer>
6120// CHECK: <key>file</key><integer>0</integer>
6121// CHECK: </dict>
6122// CHECK: <dict>
6123// CHECK: <key>line</key><integer>315</integer>
6124// CHECK: <key>col</key><integer>9</integer>
6125// CHECK: <key>file</key><integer>0</integer>
6126// CHECK: </dict>
6127// CHECK: </array>
6128// CHECK: <key>end</key>
6129// CHECK: <array>
6130// CHECK: <dict>
6131// CHECK: <key>line</key><integer>316</integer>
6132// CHECK: <key>col</key><integer>3</integer>
6133// CHECK: <key>file</key><integer>0</integer>
6134// CHECK: </dict>
6135// CHECK: <dict>
6136// CHECK: <key>line</key><integer>316</integer>
6137// CHECK: <key>col</key><integer>9</integer>
6138// CHECK: <key>file</key><integer>0</integer>
6139// CHECK: </dict>
6140// CHECK: </array>
6141// CHECK: </dict>
6142// CHECK: </array>
6143// CHECK: </dict>
6144// CHECK: <dict>
6145// CHECK: <key>kind</key><string>control</string>
6146// CHECK: <key>edges</key>
6147// CHECK: <array>
6148// CHECK: <dict>
6149// CHECK: <key>start</key>
6150// CHECK: <array>
6151// CHECK: <dict>
6152// CHECK: <key>line</key><integer>316</integer>
6153// CHECK: <key>col</key><integer>3</integer>
6154// CHECK: <key>file</key><integer>0</integer>
6155// CHECK: </dict>
6156// CHECK: <dict>
6157// CHECK: <key>line</key><integer>316</integer>
6158// CHECK: <key>col</key><integer>9</integer>
6159// CHECK: <key>file</key><integer>0</integer>
6160// CHECK: </dict>
6161// CHECK: </array>
6162// CHECK: <key>end</key>
6163// CHECK: <array>
6164// CHECK: <dict>
6165// CHECK: <key>line</key><integer>316</integer>
6166// CHECK: <key>col</key><integer>30</integer>
6167// CHECK: <key>file</key><integer>0</integer>
6168// CHECK: </dict>
6169// CHECK: <dict>
6170// CHECK: <key>line</key><integer>316</integer>
6171// CHECK: <key>col</key><integer>30</integer>
6172// CHECK: <key>file</key><integer>0</integer>
6173// CHECK: </dict>
6174// CHECK: </array>
6175// CHECK: </dict>
6176// CHECK: </array>
6177// CHECK: </dict>
6178// CHECK: <dict>
6179// CHECK: <key>kind</key><string>event</string>
6180// CHECK: <key>location</key>
6181// CHECK: <dict>
6182// CHECK: <key>line</key><integer>316</integer>
6183// CHECK: <key>col</key><integer>30</integer>
6184// CHECK: <key>file</key><integer>0</integer>
6185// CHECK: </dict>
6186// CHECK: <key>ranges</key>
6187// CHECK: <array>
6188// CHECK: <array>
6189// CHECK: <dict>
6190// CHECK: <key>line</key><integer>316</integer>
6191// CHECK: <key>col</key><integer>30</integer>
6192// CHECK: <key>file</key><integer>0</integer>
6193// CHECK: </dict>
6194// CHECK: <dict>
6195// CHECK: <key>line</key><integer>316</integer>
6196// CHECK: <key>col</key><integer>30</integer>
6197// CHECK: <key>file</key><integer>0</integer>
6198// CHECK: </dict>
6199// CHECK: </array>
6200// CHECK: </array>
6201// CHECK: <key>depth</key><integer>0</integer>
6202// CHECK: <key>extended_message</key>
6203// CHECK: <string>Conversion from value of type &apos;NSArray&lt;NSString *&gt; *&apos; to incompatible type &apos;NSArray&lt;NSNumber *&gt; *&apos;</string>
6204// CHECK: <key>message</key>
6205// CHECK: <string>Conversion from value of type &apos;NSArray&lt;NSString *&gt; *&apos; to incompatible type &apos;NSArray&lt;NSNumber *&gt; *&apos;</string>
6206// CHECK: </dict>
6207// CHECK: </array>
6208// CHECK: <key>description</key><string>Conversion from value of type &apos;NSArray&lt;NSString *&gt; *&apos; to incompatible type &apos;NSArray&lt;NSNumber *&gt; *&apos;</string>
6209// CHECK: <key>category</key><string>Core Foundation/Objective-C</string>
6210// CHECK: <key>type</key><string>Generics</string>
6211// CHECK: <key>check_name</key><string>core.DynamicTypePropagation</string>
6212// CHECK: <key>issue_context_kind</key><string>function</string>
6213// CHECK: <key>issue_context</key><string>eraseSpecialization</string>
6214// CHECK: <key>issue_hash</key><string>3</string>
6215// CHECK: <key>location</key>
6216// CHECK: <dict>
6217// CHECK: <key>line</key><integer>316</integer>
6218// CHECK: <key>col</key><integer>30</integer>
6219// CHECK: <key>file</key><integer>0</integer>
6220// CHECK: </dict>
6221// CHECK: </dict>
6222// CHECK: <dict>
6223// CHECK: <key>path</key>
6224// CHECK: <array>
6225// CHECK: <dict>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00006226// CHECK: <key>kind</key><string>control</string>
6227// CHECK: <key>edges</key>
6228// CHECK: <array>
6229// CHECK: <dict>
6230// CHECK: <key>start</key>
6231// CHECK: <array>
6232// CHECK: <dict>
6233// CHECK: <key>line</key><integer>320</integer>
6234// CHECK: <key>col</key><integer>3</integer>
6235// CHECK: <key>file</key><integer>0</integer>
6236// CHECK: </dict>
6237// CHECK: <dict>
6238// CHECK: <key>line</key><integer>320</integer>
6239// CHECK: <key>col</key><integer>9</integer>
6240// CHECK: <key>file</key><integer>0</integer>
6241// CHECK: </dict>
6242// CHECK: </array>
6243// CHECK: <key>end</key>
6244// CHECK: <array>
6245// CHECK: <dict>
6246// CHECK: <key>line</key><integer>321</integer>
6247// CHECK: <key>col</key><integer>3</integer>
6248// CHECK: <key>file</key><integer>0</integer>
6249// CHECK: </dict>
6250// CHECK: <dict>
6251// CHECK: <key>line</key><integer>321</integer>
6252// CHECK: <key>col</key><integer>7</integer>
6253// CHECK: <key>file</key><integer>0</integer>
6254// CHECK: </dict>
6255// CHECK: </array>
6256// CHECK: </dict>
6257// CHECK: </array>
6258// CHECK: </dict>
6259// CHECK: <dict>
6260// CHECK: <key>kind</key><string>control</string>
6261// CHECK: <key>edges</key>
6262// CHECK: <array>
6263// CHECK: <dict>
6264// CHECK: <key>start</key>
6265// CHECK: <array>
6266// CHECK: <dict>
6267// CHECK: <key>line</key><integer>321</integer>
6268// CHECK: <key>col</key><integer>3</integer>
6269// CHECK: <key>file</key><integer>0</integer>
6270// CHECK: </dict>
6271// CHECK: <dict>
6272// CHECK: <key>line</key><integer>321</integer>
6273// CHECK: <key>col</key><integer>7</integer>
6274// CHECK: <key>file</key><integer>0</integer>
6275// CHECK: </dict>
6276// CHECK: </array>
6277// CHECK: <key>end</key>
6278// CHECK: <array>
6279// CHECK: <dict>
6280// CHECK: <key>line</key><integer>321</integer>
6281// CHECK: <key>col</key><integer>14</integer>
6282// CHECK: <key>file</key><integer>0</integer>
6283// CHECK: </dict>
6284// CHECK: <dict>
6285// CHECK: <key>line</key><integer>321</integer>
6286// CHECK: <key>col</key><integer>14</integer>
6287// CHECK: <key>file</key><integer>0</integer>
6288// CHECK: </dict>
6289// CHECK: </array>
6290// CHECK: </dict>
6291// CHECK: </array>
6292// CHECK: </dict>
6293// CHECK: <dict>
6294// CHECK: <key>kind</key><string>event</string>
6295// CHECK: <key>location</key>
6296// CHECK: <dict>
6297// CHECK: <key>line</key><integer>321</integer>
6298// CHECK: <key>col</key><integer>14</integer>
6299// CHECK: <key>file</key><integer>0</integer>
6300// CHECK: </dict>
6301// CHECK: <key>ranges</key>
6302// CHECK: <array>
6303// CHECK: <array>
6304// CHECK: <dict>
6305// CHECK: <key>line</key><integer>321</integer>
6306// CHECK: <key>col</key><integer>14</integer>
6307// CHECK: <key>file</key><integer>0</integer>
6308// CHECK: </dict>
6309// CHECK: <dict>
6310// CHECK: <key>line</key><integer>321</integer>
6311// CHECK: <key>col</key><integer>33</integer>
6312// CHECK: <key>file</key><integer>0</integer>
6313// CHECK: </dict>
6314// CHECK: </array>
6315// CHECK: </array>
6316// CHECK: <key>depth</key><integer>0</integer>
6317// CHECK: <key>extended_message</key>
Gabor Horvathdce40c52015-09-18 21:15:37 +00006318// CHECK: <string>Type &apos;NSArray&lt;NSString *&gt; *&apos; is inferred from this context</string>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00006319// CHECK: <key>message</key>
Gabor Horvathdce40c52015-09-18 21:15:37 +00006320// CHECK: <string>Type &apos;NSArray&lt;NSString *&gt; *&apos; is inferred from this context</string>
6321// CHECK: </dict>
6322// CHECK: <dict>
6323// CHECK: <key>kind</key><string>event</string>
6324// CHECK: <key>location</key>
6325// CHECK: <dict>
6326// CHECK: <key>line</key><integer>321</integer>
6327// CHECK: <key>col</key><integer>14</integer>
6328// CHECK: <key>file</key><integer>0</integer>
6329// CHECK: </dict>
6330// CHECK: <key>ranges</key>
6331// CHECK: <array>
6332// CHECK: <array>
6333// CHECK: <dict>
6334// CHECK: <key>line</key><integer>321</integer>
6335// CHECK: <key>col</key><integer>14</integer>
6336// CHECK: <key>file</key><integer>0</integer>
6337// CHECK: </dict>
6338// CHECK: <dict>
6339// CHECK: <key>line</key><integer>321</integer>
6340// CHECK: <key>col</key><integer>33</integer>
6341// CHECK: <key>file</key><integer>0</integer>
6342// CHECK: </dict>
6343// CHECK: </array>
6344// CHECK: </array>
6345// CHECK: <key>depth</key><integer>0</integer>
6346// CHECK: <key>extended_message</key>
6347// CHECK: <string>Object has a dynamic type &apos;NSArray&lt;NSString *&gt; *&apos; which is incompatible with static type &apos;NSSet *&apos;</string>
6348// CHECK: <key>message</key>
6349// CHECK: <string>Object has a dynamic type &apos;NSArray&lt;NSString *&gt; *&apos; which is incompatible with static type &apos;NSSet *&apos;</string>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00006350// CHECK: </dict>
6351// CHECK: </array>
Gabor Horvathdce40c52015-09-18 21:15:37 +00006352// CHECK: <key>description</key><string>Object has a dynamic type &apos;NSArray&lt;NSString *&gt; *&apos; which is incompatible with static type &apos;NSSet *&apos;</string>
6353// CHECK: <key>category</key><string>Type Error</string>
6354// CHECK: <key>type</key><string>Dynamic and static type mismatch</string>
6355// CHECK: <key>check_name</key><string>alpha.core.DynamicTypeChecker</string>
Gabor Horvath3ef9ef22015-09-16 22:44:36 +00006356// CHECK: <key>issue_context_kind</key><string>function</string>
6357// CHECK: <key>issue_context</key><string>returnToUnrelatedType</string>
6358// CHECK: <key>issue_hash</key><string>2</string>
6359// CHECK: <key>location</key>
6360// CHECK: <dict>
6361// CHECK: <key>line</key><integer>321</integer>
6362// CHECK: <key>col</key><integer>14</integer>
6363// CHECK: <key>file</key><integer>0</integer>
6364// CHECK: </dict>
6365// CHECK: </dict>
Gabor Horvathdce40c52015-09-18 21:15:37 +00006366// CHECK: <dict>
6367// CHECK: <key>path</key>
6368// CHECK: <array>
6369// CHECK: <dict>
6370// CHECK: <key>kind</key><string>control</string>
6371// CHECK: <key>edges</key>
6372// CHECK: <array>
6373// CHECK: <dict>
6374// CHECK: <key>start</key>
6375// CHECK: <array>
6376// CHECK: <dict>
6377// CHECK: <key>line</key><integer>326</integer>
6378// CHECK: <key>col</key><integer>3</integer>
6379// CHECK: <key>file</key><integer>0</integer>
6380// CHECK: </dict>
6381// CHECK: <dict>
6382// CHECK: <key>line</key><integer>326</integer>
6383// CHECK: <key>col</key><integer>9</integer>
6384// CHECK: <key>file</key><integer>0</integer>
6385// CHECK: </dict>
6386// CHECK: </array>
6387// CHECK: <key>end</key>
6388// CHECK: <array>
6389// CHECK: <dict>
6390// CHECK: <key>line</key><integer>327</integer>
6391// CHECK: <key>col</key><integer>3</integer>
6392// CHECK: <key>file</key><integer>0</integer>
6393// CHECK: </dict>
6394// CHECK: <dict>
6395// CHECK: <key>line</key><integer>327</integer>
6396// CHECK: <key>col</key><integer>4</integer>
6397// CHECK: <key>file</key><integer>0</integer>
6398// CHECK: </dict>
6399// CHECK: </array>
6400// CHECK: </dict>
6401// CHECK: </array>
6402// CHECK: </dict>
6403// CHECK: <dict>
6404// CHECK: <key>kind</key><string>event</string>
6405// CHECK: <key>location</key>
6406// CHECK: <dict>
6407// CHECK: <key>line</key><integer>327</integer>
6408// CHECK: <key>col</key><integer>10</integer>
6409// CHECK: <key>file</key><integer>0</integer>
6410// CHECK: </dict>
6411// CHECK: <key>ranges</key>
6412// CHECK: <array>
6413// CHECK: <array>
6414// CHECK: <dict>
6415// CHECK: <key>line</key><integer>327</integer>
6416// CHECK: <key>col</key><integer>10</integer>
6417// CHECK: <key>file</key><integer>0</integer>
6418// CHECK: </dict>
6419// CHECK: <dict>
6420// CHECK: <key>line</key><integer>327</integer>
6421// CHECK: <key>col</key><integer>29</integer>
6422// CHECK: <key>file</key><integer>0</integer>
6423// CHECK: </dict>
6424// CHECK: </array>
6425// CHECK: </array>
6426// CHECK: <key>depth</key><integer>0</integer>
6427// CHECK: <key>extended_message</key>
6428// CHECK: <string>Type &apos;NSString *&apos; is inferred from this context</string>
6429// CHECK: <key>message</key>
6430// CHECK: <string>Type &apos;NSString *&apos; is inferred from this context</string>
6431// CHECK: </dict>
6432// CHECK: <dict>
6433// CHECK: <key>kind</key><string>control</string>
6434// CHECK: <key>edges</key>
6435// CHECK: <array>
6436// CHECK: <dict>
6437// CHECK: <key>start</key>
6438// CHECK: <array>
6439// CHECK: <dict>
6440// CHECK: <key>line</key><integer>327</integer>
6441// CHECK: <key>col</key><integer>3</integer>
6442// CHECK: <key>file</key><integer>0</integer>
6443// CHECK: </dict>
6444// CHECK: <dict>
6445// CHECK: <key>line</key><integer>327</integer>
6446// CHECK: <key>col</key><integer>4</integer>
6447// CHECK: <key>file</key><integer>0</integer>
6448// CHECK: </dict>
6449// CHECK: </array>
6450// CHECK: <key>end</key>
6451// CHECK: <array>
6452// CHECK: <dict>
6453// CHECK: <key>line</key><integer>328</integer>
6454// CHECK: <key>col</key><integer>3</integer>
6455// CHECK: <key>file</key><integer>0</integer>
6456// CHECK: </dict>
6457// CHECK: <dict>
6458// CHECK: <key>line</key><integer>328</integer>
6459// CHECK: <key>col</key><integer>10</integer>
6460// CHECK: <key>file</key><integer>0</integer>
6461// CHECK: </dict>
6462// CHECK: </array>
6463// CHECK: </dict>
6464// CHECK: </array>
6465// CHECK: </dict>
6466// CHECK: <dict>
6467// CHECK: <key>kind</key><string>control</string>
6468// CHECK: <key>edges</key>
6469// CHECK: <array>
6470// CHECK: <dict>
6471// CHECK: <key>start</key>
6472// CHECK: <array>
6473// CHECK: <dict>
6474// CHECK: <key>line</key><integer>328</integer>
6475// CHECK: <key>col</key><integer>3</integer>
6476// CHECK: <key>file</key><integer>0</integer>
6477// CHECK: </dict>
6478// CHECK: <dict>
6479// CHECK: <key>line</key><integer>328</integer>
6480// CHECK: <key>col</key><integer>10</integer>
6481// CHECK: <key>file</key><integer>0</integer>
6482// CHECK: </dict>
6483// CHECK: </array>
6484// CHECK: <key>end</key>
6485// CHECK: <array>
6486// CHECK: <dict>
6487// CHECK: <key>line</key><integer>328</integer>
6488// CHECK: <key>col</key><integer>19</integer>
6489// CHECK: <key>file</key><integer>0</integer>
6490// CHECK: </dict>
6491// CHECK: <dict>
6492// CHECK: <key>line</key><integer>328</integer>
6493// CHECK: <key>col</key><integer>19</integer>
6494// CHECK: <key>file</key><integer>0</integer>
6495// CHECK: </dict>
6496// CHECK: </array>
6497// CHECK: </dict>
6498// CHECK: </array>
6499// CHECK: </dict>
6500// CHECK: <dict>
6501// CHECK: <key>kind</key><string>event</string>
6502// CHECK: <key>location</key>
6503// CHECK: <dict>
6504// CHECK: <key>line</key><integer>328</integer>
6505// CHECK: <key>col</key><integer>19</integer>
6506// CHECK: <key>file</key><integer>0</integer>
6507// CHECK: </dict>
6508// CHECK: <key>ranges</key>
6509// CHECK: <array>
6510// CHECK: <array>
6511// CHECK: <dict>
6512// CHECK: <key>line</key><integer>328</integer>
6513// CHECK: <key>col</key><integer>19</integer>
6514// CHECK: <key>file</key><integer>0</integer>
6515// CHECK: </dict>
6516// CHECK: <dict>
6517// CHECK: <key>line</key><integer>328</integer>
6518// CHECK: <key>col</key><integer>19</integer>
6519// CHECK: <key>file</key><integer>0</integer>
6520// CHECK: </dict>
6521// CHECK: </array>
6522// CHECK: </array>
6523// CHECK: <key>depth</key><integer>0</integer>
6524// CHECK: <key>extended_message</key>
6525// CHECK: <string>Object has a dynamic type &apos;NSString *&apos; which is incompatible with static type &apos;NSNumber *&apos;</string>
6526// CHECK: <key>message</key>
6527// CHECK: <string>Object has a dynamic type &apos;NSString *&apos; which is incompatible with static type &apos;NSNumber *&apos;</string>
6528// CHECK: </dict>
6529// CHECK: </array>
6530// CHECK: <key>description</key><string>Object has a dynamic type &apos;NSString *&apos; which is incompatible with static type &apos;NSNumber *&apos;</string>
6531// CHECK: <key>category</key><string>Type Error</string>
6532// CHECK: <key>type</key><string>Dynamic and static type mismatch</string>
6533// CHECK: <key>check_name</key><string>alpha.core.DynamicTypeChecker</string>
6534// CHECK: <key>issue_context_kind</key><string>function</string>
6535// CHECK: <key>issue_context</key><string>returnToIdVariable</string>
6536// CHECK: <key>issue_hash</key><string>3</string>
6537// CHECK: <key>location</key>
6538// CHECK: <dict>
6539// CHECK: <key>line</key><integer>328</integer>
6540// CHECK: <key>col</key><integer>19</integer>
6541// CHECK: <key>file</key><integer>0</integer>
6542// CHECK: </dict>
6543// CHECK: </dict>
Gabor Horvath717b51c2015-08-21 00:18:28 +00006544// CHECK: </array>