blob: dac148d42e8ebb95241e62e2de2a9e707c9a51d3 [file] [log] [blame]
Dominic Chen184c6242017-03-03 18:02:02 +00001// RUN: %clang_analyze_cc1 -analyzer-checker=core,osx.cocoa.ObjCGenerics,alpha.core.DynamicTypeChecker -verify -Wno-objc-method-access %s
2// RUN: %clang_analyze_cc1 -analyzer-checker=core,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;
Devin Coughlinab139a92016-12-05 16:28:47 +000046- (BOOL)containsObject:(ObjectType)anObject;
Gabor Horvath717b51c2015-08-21 00:18:28 +000047- (ObjectType)getObjAtIndex:(NSUInteger)idx;
48- (ObjectType)objectAtIndexedSubscript:(NSUInteger)idx;
Devin Coughlinab139a92016-12-05 16:28:47 +000049- (NSArray<ObjectType> *)arrayByAddingObject:(ObjectType)anObject;
Gabor Horvath717b51c2015-08-21 00:18:28 +000050@property(readonly) ObjectType firstObject;
51@end
52
Devin Coughlinab139a92016-12-05 16:28:47 +000053@interface NSMutableArray<ObjectType> : NSArray<ObjectType>
54- (void)addObject:(ObjectType)anObject;
55- (instancetype)init;
56@end
57
Gabor Horvath717b51c2015-08-21 00:18:28 +000058@interface MutableArray<ObjectType> : NSArray<ObjectType>
59- (void)addObject:(ObjectType)anObject;
60@end
61
62@interface LegacyMutableArray : MutableArray
63@end
64
65@interface LegacySpecialMutableArray : LegacyMutableArray
66@end
67
68@interface BuggyMutableArray<T> : MutableArray
69@end
70
71@interface BuggySpecialMutableArray<T> : BuggyMutableArray<T>
72@end
73
74@interface MyMutableStringArray : MutableArray<NSString *>
75@end
76
77@interface ExceptionalArray<ExceptionType> : MutableArray<NSString *>
78- (ExceptionType) getException;
79@end
80
81@interface UnrelatedType : NSObject<NSCopying>
82@end
83
84int getUnknown();
85NSArray *getStuff();
86NSArray *getTypedStuff() {
87 NSArray<NSNumber *> *c = getStuff();
88 return c;
89}
90
91void doStuff(NSArray<NSNumber *> *);
92void withArrString(NSArray<NSString *> *);
93void withArrMutableString(NSArray<NSMutableString *> *);
94void withMutArrString(MutableArray<NSString *> *);
95void withMutArrMutableString(MutableArray<NSMutableString *> *);
96
Devin Coughlinab139a92016-12-05 16:28:47 +000097void incompatibleTypesErased(NSArray *a, NSMutableArray<NSString *> *b,
98 NSArray<NSNumber *> *c,
99 NSMutableArray *d) {
Gabor Horvath717b51c2015-08-21 00:18:28 +0000100 a = b;
Devin Coughlinab139a92016-12-05 16:28:47 +0000101 c = a; // expected-warning {{Conversion from value of type 'NSMutableArray<NSString *> *' to incompatible type 'NSArray<NSNumber *> *'}}
102 [a contains: [[NSNumber alloc] init]];
Gabor Horvath717b51c2015-08-21 00:18:28 +0000103 [a contains: [[NSString alloc] init]];
Gabor Horvath1cbf4352015-09-08 21:04:14 +0000104 doStuff(a); // expected-warning {{Conversion}}
Devin Coughlinab139a92016-12-05 16:28:47 +0000105
106 d = b;
107 [d addObject: [[NSNumber alloc] init]]; // expected-warning {{Conversion from value of type 'NSNumber *' to incompatible type 'NSString *'}}
Gabor Horvath717b51c2015-08-21 00:18:28 +0000108}
109
110void crossProceduralErasedTypes() {
Gabor Horvath1cbf4352015-09-08 21:04:14 +0000111 NSArray<NSString *> *a = getTypedStuff(); // expected-warning {{Conversion}}
Gabor Horvath717b51c2015-08-21 00:18:28 +0000112}
113
Devin Coughlinab139a92016-12-05 16:28:47 +0000114void incompatibleTypesErasedReverseConversion(NSMutableArray *a,
115 NSMutableArray<NSString *> *b) {
Gabor Horvath717b51c2015-08-21 00:18:28 +0000116 b = a;
Devin Coughlinab139a92016-12-05 16:28:47 +0000117 [a contains: [[NSNumber alloc] init]];
Gabor Horvath717b51c2015-08-21 00:18:28 +0000118 [a contains: [[NSString alloc] init]];
Gabor Horvath1cbf4352015-09-08 21:04:14 +0000119 doStuff(a); // expected-warning {{Conversion}}
Devin Coughlinab139a92016-12-05 16:28:47 +0000120
121 [a addObject: [[NSNumber alloc] init]]; // expected-warning {{Conversion from value of type 'NSNumber *' to incompatible type 'NSString *'}}
Gabor Horvath717b51c2015-08-21 00:18:28 +0000122}
123
Devin Coughlinab139a92016-12-05 16:28:47 +0000124void idErasedIncompatibleTypesReverseConversion(id a, NSMutableArray<NSString *> *b) {
Gabor Horvath717b51c2015-08-21 00:18:28 +0000125 b = a;
Devin Coughlinab139a92016-12-05 16:28:47 +0000126 [a contains: [[NSNumber alloc] init]];
Gabor Horvath717b51c2015-08-21 00:18:28 +0000127 [a contains: [[NSString alloc] init]];
Gabor Horvath1cbf4352015-09-08 21:04:14 +0000128 doStuff(a); // expected-warning {{Conversion}}
Devin Coughlinab139a92016-12-05 16:28:47 +0000129
130 [a addObject:[[NSNumber alloc] init]]; // expected-warning {{Conversion from value of type 'NSNumber *' to incompatible type 'NSString *'}}
Gabor Horvath717b51c2015-08-21 00:18:28 +0000131}
132
Devin Coughlinab139a92016-12-05 16:28:47 +0000133void idErasedIncompatibleTypes(id a, NSMutableArray<NSString *> *b,
Gabor Horvath717b51c2015-08-21 00:18:28 +0000134 NSArray<NSNumber *> *c) {
135 a = b;
Gabor Horvath1cbf4352015-09-08 21:04:14 +0000136 c = a; // expected-warning {{Conversion}}
Devin Coughlinab139a92016-12-05 16:28:47 +0000137 [a contains: [[NSNumber alloc] init]];
Gabor Horvath717b51c2015-08-21 00:18:28 +0000138 [a contains: [[NSString alloc] init]];
Gabor Horvath1cbf4352015-09-08 21:04:14 +0000139 doStuff(a); // expected-warning {{Conversion}}
Devin Coughlinab139a92016-12-05 16:28:47 +0000140
141 [a addObject:[[NSNumber alloc] init]]; // expected-warning {{Conversion from value of type 'NSNumber *' to incompatible type 'NSString *'}}
Gabor Horvath717b51c2015-08-21 00:18:28 +0000142}
143
144void pathSensitiveInference(MutableArray *m, MutableArray<NSString *> *a,
145 MutableArray<NSMutableString *> *b) {
146 if (getUnknown() == 5) {
147 m = a;
148 [m contains: [[NSString alloc] init]];
149 } else {
150 m = b;
151 [m contains: [[NSMutableString alloc] init]];
152 }
Gabor Horvath1cbf4352015-09-08 21:04:14 +0000153 [m addObject: [[NSString alloc] init]]; // expected-warning {{Conversion}}
Gabor Horvath717b51c2015-08-21 00:18:28 +0000154 [m addObject: [[NSMutableString alloc] init]];
155}
156
157void verifyAPIusage(id a, MutableArray<NSString *> *b) {
158 b = a;
Gabor Horvath1cbf4352015-09-08 21:04:14 +0000159 doStuff(a); // expected-warning {{Conversion}}
Gabor Horvath717b51c2015-08-21 00:18:28 +0000160}
161
162void trustExplicitCasts(MutableArray *a,
163 MutableArray<NSMutableString *> *b) {
164 b = (MutableArray<NSMutableString *> *)a;
Gabor Horvath1cbf4352015-09-08 21:04:14 +0000165 [a addObject: [[NSString alloc] init]]; // expected-warning {{Conversion}}
Gabor Horvath717b51c2015-08-21 00:18:28 +0000166}
167
168void subtypeOfGeneric(id d, MyMutableStringArray *a,
169 MutableArray<NSString *> *b,
170 MutableArray<NSNumber *> *c) {
171 d = a;
172 b = d;
Gabor Horvath1cbf4352015-09-08 21:04:14 +0000173 c = d; // expected-warning {{Conversion}}
Gabor Horvath717b51c2015-08-21 00:18:28 +0000174}
175
176void genericSubtypeOfGeneric(id d, ExceptionalArray<NSString *> *a,
177 MutableArray<NSString *> *b,
178 MutableArray<NSNumber *> *c) {
179 d = a;
180 [d contains: [[NSString alloc] init]];
Devin Coughlinab139a92016-12-05 16:28:47 +0000181 [d contains: [[NSNumber alloc] init]];
Gabor Horvath717b51c2015-08-21 00:18:28 +0000182 b = d;
Gabor Horvath1cbf4352015-09-08 21:04:14 +0000183 c = d; // expected-warning {{Conversion}}
Devin Coughlinab139a92016-12-05 16:28:47 +0000184
185 [d addObject: [[NSNumber alloc] init]]; // expected-warning {{Conversion from value of type 'NSNumber *' to incompatible type 'NSString *'}}
Gabor Horvath717b51c2015-08-21 00:18:28 +0000186}
187
188void genericSubtypeOfGenericReverse(id d, ExceptionalArray<NSString *> *a,
189 MutableArray<NSString *> *b,
190 MutableArray<NSNumber *> *c) {
191 a = d;
192 [d contains: [[NSString alloc] init]];
Devin Coughlinab139a92016-12-05 16:28:47 +0000193 [d contains: [[NSNumber alloc] init]];
Gabor Horvath717b51c2015-08-21 00:18:28 +0000194 b = d;
Gabor Horvath1cbf4352015-09-08 21:04:14 +0000195 c = d; // expected-warning {{Conversion}}
Devin Coughlinab139a92016-12-05 16:28:47 +0000196
197 [d addObject: [[NSNumber alloc] init]]; // expected-warning {{Conversion from value of type 'NSNumber *' to incompatible type 'NSString *'}}
Gabor Horvath717b51c2015-08-21 00:18:28 +0000198}
199
200void inferenceFromAPI(id a) {
201 // Here the type parameter is invariant. There should be a warning every time
202 // when the type parameter changes during the conversions.
203 withMutArrString(a);
Gabor Horvath1cbf4352015-09-08 21:04:14 +0000204 withMutArrMutableString(a); // expected-warning {{Conversion}}
Gabor Horvath717b51c2015-08-21 00:18:28 +0000205}
206
207void inferenceFromAPI2(id a) {
208 withMutArrMutableString(a);
Gabor Horvath1cbf4352015-09-08 21:04:14 +0000209 withMutArrString(a); // expected-warning {{Conversion}}
Gabor Horvath717b51c2015-08-21 00:18:28 +0000210}
211
212void inferenceFromAPIWithLegacyTypes(LegacyMutableArray *a) {
213 withMutArrMutableString(a);
Gabor Horvath1cbf4352015-09-08 21:04:14 +0000214 withMutArrString(a); // expected-warning {{Conversion}}
Gabor Horvath717b51c2015-08-21 00:18:28 +0000215}
216
217void inferenceFromAPIWithLegacyTypes2(LegacySpecialMutableArray *a) {
218 withMutArrString(a);
Gabor Horvath1cbf4352015-09-08 21:04:14 +0000219 withMutArrMutableString(a); // expected-warning {{Conversion}}
220}
221
222void inferenceFromAPIWithLegacyTypes3(__kindof NSArray<NSString *> *a) {
223 LegacyMutableArray *b = a;
224 withMutArrString(b);
225 withMutArrMutableString(b); // expected-warning {{Conversion}}
Gabor Horvath717b51c2015-08-21 00:18:28 +0000226}
227
228void inferenceFromAPIWithBuggyTypes(BuggyMutableArray<NSMutableString *> *a) {
229 withMutArrString(a);
Gabor Horvath1cbf4352015-09-08 21:04:14 +0000230 withMutArrMutableString(a); // expected-warning {{Conversion}}
Gabor Horvath717b51c2015-08-21 00:18:28 +0000231}
232
233void InferenceFromAPIWithBuggyTypes2(BuggySpecialMutableArray<NSMutableString *> *a) {
234 withMutArrMutableString(a);
Gabor Horvath1cbf4352015-09-08 21:04:14 +0000235 withMutArrString(a); // expected-warning {{Conversion}}
236}
237
238void InferenceFromAPIWithBuggyTypes3(MutableArray<NSMutableString *> *a) {
239 id b = a;
240 withMutArrMutableString((BuggyMutableArray<NSMutableString *> *)b);
241 withMutArrString(b); // expected-warning {{Conversion}}
242}
243
244void InferenceFromAPIWithBuggyTypes4(__kindof NSArray<NSString *> *a) {
245 BuggyMutableArray<NSMutableString *> *b = a;
246 withMutArrString(b);
247 withMutArrMutableString(b); // expected-warning {{Conversion}}
Gabor Horvath717b51c2015-08-21 00:18:28 +0000248}
249
250NSArray<NSString *> *getStrings();
251void enforceDynamicRulesInsteadOfStatic(NSArray<NSNumber *> *a) {
252 NSArray *b = a;
253 // Valid uses of NSArray of NSNumbers.
254 b = getStrings();
255 // Valid uses of NSArray of NSStrings.
256}
257
258void workWithProperties(NSArray<NSNumber *> *a) {
259 NSArray *b = a;
Gabor Horvathdce40c52015-09-18 21:15:37 +0000260 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 +0000261 NSNumber *num = [b getObjAtIndex: 0];
Gabor Horvathdce40c52015-09-18 21:15:37 +0000262 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 +0000263 num = [b firstObject];
Gabor Horvathdce40c52015-09-18 21:15:37 +0000264 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 +0000265 num = b.firstObject;
Gabor Horvathdce40c52015-09-18 21:15:37 +0000266 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 +0000267 num = b[0];
268}
269
270void findMethodDeclInTrackedType(id m, NSArray<NSMutableString *> *a,
271 MutableArray<NSMutableString *> *b) {
272 a = b;
273 if (getUnknown() == 5) {
274 m = a;
Gabor Horvath1cbf4352015-09-08 21:04:14 +0000275 [m addObject: [[NSString alloc] init]]; // expected-warning {{Conversion}}
Gabor Horvath717b51c2015-08-21 00:18:28 +0000276 } else {
277 m = b;
278 [m addObject: [[NSMutableString alloc] init]];
279 }
280}
281
282void findMethodDeclInTrackedType2(__kindof NSArray<NSString *> *a,
283 MutableArray<NSMutableString *> *b) {
284 a = b;
285 if (getUnknown() == 5) {
Gabor Horvath1cbf4352015-09-08 21:04:14 +0000286 [a addObject: [[NSString alloc] init]]; // expected-warning {{Conversion}}
Gabor Horvath717b51c2015-08-21 00:18:28 +0000287 } else {
288 [a addObject: [[NSMutableString alloc] init]];
289 }
290}
291
292void testUnannotatedLiterals() {
293 // ObjCArrayLiterals are not specialized in the AST.
294 NSArray *arr = @[@"A", @"B"];
295 [arr contains: [[NSNumber alloc] init]];
296}
297
298void testAnnotatedLiterals() {
299 NSArray<NSString *> *arr = @[@"A", @"B"];
300 NSArray *arr2 = arr;
Devin Coughlinab139a92016-12-05 16:28:47 +0000301 [arr2 contains: [[NSNumber alloc] init]];
Gabor Horvath717b51c2015-08-21 00:18:28 +0000302}
303
304void nonExistentMethodDoesNotCrash(id a, MutableArray<NSMutableString *> *b) {
305 a = b;
306 [a nonExistentMethod];
307}
308
309void trackedClassVariables() {
310 Class c = [NSArray<NSString *> class];
Gabor Horvath1cbf4352015-09-08 21:04:14 +0000311 NSArray<NSNumber *> *a = [c getEmpty]; // expected-warning {{Conversion}}
312 a = [c getEmpty2]; // expected-warning {{Conversion}}
Gabor Horvath717b51c2015-08-21 00:18:28 +0000313}
314
315void nestedCollections(NSArray<NSArray<NSNumber *> *> *mat, NSArray<NSString *> *row) {
316 id temp = row;
Gabor Horvath1cbf4352015-09-08 21:04:14 +0000317 [mat contains: temp]; // expected-warning {{Conversion}}
Gabor Horvath717b51c2015-08-21 00:18:28 +0000318}
319
320void testMistmatchedTypeCast(MutableArray<NSMutableString *> *a) {
321 MutableArray *b = (MutableArray<NSNumber *> *)a;
322 [b addObject: [[NSNumber alloc] init]];
323 id c = (UnrelatedType *)a;
324 [c addObject: [[NSNumber alloc] init]];
325 [c addObject: [[NSString alloc] init]];
326}
327
Gabor Horvath3ef9ef22015-09-16 22:44:36 +0000328void returnCollectionToIdVariable(NSArray<NSArray<NSString *> *> *arr) {
329 NSArray *erased = arr;
330 id a = [erased firstObject];
331 NSArray<NSNumber *> *res = a; // expected-warning {{Conversion}}
332}
333
334void eraseSpecialization(NSArray<NSArray<NSString *> *> *arr) {
335 NSArray *erased = arr;
336 NSArray* a = [erased firstObject];
337 NSArray<NSNumber *> *res = a; // expected-warning {{Conversion}}
338}
339
340void returnToUnrelatedType(NSArray<NSArray<NSString *> *> *arr) {
341 NSArray *erased = arr;
Gabor Horvathdce40c52015-09-18 21:15:37 +0000342 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 +0000343 (void)a;
344}
345
346void returnToIdVariable(NSArray<NSString *> *arr) {
347 NSArray *erased = arr;
348 id a = [erased firstObject];
Gabor Horvathdce40c52015-09-18 21:15:37 +0000349 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 +0000350}
351
Devin Coughlinc1bfafd2016-05-11 20:28:41 +0000352@interface UnrelatedTypeGeneric<T> : NSObject<NSCopying>
353- (void)takesType:(T)v;
354@end
355
356void testGetMostInformativeDerivedForId(NSArray<NSString *> *a,
357 UnrelatedTypeGeneric<NSString *> *b) {
358 id idB = b;
359 a = idB; // expected-warning {{Conversion from value of type 'UnrelatedTypeGeneric<NSString *> *' to incompatible type 'NSArray<NSString *> *'}}
360
361 // rdar://problem/26086914 crash here caused by symbolic type being unrelated
362 // to compile-time source type of cast.
363 id x = a; // Compile-time type is NSArray<>, Symbolic type is UnrelatedTypeGeneric<>.
364 [x takesType:[[NSNumber alloc] init]]; // expected-warning {{Conversion from value of type 'NSNumber *' to incompatible type 'NSString *'}}
365}
366
Devin Coughlinab139a92016-12-05 16:28:47 +0000367void testArgumentAfterUpcastToRootWithCovariantTypeParameter(NSArray<NSString *> *allStrings, NSNumber *number) {
368 NSArray<NSObject *> *allObjects = allStrings; // no-warning
369 NSArray<NSObject *> *moreObjects = [allObjects arrayByAddingObject:number]; // no-warning
370}
371
372void testArgumentAfterUpcastWithCovariantTypeParameter(NSArray<NSMutableString *> *allMutableStrings, NSNumber *number) {
373 NSArray<NSString *> *allStrings = allMutableStrings; // no-warning
374 id numberAsId = number;
375 NSArray<NSString *> *moreStrings = [allStrings arrayByAddingObject:numberAsId]; // Sema: expected-warning {{Object has a dynamic type 'NSNumber *' which is incompatible with static type 'NSString *'}}
376}
377
378void testArgumentAfterCastToUnspecializedWithCovariantTypeParameter(NSArray<NSMutableString *> *allMutableStrings, NSNumber *number) {
379 NSArray *allStrings = allMutableStrings; // no-warning
380 id numberAsId = number;
381
382 NSArray *moreStringsUnspecialized = [allStrings arrayByAddingObject:numberAsId]; // no-warning
383
384 // Ideally the analyzer would warn here.
385 NSArray<NSString *> *moreStringsSpecialized = [allStrings arrayByAddingObject:numberAsId];
386}
387
388void testCallToMethodWithCovariantParameterOnInstanceOfSubclassWithInvariantParameter(NSMutableArray<NSMutableString *> *mutableArrayOfMutableStrings, NSString *someString) {
389 NSArray<NSString *> *arrayOfStrings = mutableArrayOfMutableStrings;
390 [arrayOfStrings containsObject:someString]; // no-warning
391}
392
393// CHECK: <key>diagnostics</key>
394// CHECK-NEXT: <array>
395// CHECK-NEXT: <dict>
396// CHECK-NEXT: <key>path</key>
397// CHECK-NEXT: <array>
Gabor Horvathefec1632015-10-22 11:53:04 +0000398// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +0000399// CHECK-NEXT: <key>kind</key><string>event</string>
400// CHECK-NEXT: <key>location</key>
401// CHECK-NEXT: <dict>
402// CHECK-NEXT: <key>line</key><integer>100</integer>
403// CHECK-NEXT: <key>col</key><integer>7</integer>
404// CHECK-NEXT: <key>file</key><integer>0</integer>
405// CHECK-NEXT: </dict>
406// CHECK-NEXT: <key>ranges</key>
407// CHECK-NEXT: <array>
408// CHECK-NEXT: <array>
409// CHECK-NEXT: <dict>
410// CHECK-NEXT: <key>line</key><integer>100</integer>
411// CHECK-NEXT: <key>col</key><integer>7</integer>
412// CHECK-NEXT: <key>file</key><integer>0</integer>
413// CHECK-NEXT: </dict>
414// CHECK-NEXT: <dict>
415// CHECK-NEXT: <key>line</key><integer>100</integer>
416// CHECK-NEXT: <key>col</key><integer>7</integer>
417// CHECK-NEXT: <key>file</key><integer>0</integer>
418// CHECK-NEXT: </dict>
419// CHECK-NEXT: </array>
420// CHECK-NEXT: </array>
421// CHECK-NEXT: <key>depth</key><integer>0</integer>
422// CHECK-NEXT: <key>extended_message</key>
423// CHECK-NEXT: <string>Type &apos;NSMutableArray&lt;NSString *&gt; *&apos; is inferred from implicit cast (from &apos;NSMutableArray&lt;NSString *&gt; *&apos; to &apos;NSArray *&apos;)</string>
424// CHECK-NEXT: <key>message</key>
425// CHECK-NEXT: <string>Type &apos;NSMutableArray&lt;NSString *&gt; *&apos; is inferred from implicit cast (from &apos;NSMutableArray&lt;NSString *&gt; *&apos; to &apos;NSArray *&apos;)</string>
Gabor Horvathefec1632015-10-22 11:53:04 +0000426// CHECK-NEXT: </dict>
Devin Coughlinab139a92016-12-05 16:28:47 +0000427// CHECK-NEXT: <dict>
428// CHECK-NEXT: <key>kind</key><string>control</string>
429// CHECK-NEXT: <key>edges</key>
Gabor Horvathefec1632015-10-22 11:53:04 +0000430// CHECK-NEXT: <array>
431// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +0000432// CHECK-NEXT: <key>start</key>
433// CHECK-NEXT: <array>
434// CHECK-NEXT: <dict>
435// CHECK-NEXT: <key>line</key><integer>100</integer>
436// CHECK-NEXT: <key>col</key><integer>3</integer>
437// CHECK-NEXT: <key>file</key><integer>0</integer>
438// CHECK-NEXT: </dict>
439// CHECK-NEXT: <dict>
440// CHECK-NEXT: <key>line</key><integer>100</integer>
441// CHECK-NEXT: <key>col</key><integer>3</integer>
442// CHECK-NEXT: <key>file</key><integer>0</integer>
443// CHECK-NEXT: </dict>
444// CHECK-NEXT: </array>
445// CHECK-NEXT: <key>end</key>
446// CHECK-NEXT: <array>
447// CHECK-NEXT: <dict>
448// CHECK-NEXT: <key>line</key><integer>101</integer>
449// CHECK-NEXT: <key>col</key><integer>3</integer>
450// CHECK-NEXT: <key>file</key><integer>0</integer>
451// CHECK-NEXT: </dict>
452// CHECK-NEXT: <dict>
453// CHECK-NEXT: <key>line</key><integer>101</integer>
454// CHECK-NEXT: <key>col</key><integer>3</integer>
455// CHECK-NEXT: <key>file</key><integer>0</integer>
456// CHECK-NEXT: </dict>
457// CHECK-NEXT: </array>
Gabor Horvathefec1632015-10-22 11:53:04 +0000458// CHECK-NEXT: </dict>
Devin Coughlinab139a92016-12-05 16:28:47 +0000459// CHECK-NEXT: </array>
460// CHECK-NEXT: </dict>
461// CHECK-NEXT: <dict>
462// CHECK-NEXT: <key>kind</key><string>control</string>
463// CHECK-NEXT: <key>edges</key>
464// CHECK-NEXT: <array>
Gabor Horvathefec1632015-10-22 11:53:04 +0000465// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +0000466// CHECK-NEXT: <key>start</key>
467// CHECK-NEXT: <array>
468// CHECK-NEXT: <dict>
469// CHECK-NEXT: <key>line</key><integer>101</integer>
470// CHECK-NEXT: <key>col</key><integer>3</integer>
471// CHECK-NEXT: <key>file</key><integer>0</integer>
472// CHECK-NEXT: </dict>
473// CHECK-NEXT: <dict>
474// CHECK-NEXT: <key>line</key><integer>101</integer>
475// CHECK-NEXT: <key>col</key><integer>3</integer>
476// CHECK-NEXT: <key>file</key><integer>0</integer>
477// CHECK-NEXT: </dict>
478// CHECK-NEXT: </array>
479// CHECK-NEXT: <key>end</key>
480// CHECK-NEXT: <array>
481// CHECK-NEXT: <dict>
482// CHECK-NEXT: <key>line</key><integer>101</integer>
483// CHECK-NEXT: <key>col</key><integer>7</integer>
484// CHECK-NEXT: <key>file</key><integer>0</integer>
485// CHECK-NEXT: </dict>
486// CHECK-NEXT: <dict>
487// CHECK-NEXT: <key>line</key><integer>101</integer>
488// CHECK-NEXT: <key>col</key><integer>7</integer>
489// CHECK-NEXT: <key>file</key><integer>0</integer>
490// CHECK-NEXT: </dict>
491// CHECK-NEXT: </array>
Gabor Horvathefec1632015-10-22 11:53:04 +0000492// CHECK-NEXT: </dict>
493// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +0000494// CHECK-NEXT: </dict>
495// CHECK-NEXT: <dict>
496// CHECK-NEXT: <key>kind</key><string>event</string>
497// CHECK-NEXT: <key>location</key>
498// CHECK-NEXT: <dict>
499// CHECK-NEXT: <key>line</key><integer>101</integer>
500// CHECK-NEXT: <key>col</key><integer>7</integer>
501// CHECK-NEXT: <key>file</key><integer>0</integer>
502// CHECK-NEXT: </dict>
503// CHECK-NEXT: <key>ranges</key>
Gabor Horvathefec1632015-10-22 11:53:04 +0000504// CHECK-NEXT: <array>
Devin Coughlinab139a92016-12-05 16:28:47 +0000505// CHECK-NEXT: <array>
506// CHECK-NEXT: <dict>
507// CHECK-NEXT: <key>line</key><integer>101</integer>
508// CHECK-NEXT: <key>col</key><integer>7</integer>
509// CHECK-NEXT: <key>file</key><integer>0</integer>
510// CHECK-NEXT: </dict>
511// CHECK-NEXT: <dict>
512// CHECK-NEXT: <key>line</key><integer>101</integer>
513// CHECK-NEXT: <key>col</key><integer>7</integer>
514// CHECK-NEXT: <key>file</key><integer>0</integer>
515// CHECK-NEXT: </dict>
516// CHECK-NEXT: </array>
Gabor Horvathefec1632015-10-22 11:53:04 +0000517// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +0000518// CHECK-NEXT: <key>depth</key><integer>0</integer>
519// CHECK-NEXT: <key>extended_message</key>
520// CHECK-NEXT: <string>Conversion from value of type &apos;NSMutableArray&lt;NSString *&gt; *&apos; to incompatible type &apos;NSArray&lt;NSNumber *&gt; *&apos;</string>
521// CHECK-NEXT: <key>message</key>
522// CHECK-NEXT: <string>Conversion from value of type &apos;NSMutableArray&lt;NSString *&gt; *&apos; to incompatible type &apos;NSArray&lt;NSNumber *&gt; *&apos;</string>
523// CHECK-NEXT: </dict>
524// CHECK-NEXT: </array>
525// CHECK-NEXT: <key>description</key><string>Conversion from value of type &apos;NSMutableArray&lt;NSString *&gt; *&apos; to incompatible type &apos;NSArray&lt;NSNumber *&gt; *&apos;</string>
526// CHECK-NEXT: <key>category</key><string>Core Foundation/Objective-C</string>
527// CHECK-NEXT: <key>type</key><string>Generics</string>
528// CHECK-NEXT: <key>check_name</key><string>core.DynamicTypePropagation</string>
529// CHECK-NEXT: <!-- This hash is experimental and going to change! -->
530// CHECK-NEXT: <key>issue_hash_content_of_line_in_context</key><string>33d4584e2bf66b029ab9d152cc9cd8f7</string>
531// CHECK-NEXT: <key>issue_context_kind</key><string>function</string>
532// CHECK-NEXT: <key>issue_context</key><string>incompatibleTypesErased</string>
533// CHECK-NEXT: <key>issue_hash_function_offset</key><string>2</string>
534// CHECK-NEXT: <key>location</key>
535// CHECK-NEXT: <dict>
536// CHECK-NEXT: <key>line</key><integer>101</integer>
537// CHECK-NEXT: <key>col</key><integer>7</integer>
538// CHECK-NEXT: <key>file</key><integer>0</integer>
539// CHECK-NEXT: </dict>
540// CHECK-NEXT: </dict>
541// CHECK-NEXT: <dict>
542// CHECK-NEXT: <key>path</key>
543// CHECK-NEXT: <array>
544// CHECK-NEXT: <dict>
545// CHECK-NEXT: <key>kind</key><string>event</string>
546// CHECK-NEXT: <key>location</key>
547// CHECK-NEXT: <dict>
548// CHECK-NEXT: <key>line</key><integer>100</integer>
549// CHECK-NEXT: <key>col</key><integer>7</integer>
550// CHECK-NEXT: <key>file</key><integer>0</integer>
551// CHECK-NEXT: </dict>
552// CHECK-NEXT: <key>ranges</key>
Gabor Horvathefec1632015-10-22 11:53:04 +0000553// CHECK-NEXT: <array>
Devin Coughlinab139a92016-12-05 16:28:47 +0000554// CHECK-NEXT: <array>
555// CHECK-NEXT: <dict>
556// CHECK-NEXT: <key>line</key><integer>100</integer>
557// CHECK-NEXT: <key>col</key><integer>7</integer>
558// CHECK-NEXT: <key>file</key><integer>0</integer>
559// CHECK-NEXT: </dict>
560// CHECK-NEXT: <dict>
561// CHECK-NEXT: <key>line</key><integer>100</integer>
562// CHECK-NEXT: <key>col</key><integer>7</integer>
563// CHECK-NEXT: <key>file</key><integer>0</integer>
564// CHECK-NEXT: </dict>
565// CHECK-NEXT: </array>
Gabor Horvathefec1632015-10-22 11:53:04 +0000566// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +0000567// CHECK-NEXT: <key>depth</key><integer>0</integer>
568// CHECK-NEXT: <key>extended_message</key>
569// CHECK-NEXT: <string>Type &apos;NSMutableArray&lt;NSString *&gt; *&apos; is inferred from implicit cast (from &apos;NSMutableArray&lt;NSString *&gt; *&apos; to &apos;NSArray *&apos;)</string>
570// CHECK-NEXT: <key>message</key>
571// CHECK-NEXT: <string>Type &apos;NSMutableArray&lt;NSString *&gt; *&apos; is inferred from implicit cast (from &apos;NSMutableArray&lt;NSString *&gt; *&apos; to &apos;NSArray *&apos;)</string>
572// CHECK-NEXT: </dict>
Gabor Horvathefec1632015-10-22 11:53:04 +0000573// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +0000574// CHECK-NEXT: <key>kind</key><string>control</string>
575// CHECK-NEXT: <key>edges</key>
Gabor Horvathefec1632015-10-22 11:53:04 +0000576// CHECK-NEXT: <array>
577// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +0000578// CHECK-NEXT: <key>start</key>
579// CHECK-NEXT: <array>
580// CHECK-NEXT: <dict>
581// CHECK-NEXT: <key>line</key><integer>100</integer>
582// CHECK-NEXT: <key>col</key><integer>3</integer>
583// CHECK-NEXT: <key>file</key><integer>0</integer>
584// CHECK-NEXT: </dict>
585// CHECK-NEXT: <dict>
586// CHECK-NEXT: <key>line</key><integer>100</integer>
587// CHECK-NEXT: <key>col</key><integer>3</integer>
588// CHECK-NEXT: <key>file</key><integer>0</integer>
589// CHECK-NEXT: </dict>
590// CHECK-NEXT: </array>
591// CHECK-NEXT: <key>end</key>
592// CHECK-NEXT: <array>
593// CHECK-NEXT: <dict>
594// CHECK-NEXT: <key>line</key><integer>104</integer>
595// CHECK-NEXT: <key>col</key><integer>3</integer>
596// CHECK-NEXT: <key>file</key><integer>0</integer>
597// CHECK-NEXT: </dict>
598// CHECK-NEXT: <dict>
599// CHECK-NEXT: <key>line</key><integer>104</integer>
600// CHECK-NEXT: <key>col</key><integer>9</integer>
601// CHECK-NEXT: <key>file</key><integer>0</integer>
602// CHECK-NEXT: </dict>
603// CHECK-NEXT: </array>
Gabor Horvathefec1632015-10-22 11:53:04 +0000604// CHECK-NEXT: </dict>
605// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +0000606// CHECK-NEXT: </dict>
Gabor Horvathefec1632015-10-22 11:53:04 +0000607// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +0000608// CHECK-NEXT: <key>kind</key><string>control</string>
609// CHECK-NEXT: <key>edges</key>
Gabor Horvathefec1632015-10-22 11:53:04 +0000610// CHECK-NEXT: <array>
611// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +0000612// CHECK-NEXT: <key>start</key>
613// CHECK-NEXT: <array>
614// CHECK-NEXT: <dict>
615// CHECK-NEXT: <key>line</key><integer>104</integer>
616// CHECK-NEXT: <key>col</key><integer>3</integer>
617// CHECK-NEXT: <key>file</key><integer>0</integer>
618// CHECK-NEXT: </dict>
619// CHECK-NEXT: <dict>
620// CHECK-NEXT: <key>line</key><integer>104</integer>
621// CHECK-NEXT: <key>col</key><integer>9</integer>
622// CHECK-NEXT: <key>file</key><integer>0</integer>
623// CHECK-NEXT: </dict>
624// CHECK-NEXT: </array>
625// CHECK-NEXT: <key>end</key>
626// CHECK-NEXT: <array>
627// CHECK-NEXT: <dict>
628// CHECK-NEXT: <key>line</key><integer>104</integer>
629// CHECK-NEXT: <key>col</key><integer>11</integer>
630// CHECK-NEXT: <key>file</key><integer>0</integer>
631// CHECK-NEXT: </dict>
632// CHECK-NEXT: <dict>
633// CHECK-NEXT: <key>line</key><integer>104</integer>
634// CHECK-NEXT: <key>col</key><integer>11</integer>
635// CHECK-NEXT: <key>file</key><integer>0</integer>
636// CHECK-NEXT: </dict>
637// CHECK-NEXT: </array>
Gabor Horvathefec1632015-10-22 11:53:04 +0000638// CHECK-NEXT: </dict>
639// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +0000640// CHECK-NEXT: </dict>
641// CHECK-NEXT: <dict>
642// CHECK-NEXT: <key>kind</key><string>event</string>
643// CHECK-NEXT: <key>location</key>
644// CHECK-NEXT: <dict>
645// CHECK-NEXT: <key>line</key><integer>104</integer>
646// CHECK-NEXT: <key>col</key><integer>11</integer>
647// CHECK-NEXT: <key>file</key><integer>0</integer>
648// CHECK-NEXT: </dict>
649// CHECK-NEXT: <key>ranges</key>
Gabor Horvathefec1632015-10-22 11:53:04 +0000650// CHECK-NEXT: <array>
Devin Coughlinab139a92016-12-05 16:28:47 +0000651// CHECK-NEXT: <array>
652// CHECK-NEXT: <dict>
653// CHECK-NEXT: <key>line</key><integer>104</integer>
654// CHECK-NEXT: <key>col</key><integer>11</integer>
655// CHECK-NEXT: <key>file</key><integer>0</integer>
656// CHECK-NEXT: </dict>
657// CHECK-NEXT: <dict>
658// CHECK-NEXT: <key>line</key><integer>104</integer>
659// CHECK-NEXT: <key>col</key><integer>11</integer>
660// CHECK-NEXT: <key>file</key><integer>0</integer>
661// CHECK-NEXT: </dict>
662// CHECK-NEXT: </array>
Gabor Horvathefec1632015-10-22 11:53:04 +0000663// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +0000664// CHECK-NEXT: <key>depth</key><integer>0</integer>
665// CHECK-NEXT: <key>extended_message</key>
666// CHECK-NEXT: <string>Conversion from value of type &apos;NSMutableArray&lt;NSString *&gt; *&apos; to incompatible type &apos;NSArray&lt;NSNumber *&gt; *&apos;</string>
667// CHECK-NEXT: <key>message</key>
668// CHECK-NEXT: <string>Conversion from value of type &apos;NSMutableArray&lt;NSString *&gt; *&apos; to incompatible type &apos;NSArray&lt;NSNumber *&gt; *&apos;</string>
669// CHECK-NEXT: </dict>
670// CHECK-NEXT: </array>
671// CHECK-NEXT: <key>description</key><string>Conversion from value of type &apos;NSMutableArray&lt;NSString *&gt; *&apos; to incompatible type &apos;NSArray&lt;NSNumber *&gt; *&apos;</string>
672// CHECK-NEXT: <key>category</key><string>Core Foundation/Objective-C</string>
673// CHECK-NEXT: <key>type</key><string>Generics</string>
674// CHECK-NEXT: <key>check_name</key><string>core.DynamicTypePropagation</string>
675// CHECK-NEXT: <!-- This hash is experimental and going to change! -->
676// CHECK-NEXT: <key>issue_hash_content_of_line_in_context</key><string>6edc910aaa9dc1f2d823abc8cb75360f</string>
677// CHECK-NEXT: <key>issue_context_kind</key><string>function</string>
678// CHECK-NEXT: <key>issue_context</key><string>incompatibleTypesErased</string>
679// CHECK-NEXT: <key>issue_hash_function_offset</key><string>5</string>
680// CHECK-NEXT: <key>location</key>
681// CHECK-NEXT: <dict>
682// CHECK-NEXT: <key>line</key><integer>104</integer>
683// CHECK-NEXT: <key>col</key><integer>11</integer>
684// CHECK-NEXT: <key>file</key><integer>0</integer>
685// CHECK-NEXT: </dict>
686// CHECK-NEXT: </dict>
687// CHECK-NEXT: <dict>
688// CHECK-NEXT: <key>path</key>
689// CHECK-NEXT: <array>
Gabor Horvathefec1632015-10-22 11:53:04 +0000690// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +0000691// CHECK-NEXT: <key>kind</key><string>event</string>
692// CHECK-NEXT: <key>location</key>
693// CHECK-NEXT: <dict>
694// CHECK-NEXT: <key>line</key><integer>100</integer>
695// CHECK-NEXT: <key>col</key><integer>7</integer>
696// CHECK-NEXT: <key>file</key><integer>0</integer>
697// CHECK-NEXT: </dict>
698// CHECK-NEXT: <key>ranges</key>
699// CHECK-NEXT: <array>
700// CHECK-NEXT: <array>
701// CHECK-NEXT: <dict>
702// CHECK-NEXT: <key>line</key><integer>100</integer>
703// CHECK-NEXT: <key>col</key><integer>7</integer>
704// CHECK-NEXT: <key>file</key><integer>0</integer>
705// CHECK-NEXT: </dict>
706// CHECK-NEXT: <dict>
707// CHECK-NEXT: <key>line</key><integer>100</integer>
708// CHECK-NEXT: <key>col</key><integer>7</integer>
709// CHECK-NEXT: <key>file</key><integer>0</integer>
710// CHECK-NEXT: </dict>
711// CHECK-NEXT: </array>
712// CHECK-NEXT: </array>
713// CHECK-NEXT: <key>depth</key><integer>0</integer>
714// CHECK-NEXT: <key>extended_message</key>
715// CHECK-NEXT: <string>Type &apos;NSMutableArray&lt;NSString *&gt; *&apos; is inferred from implicit cast (from &apos;NSMutableArray&lt;NSString *&gt; *&apos; to &apos;NSArray *&apos;)</string>
716// CHECK-NEXT: <key>message</key>
717// CHECK-NEXT: <string>Type &apos;NSMutableArray&lt;NSString *&gt; *&apos; is inferred from implicit cast (from &apos;NSMutableArray&lt;NSString *&gt; *&apos; to &apos;NSArray *&apos;)</string>
Gabor Horvathefec1632015-10-22 11:53:04 +0000718// CHECK-NEXT: </dict>
Devin Coughlinab139a92016-12-05 16:28:47 +0000719// CHECK-NEXT: <dict>
720// CHECK-NEXT: <key>kind</key><string>control</string>
721// CHECK-NEXT: <key>edges</key>
Gabor Horvathefec1632015-10-22 11:53:04 +0000722// CHECK-NEXT: <array>
723// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +0000724// CHECK-NEXT: <key>start</key>
725// CHECK-NEXT: <array>
726// CHECK-NEXT: <dict>
727// CHECK-NEXT: <key>line</key><integer>100</integer>
728// CHECK-NEXT: <key>col</key><integer>3</integer>
729// CHECK-NEXT: <key>file</key><integer>0</integer>
730// CHECK-NEXT: </dict>
731// CHECK-NEXT: <dict>
732// CHECK-NEXT: <key>line</key><integer>100</integer>
733// CHECK-NEXT: <key>col</key><integer>3</integer>
734// CHECK-NEXT: <key>file</key><integer>0</integer>
735// CHECK-NEXT: </dict>
736// CHECK-NEXT: </array>
737// CHECK-NEXT: <key>end</key>
738// CHECK-NEXT: <array>
739// CHECK-NEXT: <dict>
740// CHECK-NEXT: <key>line</key><integer>107</integer>
741// CHECK-NEXT: <key>col</key><integer>3</integer>
742// CHECK-NEXT: <key>file</key><integer>0</integer>
743// CHECK-NEXT: </dict>
744// CHECK-NEXT: <dict>
745// CHECK-NEXT: <key>line</key><integer>107</integer>
746// CHECK-NEXT: <key>col</key><integer>3</integer>
747// CHECK-NEXT: <key>file</key><integer>0</integer>
748// CHECK-NEXT: </dict>
749// CHECK-NEXT: </array>
Gabor Horvathefec1632015-10-22 11:53:04 +0000750// CHECK-NEXT: </dict>
751// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +0000752// CHECK-NEXT: </dict>
Gabor Horvathefec1632015-10-22 11:53:04 +0000753// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +0000754// CHECK-NEXT: <key>kind</key><string>event</string>
755// CHECK-NEXT: <key>location</key>
756// CHECK-NEXT: <dict>
757// CHECK-NEXT: <key>line</key><integer>107</integer>
758// CHECK-NEXT: <key>col</key><integer>3</integer>
759// CHECK-NEXT: <key>file</key><integer>0</integer>
760// CHECK-NEXT: </dict>
761// CHECK-NEXT: <key>ranges</key>
762// CHECK-NEXT: <array>
763// CHECK-NEXT: <array>
764// CHECK-NEXT: <dict>
765// CHECK-NEXT: <key>line</key><integer>107</integer>
766// CHECK-NEXT: <key>col</key><integer>17</integer>
767// CHECK-NEXT: <key>file</key><integer>0</integer>
768// CHECK-NEXT: </dict>
769// CHECK-NEXT: <dict>
770// CHECK-NEXT: <key>line</key><integer>107</integer>
771// CHECK-NEXT: <key>col</key><integer>39</integer>
772// CHECK-NEXT: <key>file</key><integer>0</integer>
773// CHECK-NEXT: </dict>
774// CHECK-NEXT: </array>
775// CHECK-NEXT: </array>
776// CHECK-NEXT: <key>depth</key><integer>0</integer>
777// CHECK-NEXT: <key>extended_message</key>
778// CHECK-NEXT: <string>Conversion from value of type &apos;NSNumber *&apos; to incompatible type &apos;NSString *&apos;</string>
779// CHECK-NEXT: <key>message</key>
780// CHECK-NEXT: <string>Conversion from value of type &apos;NSNumber *&apos; to incompatible type &apos;NSString *&apos;</string>
Gabor Horvathefec1632015-10-22 11:53:04 +0000781// CHECK-NEXT: </dict>
Devin Coughlinab139a92016-12-05 16:28:47 +0000782// CHECK-NEXT: </array>
783// CHECK-NEXT: <key>description</key><string>Conversion from value of type &apos;NSNumber *&apos; to incompatible type &apos;NSString *&apos;</string>
784// CHECK-NEXT: <key>category</key><string>Core Foundation/Objective-C</string>
785// CHECK-NEXT: <key>type</key><string>Generics</string>
786// CHECK-NEXT: <key>check_name</key><string>core.DynamicTypePropagation</string>
787// CHECK-NEXT: <!-- This hash is experimental and going to change! -->
788// CHECK-NEXT: <key>issue_hash_content_of_line_in_context</key><string>73c71c858082f5d7a2258f707927da3c</string>
789// CHECK-NEXT: <key>issue_context_kind</key><string>function</string>
790// CHECK-NEXT: <key>issue_context</key><string>incompatibleTypesErased</string>
791// CHECK-NEXT: <key>issue_hash_function_offset</key><string>8</string>
792// CHECK-NEXT: <key>location</key>
793// CHECK-NEXT: <dict>
794// CHECK-NEXT: <key>line</key><integer>107</integer>
795// CHECK-NEXT: <key>col</key><integer>3</integer>
796// CHECK-NEXT: <key>file</key><integer>0</integer>
797// CHECK-NEXT: </dict>
798// CHECK-NEXT: </dict>
799// CHECK-NEXT: <dict>
800// CHECK-NEXT: <key>path</key>
801// CHECK-NEXT: <array>
802// CHECK-NEXT: <dict>
803// CHECK-NEXT: <key>kind</key><string>control</string>
804// CHECK-NEXT: <key>edges</key>
Gabor Horvathefec1632015-10-22 11:53:04 +0000805// CHECK-NEXT: <array>
806// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +0000807// CHECK-NEXT: <key>start</key>
808// CHECK-NEXT: <array>
809// CHECK-NEXT: <dict>
810// CHECK-NEXT: <key>line</key><integer>111</integer>
811// CHECK-NEXT: <key>col</key><integer>3</integer>
812// CHECK-NEXT: <key>file</key><integer>0</integer>
813// CHECK-NEXT: </dict>
814// CHECK-NEXT: <dict>
815// CHECK-NEXT: <key>line</key><integer>111</integer>
816// CHECK-NEXT: <key>col</key><integer>9</integer>
817// CHECK-NEXT: <key>file</key><integer>0</integer>
818// CHECK-NEXT: </dict>
819// CHECK-NEXT: </array>
820// CHECK-NEXT: <key>end</key>
821// CHECK-NEXT: <array>
822// CHECK-NEXT: <dict>
823// CHECK-NEXT: <key>line</key><integer>111</integer>
824// CHECK-NEXT: <key>col</key><integer>28</integer>
825// CHECK-NEXT: <key>file</key><integer>0</integer>
826// CHECK-NEXT: </dict>
827// CHECK-NEXT: <dict>
828// CHECK-NEXT: <key>line</key><integer>111</integer>
829// CHECK-NEXT: <key>col</key><integer>40</integer>
830// CHECK-NEXT: <key>file</key><integer>0</integer>
831// CHECK-NEXT: </dict>
832// CHECK-NEXT: </array>
Gabor Horvathefec1632015-10-22 11:53:04 +0000833// CHECK-NEXT: </dict>
834// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +0000835// CHECK-NEXT: </dict>
836// CHECK-NEXT: <dict>
837// CHECK-NEXT: <key>kind</key><string>event</string>
838// CHECK-NEXT: <key>location</key>
839// CHECK-NEXT: <dict>
840// CHECK-NEXT: <key>line</key><integer>111</integer>
841// CHECK-NEXT: <key>col</key><integer>28</integer>
842// CHECK-NEXT: <key>file</key><integer>0</integer>
843// CHECK-NEXT: </dict>
844// CHECK-NEXT: <key>ranges</key>
Gabor Horvathefec1632015-10-22 11:53:04 +0000845// CHECK-NEXT: <array>
Devin Coughlinab139a92016-12-05 16:28:47 +0000846// CHECK-NEXT: <array>
847// CHECK-NEXT: <dict>
848// CHECK-NEXT: <key>line</key><integer>111</integer>
849// CHECK-NEXT: <key>col</key><integer>28</integer>
850// CHECK-NEXT: <key>file</key><integer>0</integer>
851// CHECK-NEXT: </dict>
852// CHECK-NEXT: <dict>
853// CHECK-NEXT: <key>line</key><integer>111</integer>
854// CHECK-NEXT: <key>col</key><integer>42</integer>
855// CHECK-NEXT: <key>file</key><integer>0</integer>
856// CHECK-NEXT: </dict>
857// CHECK-NEXT: </array>
Gabor Horvathefec1632015-10-22 11:53:04 +0000858// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +0000859// CHECK-NEXT: <key>depth</key><integer>0</integer>
860// CHECK-NEXT: <key>extended_message</key>
861// CHECK-NEXT: <string>Calling &apos;getTypedStuff&apos;</string>
862// CHECK-NEXT: <key>message</key>
863// CHECK-NEXT: <string>Calling &apos;getTypedStuff&apos;</string>
864// CHECK-NEXT: </dict>
Gabor Horvathefec1632015-10-22 11:53:04 +0000865// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +0000866// CHECK-NEXT: <key>kind</key><string>event</string>
867// CHECK-NEXT: <key>location</key>
868// CHECK-NEXT: <dict>
869// CHECK-NEXT: <key>line</key><integer>86</integer>
870// CHECK-NEXT: <key>col</key><integer>1</integer>
871// CHECK-NEXT: <key>file</key><integer>0</integer>
872// CHECK-NEXT: </dict>
873// CHECK-NEXT: <key>depth</key><integer>1</integer>
874// CHECK-NEXT: <key>extended_message</key>
875// CHECK-NEXT: <string>Entered call from &apos;crossProceduralErasedTypes&apos;</string>
876// CHECK-NEXT: <key>message</key>
877// CHECK-NEXT: <string>Entered call from &apos;crossProceduralErasedTypes&apos;</string>
Gabor Horvathefec1632015-10-22 11:53:04 +0000878// CHECK-NEXT: </dict>
Devin Coughlinab139a92016-12-05 16:28:47 +0000879// CHECK-NEXT: <dict>
880// CHECK-NEXT: <key>kind</key><string>control</string>
881// CHECK-NEXT: <key>edges</key>
Gabor Horvathefec1632015-10-22 11:53:04 +0000882// CHECK-NEXT: <array>
883// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +0000884// CHECK-NEXT: <key>start</key>
885// CHECK-NEXT: <array>
886// CHECK-NEXT: <dict>
887// CHECK-NEXT: <key>line</key><integer>86</integer>
888// CHECK-NEXT: <key>col</key><integer>1</integer>
889// CHECK-NEXT: <key>file</key><integer>0</integer>
890// CHECK-NEXT: </dict>
891// CHECK-NEXT: <dict>
892// CHECK-NEXT: <key>line</key><integer>86</integer>
893// CHECK-NEXT: <key>col</key><integer>7</integer>
894// CHECK-NEXT: <key>file</key><integer>0</integer>
895// CHECK-NEXT: </dict>
896// CHECK-NEXT: </array>
897// CHECK-NEXT: <key>end</key>
898// CHECK-NEXT: <array>
899// CHECK-NEXT: <dict>
900// CHECK-NEXT: <key>line</key><integer>87</integer>
901// CHECK-NEXT: <key>col</key><integer>3</integer>
902// CHECK-NEXT: <key>file</key><integer>0</integer>
903// CHECK-NEXT: </dict>
904// CHECK-NEXT: <dict>
905// CHECK-NEXT: <key>line</key><integer>87</integer>
906// CHECK-NEXT: <key>col</key><integer>9</integer>
907// CHECK-NEXT: <key>file</key><integer>0</integer>
908// CHECK-NEXT: </dict>
909// CHECK-NEXT: </array>
Gabor Horvathefec1632015-10-22 11:53:04 +0000910// CHECK-NEXT: </dict>
911// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +0000912// CHECK-NEXT: </dict>
913// CHECK-NEXT: <dict>
914// CHECK-NEXT: <key>kind</key><string>event</string>
915// CHECK-NEXT: <key>location</key>
916// CHECK-NEXT: <dict>
917// CHECK-NEXT: <key>line</key><integer>87</integer>
918// CHECK-NEXT: <key>col</key><integer>28</integer>
919// CHECK-NEXT: <key>file</key><integer>0</integer>
920// CHECK-NEXT: </dict>
921// CHECK-NEXT: <key>ranges</key>
Gabor Horvathefec1632015-10-22 11:53:04 +0000922// CHECK-NEXT: <array>
Devin Coughlinab139a92016-12-05 16:28:47 +0000923// CHECK-NEXT: <array>
924// CHECK-NEXT: <dict>
925// CHECK-NEXT: <key>line</key><integer>87</integer>
926// CHECK-NEXT: <key>col</key><integer>28</integer>
927// CHECK-NEXT: <key>file</key><integer>0</integer>
928// CHECK-NEXT: </dict>
929// CHECK-NEXT: <dict>
930// CHECK-NEXT: <key>line</key><integer>87</integer>
931// CHECK-NEXT: <key>col</key><integer>37</integer>
932// CHECK-NEXT: <key>file</key><integer>0</integer>
933// CHECK-NEXT: </dict>
934// CHECK-NEXT: </array>
Gabor Horvathefec1632015-10-22 11:53:04 +0000935// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +0000936// CHECK-NEXT: <key>depth</key><integer>1</integer>
937// CHECK-NEXT: <key>extended_message</key>
938// CHECK-NEXT: <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>
939// CHECK-NEXT: <key>message</key>
940// CHECK-NEXT: <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>
941// CHECK-NEXT: </dict>
Gabor Horvathefec1632015-10-22 11:53:04 +0000942// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +0000943// CHECK-NEXT: <key>kind</key><string>control</string>
944// CHECK-NEXT: <key>edges</key>
Gabor Horvathefec1632015-10-22 11:53:04 +0000945// CHECK-NEXT: <array>
946// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +0000947// CHECK-NEXT: <key>start</key>
948// CHECK-NEXT: <array>
949// CHECK-NEXT: <dict>
950// CHECK-NEXT: <key>line</key><integer>87</integer>
951// CHECK-NEXT: <key>col</key><integer>3</integer>
952// CHECK-NEXT: <key>file</key><integer>0</integer>
953// CHECK-NEXT: </dict>
954// CHECK-NEXT: <dict>
955// CHECK-NEXT: <key>line</key><integer>87</integer>
956// CHECK-NEXT: <key>col</key><integer>9</integer>
957// CHECK-NEXT: <key>file</key><integer>0</integer>
958// CHECK-NEXT: </dict>
959// CHECK-NEXT: </array>
960// CHECK-NEXT: <key>end</key>
961// CHECK-NEXT: <array>
962// CHECK-NEXT: <dict>
963// CHECK-NEXT: <key>line</key><integer>88</integer>
964// CHECK-NEXT: <key>col</key><integer>3</integer>
965// CHECK-NEXT: <key>file</key><integer>0</integer>
966// CHECK-NEXT: </dict>
967// CHECK-NEXT: <dict>
968// CHECK-NEXT: <key>line</key><integer>88</integer>
969// CHECK-NEXT: <key>col</key><integer>8</integer>
970// CHECK-NEXT: <key>file</key><integer>0</integer>
971// CHECK-NEXT: </dict>
972// CHECK-NEXT: </array>
Gabor Horvathefec1632015-10-22 11:53:04 +0000973// CHECK-NEXT: </dict>
974// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +0000975// CHECK-NEXT: </dict>
Gabor Horvathefec1632015-10-22 11:53:04 +0000976// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +0000977// CHECK-NEXT: <key>kind</key><string>event</string>
978// CHECK-NEXT: <key>location</key>
979// CHECK-NEXT: <dict>
980// CHECK-NEXT: <key>line</key><integer>111</integer>
981// CHECK-NEXT: <key>col</key><integer>28</integer>
982// CHECK-NEXT: <key>file</key><integer>0</integer>
983// CHECK-NEXT: </dict>
984// CHECK-NEXT: <key>ranges</key>
985// CHECK-NEXT: <array>
986// CHECK-NEXT: <array>
987// CHECK-NEXT: <dict>
988// CHECK-NEXT: <key>line</key><integer>111</integer>
989// CHECK-NEXT: <key>col</key><integer>28</integer>
990// CHECK-NEXT: <key>file</key><integer>0</integer>
991// CHECK-NEXT: </dict>
992// CHECK-NEXT: <dict>
993// CHECK-NEXT: <key>line</key><integer>111</integer>
994// CHECK-NEXT: <key>col</key><integer>42</integer>
995// CHECK-NEXT: <key>file</key><integer>0</integer>
996// CHECK-NEXT: </dict>
997// CHECK-NEXT: </array>
998// CHECK-NEXT: </array>
999// CHECK-NEXT: <key>depth</key><integer>0</integer>
1000// CHECK-NEXT: <key>extended_message</key>
1001// CHECK-NEXT: <string>Returning from &apos;getTypedStuff&apos;</string>
1002// CHECK-NEXT: <key>message</key>
1003// CHECK-NEXT: <string>Returning from &apos;getTypedStuff&apos;</string>
Gabor Horvathefec1632015-10-22 11:53:04 +00001004// CHECK-NEXT: </dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00001005// CHECK-NEXT: <dict>
1006// CHECK-NEXT: <key>kind</key><string>event</string>
1007// CHECK-NEXT: <key>location</key>
1008// CHECK-NEXT: <dict>
1009// CHECK-NEXT: <key>line</key><integer>111</integer>
1010// CHECK-NEXT: <key>col</key><integer>28</integer>
1011// CHECK-NEXT: <key>file</key><integer>0</integer>
1012// CHECK-NEXT: </dict>
1013// CHECK-NEXT: <key>ranges</key>
Gabor Horvathefec1632015-10-22 11:53:04 +00001014// CHECK-NEXT: <array>
Devin Coughlinab139a92016-12-05 16:28:47 +00001015// CHECK-NEXT: <array>
1016// CHECK-NEXT: <dict>
1017// CHECK-NEXT: <key>line</key><integer>111</integer>
1018// CHECK-NEXT: <key>col</key><integer>28</integer>
1019// CHECK-NEXT: <key>file</key><integer>0</integer>
1020// CHECK-NEXT: </dict>
1021// CHECK-NEXT: <dict>
1022// CHECK-NEXT: <key>line</key><integer>111</integer>
1023// CHECK-NEXT: <key>col</key><integer>42</integer>
1024// CHECK-NEXT: <key>file</key><integer>0</integer>
1025// CHECK-NEXT: </dict>
1026// CHECK-NEXT: </array>
Gabor Horvathefec1632015-10-22 11:53:04 +00001027// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +00001028// CHECK-NEXT: <key>depth</key><integer>0</integer>
1029// CHECK-NEXT: <key>extended_message</key>
1030// CHECK-NEXT: <string>Conversion from value of type &apos;NSArray&lt;NSNumber *&gt; *&apos; to incompatible type &apos;NSArray&lt;NSString *&gt; *&apos;</string>
1031// CHECK-NEXT: <key>message</key>
1032// CHECK-NEXT: <string>Conversion from value of type &apos;NSArray&lt;NSNumber *&gt; *&apos; to incompatible type &apos;NSArray&lt;NSString *&gt; *&apos;</string>
1033// CHECK-NEXT: </dict>
1034// CHECK-NEXT: </array>
1035// CHECK-NEXT: <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>
1036// CHECK-NEXT: <key>category</key><string>Core Foundation/Objective-C</string>
1037// CHECK-NEXT: <key>type</key><string>Generics</string>
1038// CHECK-NEXT: <key>check_name</key><string>core.DynamicTypePropagation</string>
1039// CHECK-NEXT: <!-- This hash is experimental and going to change! -->
1040// CHECK-NEXT: <key>issue_hash_content_of_line_in_context</key><string>82c378fdcfcc5c0318d2f3ca46420ec1</string>
1041// CHECK-NEXT: <key>issue_context_kind</key><string>function</string>
1042// CHECK-NEXT: <key>issue_context</key><string>crossProceduralErasedTypes</string>
1043// CHECK-NEXT: <key>issue_hash_function_offset</key><string>1</string>
1044// CHECK-NEXT: <key>location</key>
1045// CHECK-NEXT: <dict>
1046// CHECK-NEXT: <key>line</key><integer>111</integer>
1047// CHECK-NEXT: <key>col</key><integer>28</integer>
1048// CHECK-NEXT: <key>file</key><integer>0</integer>
1049// CHECK-NEXT: </dict>
1050// CHECK-NEXT: </dict>
1051// CHECK-NEXT: <dict>
1052// CHECK-NEXT: <key>path</key>
1053// CHECK-NEXT: <array>
Gabor Horvathefec1632015-10-22 11:53:04 +00001054// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00001055// CHECK-NEXT: <key>kind</key><string>event</string>
1056// CHECK-NEXT: <key>location</key>
1057// CHECK-NEXT: <dict>
1058// CHECK-NEXT: <key>line</key><integer>116</integer>
1059// CHECK-NEXT: <key>col</key><integer>7</integer>
1060// CHECK-NEXT: <key>file</key><integer>0</integer>
1061// CHECK-NEXT: </dict>
1062// CHECK-NEXT: <key>ranges</key>
Gabor Horvathefec1632015-10-22 11:53:04 +00001063// CHECK-NEXT: <array>
Devin Coughlinab139a92016-12-05 16:28:47 +00001064// CHECK-NEXT: <array>
1065// CHECK-NEXT: <dict>
1066// CHECK-NEXT: <key>line</key><integer>116</integer>
1067// CHECK-NEXT: <key>col</key><integer>7</integer>
1068// CHECK-NEXT: <key>file</key><integer>0</integer>
1069// CHECK-NEXT: </dict>
1070// CHECK-NEXT: <dict>
1071// CHECK-NEXT: <key>line</key><integer>116</integer>
1072// CHECK-NEXT: <key>col</key><integer>7</integer>
1073// CHECK-NEXT: <key>file</key><integer>0</integer>
1074// CHECK-NEXT: </dict>
1075// CHECK-NEXT: </array>
Gabor Horvathefec1632015-10-22 11:53:04 +00001076// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +00001077// CHECK-NEXT: <key>depth</key><integer>0</integer>
1078// CHECK-NEXT: <key>extended_message</key>
1079// CHECK-NEXT: <string>Type &apos;NSMutableArray&lt;NSString *&gt; *&apos; is inferred from implicit cast (from &apos;NSMutableArray *&apos; to &apos;NSMutableArray&lt;NSString *&gt; *&apos;)</string>
1080// CHECK-NEXT: <key>message</key>
1081// CHECK-NEXT: <string>Type &apos;NSMutableArray&lt;NSString *&gt; *&apos; is inferred from implicit cast (from &apos;NSMutableArray *&apos; to &apos;NSMutableArray&lt;NSString *&gt; *&apos;)</string>
1082// CHECK-NEXT: </dict>
Gabor Horvathefec1632015-10-22 11:53:04 +00001083// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00001084// CHECK-NEXT: <key>kind</key><string>control</string>
1085// CHECK-NEXT: <key>edges</key>
Gabor Horvathefec1632015-10-22 11:53:04 +00001086// CHECK-NEXT: <array>
1087// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00001088// CHECK-NEXT: <key>start</key>
1089// CHECK-NEXT: <array>
1090// CHECK-NEXT: <dict>
1091// CHECK-NEXT: <key>line</key><integer>116</integer>
1092// CHECK-NEXT: <key>col</key><integer>3</integer>
1093// CHECK-NEXT: <key>file</key><integer>0</integer>
1094// CHECK-NEXT: </dict>
1095// CHECK-NEXT: <dict>
1096// CHECK-NEXT: <key>line</key><integer>116</integer>
1097// CHECK-NEXT: <key>col</key><integer>3</integer>
1098// CHECK-NEXT: <key>file</key><integer>0</integer>
1099// CHECK-NEXT: </dict>
1100// CHECK-NEXT: </array>
1101// CHECK-NEXT: <key>end</key>
1102// CHECK-NEXT: <array>
1103// CHECK-NEXT: <dict>
1104// CHECK-NEXT: <key>line</key><integer>119</integer>
1105// CHECK-NEXT: <key>col</key><integer>3</integer>
1106// CHECK-NEXT: <key>file</key><integer>0</integer>
1107// CHECK-NEXT: </dict>
1108// CHECK-NEXT: <dict>
1109// CHECK-NEXT: <key>line</key><integer>119</integer>
1110// CHECK-NEXT: <key>col</key><integer>9</integer>
1111// CHECK-NEXT: <key>file</key><integer>0</integer>
1112// CHECK-NEXT: </dict>
1113// CHECK-NEXT: </array>
Gabor Horvathefec1632015-10-22 11:53:04 +00001114// CHECK-NEXT: </dict>
1115// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +00001116// CHECK-NEXT: </dict>
Gabor Horvathefec1632015-10-22 11:53:04 +00001117// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00001118// CHECK-NEXT: <key>kind</key><string>control</string>
1119// CHECK-NEXT: <key>edges</key>
Gabor Horvathefec1632015-10-22 11:53:04 +00001120// CHECK-NEXT: <array>
1121// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00001122// CHECK-NEXT: <key>start</key>
1123// CHECK-NEXT: <array>
1124// CHECK-NEXT: <dict>
1125// CHECK-NEXT: <key>line</key><integer>119</integer>
1126// CHECK-NEXT: <key>col</key><integer>3</integer>
1127// CHECK-NEXT: <key>file</key><integer>0</integer>
1128// CHECK-NEXT: </dict>
1129// CHECK-NEXT: <dict>
1130// CHECK-NEXT: <key>line</key><integer>119</integer>
1131// CHECK-NEXT: <key>col</key><integer>9</integer>
1132// CHECK-NEXT: <key>file</key><integer>0</integer>
1133// CHECK-NEXT: </dict>
1134// CHECK-NEXT: </array>
1135// CHECK-NEXT: <key>end</key>
1136// CHECK-NEXT: <array>
1137// CHECK-NEXT: <dict>
1138// CHECK-NEXT: <key>line</key><integer>119</integer>
1139// CHECK-NEXT: <key>col</key><integer>11</integer>
1140// CHECK-NEXT: <key>file</key><integer>0</integer>
1141// CHECK-NEXT: </dict>
1142// CHECK-NEXT: <dict>
1143// CHECK-NEXT: <key>line</key><integer>119</integer>
1144// CHECK-NEXT: <key>col</key><integer>11</integer>
1145// CHECK-NEXT: <key>file</key><integer>0</integer>
1146// CHECK-NEXT: </dict>
1147// CHECK-NEXT: </array>
Gabor Horvathefec1632015-10-22 11:53:04 +00001148// CHECK-NEXT: </dict>
1149// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +00001150// CHECK-NEXT: </dict>
Gabor Horvathefec1632015-10-22 11:53:04 +00001151// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00001152// CHECK-NEXT: <key>kind</key><string>event</string>
1153// CHECK-NEXT: <key>location</key>
1154// CHECK-NEXT: <dict>
1155// CHECK-NEXT: <key>line</key><integer>119</integer>
1156// CHECK-NEXT: <key>col</key><integer>11</integer>
1157// CHECK-NEXT: <key>file</key><integer>0</integer>
1158// CHECK-NEXT: </dict>
1159// CHECK-NEXT: <key>ranges</key>
1160// CHECK-NEXT: <array>
1161// CHECK-NEXT: <array>
1162// CHECK-NEXT: <dict>
1163// CHECK-NEXT: <key>line</key><integer>119</integer>
1164// CHECK-NEXT: <key>col</key><integer>11</integer>
1165// CHECK-NEXT: <key>file</key><integer>0</integer>
1166// CHECK-NEXT: </dict>
1167// CHECK-NEXT: <dict>
1168// CHECK-NEXT: <key>line</key><integer>119</integer>
1169// CHECK-NEXT: <key>col</key><integer>11</integer>
1170// CHECK-NEXT: <key>file</key><integer>0</integer>
1171// CHECK-NEXT: </dict>
1172// CHECK-NEXT: </array>
1173// CHECK-NEXT: </array>
1174// CHECK-NEXT: <key>depth</key><integer>0</integer>
1175// CHECK-NEXT: <key>extended_message</key>
1176// CHECK-NEXT: <string>Conversion from value of type &apos;NSMutableArray&lt;NSString *&gt; *&apos; to incompatible type &apos;NSArray&lt;NSNumber *&gt; *&apos;</string>
1177// CHECK-NEXT: <key>message</key>
1178// CHECK-NEXT: <string>Conversion from value of type &apos;NSMutableArray&lt;NSString *&gt; *&apos; to incompatible type &apos;NSArray&lt;NSNumber *&gt; *&apos;</string>
Gabor Horvathefec1632015-10-22 11:53:04 +00001179// CHECK-NEXT: </dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00001180// CHECK-NEXT: </array>
1181// CHECK-NEXT: <key>description</key><string>Conversion from value of type &apos;NSMutableArray&lt;NSString *&gt; *&apos; to incompatible type &apos;NSArray&lt;NSNumber *&gt; *&apos;</string>
1182// CHECK-NEXT: <key>category</key><string>Core Foundation/Objective-C</string>
1183// CHECK-NEXT: <key>type</key><string>Generics</string>
1184// CHECK-NEXT: <key>check_name</key><string>core.DynamicTypePropagation</string>
1185// CHECK-NEXT: <!-- This hash is experimental and going to change! -->
1186// CHECK-NEXT: <key>issue_hash_content_of_line_in_context</key><string>234e3c299ee75a4dd4563e0ea88b9ed9</string>
1187// CHECK-NEXT: <key>issue_context_kind</key><string>function</string>
1188// CHECK-NEXT: <key>issue_context</key><string>incompatibleTypesErasedReverseConversion</string>
1189// CHECK-NEXT: <key>issue_hash_function_offset</key><string>4</string>
1190// CHECK-NEXT: <key>location</key>
1191// CHECK-NEXT: <dict>
1192// CHECK-NEXT: <key>line</key><integer>119</integer>
1193// CHECK-NEXT: <key>col</key><integer>11</integer>
1194// CHECK-NEXT: <key>file</key><integer>0</integer>
1195// CHECK-NEXT: </dict>
1196// CHECK-NEXT: </dict>
1197// CHECK-NEXT: <dict>
1198// CHECK-NEXT: <key>path</key>
1199// CHECK-NEXT: <array>
1200// CHECK-NEXT: <dict>
1201// CHECK-NEXT: <key>kind</key><string>event</string>
1202// CHECK-NEXT: <key>location</key>
1203// CHECK-NEXT: <dict>
1204// CHECK-NEXT: <key>line</key><integer>116</integer>
1205// CHECK-NEXT: <key>col</key><integer>7</integer>
1206// CHECK-NEXT: <key>file</key><integer>0</integer>
1207// CHECK-NEXT: </dict>
1208// CHECK-NEXT: <key>ranges</key>
Gabor Horvathefec1632015-10-22 11:53:04 +00001209// CHECK-NEXT: <array>
Devin Coughlinab139a92016-12-05 16:28:47 +00001210// CHECK-NEXT: <array>
1211// CHECK-NEXT: <dict>
1212// CHECK-NEXT: <key>line</key><integer>116</integer>
1213// CHECK-NEXT: <key>col</key><integer>7</integer>
1214// CHECK-NEXT: <key>file</key><integer>0</integer>
1215// CHECK-NEXT: </dict>
1216// CHECK-NEXT: <dict>
1217// CHECK-NEXT: <key>line</key><integer>116</integer>
1218// CHECK-NEXT: <key>col</key><integer>7</integer>
1219// CHECK-NEXT: <key>file</key><integer>0</integer>
1220// CHECK-NEXT: </dict>
1221// CHECK-NEXT: </array>
Gabor Horvathefec1632015-10-22 11:53:04 +00001222// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +00001223// CHECK-NEXT: <key>depth</key><integer>0</integer>
1224// CHECK-NEXT: <key>extended_message</key>
1225// CHECK-NEXT: <string>Type &apos;NSMutableArray&lt;NSString *&gt; *&apos; is inferred from implicit cast (from &apos;NSMutableArray *&apos; to &apos;NSMutableArray&lt;NSString *&gt; *&apos;)</string>
1226// CHECK-NEXT: <key>message</key>
1227// CHECK-NEXT: <string>Type &apos;NSMutableArray&lt;NSString *&gt; *&apos; is inferred from implicit cast (from &apos;NSMutableArray *&apos; to &apos;NSMutableArray&lt;NSString *&gt; *&apos;)</string>
1228// CHECK-NEXT: </dict>
Gabor Horvathefec1632015-10-22 11:53:04 +00001229// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00001230// CHECK-NEXT: <key>kind</key><string>control</string>
1231// CHECK-NEXT: <key>edges</key>
Gabor Horvathefec1632015-10-22 11:53:04 +00001232// CHECK-NEXT: <array>
1233// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00001234// CHECK-NEXT: <key>start</key>
1235// CHECK-NEXT: <array>
1236// CHECK-NEXT: <dict>
1237// CHECK-NEXT: <key>line</key><integer>116</integer>
1238// CHECK-NEXT: <key>col</key><integer>3</integer>
1239// CHECK-NEXT: <key>file</key><integer>0</integer>
1240// CHECK-NEXT: </dict>
1241// CHECK-NEXT: <dict>
1242// CHECK-NEXT: <key>line</key><integer>116</integer>
1243// CHECK-NEXT: <key>col</key><integer>3</integer>
1244// CHECK-NEXT: <key>file</key><integer>0</integer>
1245// CHECK-NEXT: </dict>
1246// CHECK-NEXT: </array>
1247// CHECK-NEXT: <key>end</key>
1248// CHECK-NEXT: <array>
1249// CHECK-NEXT: <dict>
1250// CHECK-NEXT: <key>line</key><integer>121</integer>
1251// CHECK-NEXT: <key>col</key><integer>3</integer>
1252// CHECK-NEXT: <key>file</key><integer>0</integer>
1253// CHECK-NEXT: </dict>
1254// CHECK-NEXT: <dict>
1255// CHECK-NEXT: <key>line</key><integer>121</integer>
1256// CHECK-NEXT: <key>col</key><integer>3</integer>
1257// CHECK-NEXT: <key>file</key><integer>0</integer>
1258// CHECK-NEXT: </dict>
1259// CHECK-NEXT: </array>
Gabor Horvathefec1632015-10-22 11:53:04 +00001260// CHECK-NEXT: </dict>
1261// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +00001262// CHECK-NEXT: </dict>
Gabor Horvathefec1632015-10-22 11:53:04 +00001263// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00001264// CHECK-NEXT: <key>kind</key><string>event</string>
1265// CHECK-NEXT: <key>location</key>
1266// CHECK-NEXT: <dict>
1267// CHECK-NEXT: <key>line</key><integer>121</integer>
1268// CHECK-NEXT: <key>col</key><integer>3</integer>
1269// CHECK-NEXT: <key>file</key><integer>0</integer>
1270// CHECK-NEXT: </dict>
1271// CHECK-NEXT: <key>ranges</key>
Gabor Horvathefec1632015-10-22 11:53:04 +00001272// CHECK-NEXT: <array>
Devin Coughlinab139a92016-12-05 16:28:47 +00001273// CHECK-NEXT: <array>
1274// CHECK-NEXT: <dict>
1275// CHECK-NEXT: <key>line</key><integer>121</integer>
1276// CHECK-NEXT: <key>col</key><integer>17</integer>
1277// CHECK-NEXT: <key>file</key><integer>0</integer>
1278// CHECK-NEXT: </dict>
1279// CHECK-NEXT: <dict>
1280// CHECK-NEXT: <key>line</key><integer>121</integer>
1281// CHECK-NEXT: <key>col</key><integer>39</integer>
1282// CHECK-NEXT: <key>file</key><integer>0</integer>
1283// CHECK-NEXT: </dict>
1284// CHECK-NEXT: </array>
Gabor Horvathefec1632015-10-22 11:53:04 +00001285// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +00001286// CHECK-NEXT: <key>depth</key><integer>0</integer>
1287// CHECK-NEXT: <key>extended_message</key>
1288// CHECK-NEXT: <string>Conversion from value of type &apos;NSNumber *&apos; to incompatible type &apos;NSString *&apos;</string>
1289// CHECK-NEXT: <key>message</key>
1290// CHECK-NEXT: <string>Conversion from value of type &apos;NSNumber *&apos; to incompatible type &apos;NSString *&apos;</string>
1291// CHECK-NEXT: </dict>
1292// CHECK-NEXT: </array>
1293// CHECK-NEXT: <key>description</key><string>Conversion from value of type &apos;NSNumber *&apos; to incompatible type &apos;NSString *&apos;</string>
1294// CHECK-NEXT: <key>category</key><string>Core Foundation/Objective-C</string>
1295// CHECK-NEXT: <key>type</key><string>Generics</string>
1296// CHECK-NEXT: <key>check_name</key><string>core.DynamicTypePropagation</string>
1297// CHECK-NEXT: <!-- This hash is experimental and going to change! -->
1298// CHECK-NEXT: <key>issue_hash_content_of_line_in_context</key><string>e875afc5479fec33a693ce2b550a9573</string>
1299// CHECK-NEXT: <key>issue_context_kind</key><string>function</string>
1300// CHECK-NEXT: <key>issue_context</key><string>incompatibleTypesErasedReverseConversion</string>
1301// CHECK-NEXT: <key>issue_hash_function_offset</key><string>6</string>
1302// CHECK-NEXT: <key>location</key>
1303// CHECK-NEXT: <dict>
1304// CHECK-NEXT: <key>line</key><integer>121</integer>
1305// CHECK-NEXT: <key>col</key><integer>3</integer>
1306// CHECK-NEXT: <key>file</key><integer>0</integer>
1307// CHECK-NEXT: </dict>
1308// CHECK-NEXT: </dict>
1309// CHECK-NEXT: <dict>
1310// CHECK-NEXT: <key>path</key>
1311// CHECK-NEXT: <array>
1312// CHECK-NEXT: <dict>
1313// CHECK-NEXT: <key>kind</key><string>event</string>
1314// CHECK-NEXT: <key>location</key>
1315// CHECK-NEXT: <dict>
1316// CHECK-NEXT: <key>line</key><integer>125</integer>
1317// CHECK-NEXT: <key>col</key><integer>7</integer>
1318// CHECK-NEXT: <key>file</key><integer>0</integer>
1319// CHECK-NEXT: </dict>
1320// CHECK-NEXT: <key>ranges</key>
Gabor Horvathefec1632015-10-22 11:53:04 +00001321// CHECK-NEXT: <array>
Devin Coughlinab139a92016-12-05 16:28:47 +00001322// CHECK-NEXT: <array>
1323// CHECK-NEXT: <dict>
1324// CHECK-NEXT: <key>line</key><integer>125</integer>
1325// CHECK-NEXT: <key>col</key><integer>7</integer>
1326// CHECK-NEXT: <key>file</key><integer>0</integer>
1327// CHECK-NEXT: </dict>
1328// CHECK-NEXT: <dict>
1329// CHECK-NEXT: <key>line</key><integer>125</integer>
1330// CHECK-NEXT: <key>col</key><integer>7</integer>
1331// CHECK-NEXT: <key>file</key><integer>0</integer>
1332// CHECK-NEXT: </dict>
1333// CHECK-NEXT: </array>
Gabor Horvathefec1632015-10-22 11:53:04 +00001334// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +00001335// CHECK-NEXT: <key>depth</key><integer>0</integer>
1336// CHECK-NEXT: <key>extended_message</key>
1337// CHECK-NEXT: <string>Type &apos;NSMutableArray&lt;NSString *&gt; *&apos; is inferred from implicit cast (from &apos;id&apos; to &apos;NSMutableArray&lt;NSString *&gt; *&apos;)</string>
1338// CHECK-NEXT: <key>message</key>
1339// CHECK-NEXT: <string>Type &apos;NSMutableArray&lt;NSString *&gt; *&apos; is inferred from implicit cast (from &apos;id&apos; to &apos;NSMutableArray&lt;NSString *&gt; *&apos;)</string>
1340// CHECK-NEXT: </dict>
Gabor Horvathefec1632015-10-22 11:53:04 +00001341// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00001342// CHECK-NEXT: <key>kind</key><string>control</string>
1343// CHECK-NEXT: <key>edges</key>
Gabor Horvathefec1632015-10-22 11:53:04 +00001344// CHECK-NEXT: <array>
1345// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00001346// CHECK-NEXT: <key>start</key>
1347// CHECK-NEXT: <array>
1348// CHECK-NEXT: <dict>
1349// CHECK-NEXT: <key>line</key><integer>125</integer>
1350// CHECK-NEXT: <key>col</key><integer>3</integer>
1351// CHECK-NEXT: <key>file</key><integer>0</integer>
1352// CHECK-NEXT: </dict>
1353// CHECK-NEXT: <dict>
1354// CHECK-NEXT: <key>line</key><integer>125</integer>
1355// CHECK-NEXT: <key>col</key><integer>3</integer>
1356// CHECK-NEXT: <key>file</key><integer>0</integer>
1357// CHECK-NEXT: </dict>
1358// CHECK-NEXT: </array>
1359// CHECK-NEXT: <key>end</key>
1360// CHECK-NEXT: <array>
1361// CHECK-NEXT: <dict>
1362// CHECK-NEXT: <key>line</key><integer>128</integer>
1363// CHECK-NEXT: <key>col</key><integer>3</integer>
1364// CHECK-NEXT: <key>file</key><integer>0</integer>
1365// CHECK-NEXT: </dict>
1366// CHECK-NEXT: <dict>
1367// CHECK-NEXT: <key>line</key><integer>128</integer>
1368// CHECK-NEXT: <key>col</key><integer>9</integer>
1369// CHECK-NEXT: <key>file</key><integer>0</integer>
1370// CHECK-NEXT: </dict>
1371// CHECK-NEXT: </array>
Gabor Horvathefec1632015-10-22 11:53:04 +00001372// CHECK-NEXT: </dict>
1373// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +00001374// CHECK-NEXT: </dict>
Gabor Horvathefec1632015-10-22 11:53:04 +00001375// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00001376// CHECK-NEXT: <key>kind</key><string>control</string>
1377// CHECK-NEXT: <key>edges</key>
Gabor Horvathefec1632015-10-22 11:53:04 +00001378// CHECK-NEXT: <array>
1379// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00001380// CHECK-NEXT: <key>start</key>
1381// CHECK-NEXT: <array>
1382// CHECK-NEXT: <dict>
1383// CHECK-NEXT: <key>line</key><integer>128</integer>
1384// CHECK-NEXT: <key>col</key><integer>3</integer>
1385// CHECK-NEXT: <key>file</key><integer>0</integer>
1386// CHECK-NEXT: </dict>
1387// CHECK-NEXT: <dict>
1388// CHECK-NEXT: <key>line</key><integer>128</integer>
1389// CHECK-NEXT: <key>col</key><integer>9</integer>
1390// CHECK-NEXT: <key>file</key><integer>0</integer>
1391// CHECK-NEXT: </dict>
1392// CHECK-NEXT: </array>
1393// CHECK-NEXT: <key>end</key>
1394// CHECK-NEXT: <array>
1395// CHECK-NEXT: <dict>
1396// CHECK-NEXT: <key>line</key><integer>128</integer>
1397// CHECK-NEXT: <key>col</key><integer>11</integer>
1398// CHECK-NEXT: <key>file</key><integer>0</integer>
1399// CHECK-NEXT: </dict>
1400// CHECK-NEXT: <dict>
1401// CHECK-NEXT: <key>line</key><integer>128</integer>
1402// CHECK-NEXT: <key>col</key><integer>11</integer>
1403// CHECK-NEXT: <key>file</key><integer>0</integer>
1404// CHECK-NEXT: </dict>
1405// CHECK-NEXT: </array>
Gabor Horvathefec1632015-10-22 11:53:04 +00001406// CHECK-NEXT: </dict>
1407// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +00001408// CHECK-NEXT: </dict>
1409// CHECK-NEXT: <dict>
1410// CHECK-NEXT: <key>kind</key><string>event</string>
1411// CHECK-NEXT: <key>location</key>
1412// CHECK-NEXT: <dict>
1413// CHECK-NEXT: <key>line</key><integer>128</integer>
1414// CHECK-NEXT: <key>col</key><integer>11</integer>
1415// CHECK-NEXT: <key>file</key><integer>0</integer>
1416// CHECK-NEXT: </dict>
1417// CHECK-NEXT: <key>ranges</key>
Gabor Horvathefec1632015-10-22 11:53:04 +00001418// CHECK-NEXT: <array>
Devin Coughlinab139a92016-12-05 16:28:47 +00001419// CHECK-NEXT: <array>
1420// CHECK-NEXT: <dict>
1421// CHECK-NEXT: <key>line</key><integer>128</integer>
1422// CHECK-NEXT: <key>col</key><integer>11</integer>
1423// CHECK-NEXT: <key>file</key><integer>0</integer>
1424// CHECK-NEXT: </dict>
1425// CHECK-NEXT: <dict>
1426// CHECK-NEXT: <key>line</key><integer>128</integer>
1427// CHECK-NEXT: <key>col</key><integer>11</integer>
1428// CHECK-NEXT: <key>file</key><integer>0</integer>
1429// CHECK-NEXT: </dict>
1430// CHECK-NEXT: </array>
Gabor Horvathefec1632015-10-22 11:53:04 +00001431// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +00001432// CHECK-NEXT: <key>depth</key><integer>0</integer>
1433// CHECK-NEXT: <key>extended_message</key>
1434// CHECK-NEXT: <string>Conversion from value of type &apos;NSMutableArray&lt;NSString *&gt; *&apos; to incompatible type &apos;NSArray&lt;NSNumber *&gt; *&apos;</string>
1435// CHECK-NEXT: <key>message</key>
1436// CHECK-NEXT: <string>Conversion from value of type &apos;NSMutableArray&lt;NSString *&gt; *&apos; to incompatible type &apos;NSArray&lt;NSNumber *&gt; *&apos;</string>
1437// CHECK-NEXT: </dict>
1438// CHECK-NEXT: </array>
1439// CHECK-NEXT: <key>description</key><string>Conversion from value of type &apos;NSMutableArray&lt;NSString *&gt; *&apos; to incompatible type &apos;NSArray&lt;NSNumber *&gt; *&apos;</string>
1440// CHECK-NEXT: <key>category</key><string>Core Foundation/Objective-C</string>
1441// CHECK-NEXT: <key>type</key><string>Generics</string>
1442// CHECK-NEXT: <key>check_name</key><string>core.DynamicTypePropagation</string>
1443// CHECK-NEXT: <!-- This hash is experimental and going to change! -->
1444// CHECK-NEXT: <key>issue_hash_content_of_line_in_context</key><string>d7fa9fa89fe860ed8f5d22631233a5fa</string>
1445// CHECK-NEXT: <key>issue_context_kind</key><string>function</string>
1446// CHECK-NEXT: <key>issue_context</key><string>idErasedIncompatibleTypesReverseConversion</string>
1447// CHECK-NEXT: <key>issue_hash_function_offset</key><string>4</string>
1448// CHECK-NEXT: <key>location</key>
1449// CHECK-NEXT: <dict>
1450// CHECK-NEXT: <key>line</key><integer>128</integer>
1451// CHECK-NEXT: <key>col</key><integer>11</integer>
1452// CHECK-NEXT: <key>file</key><integer>0</integer>
1453// CHECK-NEXT: </dict>
1454// CHECK-NEXT: </dict>
1455// CHECK-NEXT: <dict>
1456// CHECK-NEXT: <key>path</key>
1457// CHECK-NEXT: <array>
Gabor Horvathefec1632015-10-22 11:53:04 +00001458// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00001459// CHECK-NEXT: <key>kind</key><string>event</string>
1460// CHECK-NEXT: <key>location</key>
1461// CHECK-NEXT: <dict>
1462// CHECK-NEXT: <key>line</key><integer>125</integer>
1463// CHECK-NEXT: <key>col</key><integer>7</integer>
1464// CHECK-NEXT: <key>file</key><integer>0</integer>
1465// CHECK-NEXT: </dict>
1466// CHECK-NEXT: <key>ranges</key>
1467// CHECK-NEXT: <array>
1468// CHECK-NEXT: <array>
1469// CHECK-NEXT: <dict>
1470// CHECK-NEXT: <key>line</key><integer>125</integer>
1471// CHECK-NEXT: <key>col</key><integer>7</integer>
1472// CHECK-NEXT: <key>file</key><integer>0</integer>
1473// CHECK-NEXT: </dict>
1474// CHECK-NEXT: <dict>
1475// CHECK-NEXT: <key>line</key><integer>125</integer>
1476// CHECK-NEXT: <key>col</key><integer>7</integer>
1477// CHECK-NEXT: <key>file</key><integer>0</integer>
1478// CHECK-NEXT: </dict>
1479// CHECK-NEXT: </array>
1480// CHECK-NEXT: </array>
1481// CHECK-NEXT: <key>depth</key><integer>0</integer>
1482// CHECK-NEXT: <key>extended_message</key>
1483// CHECK-NEXT: <string>Type &apos;NSMutableArray&lt;NSString *&gt; *&apos; is inferred from implicit cast (from &apos;id&apos; to &apos;NSMutableArray&lt;NSString *&gt; *&apos;)</string>
1484// CHECK-NEXT: <key>message</key>
1485// CHECK-NEXT: <string>Type &apos;NSMutableArray&lt;NSString *&gt; *&apos; is inferred from implicit cast (from &apos;id&apos; to &apos;NSMutableArray&lt;NSString *&gt; *&apos;)</string>
Gabor Horvathefec1632015-10-22 11:53:04 +00001486// CHECK-NEXT: </dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00001487// CHECK-NEXT: <dict>
1488// CHECK-NEXT: <key>kind</key><string>control</string>
1489// CHECK-NEXT: <key>edges</key>
Gabor Horvathefec1632015-10-22 11:53:04 +00001490// CHECK-NEXT: <array>
1491// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00001492// CHECK-NEXT: <key>start</key>
1493// CHECK-NEXT: <array>
1494// CHECK-NEXT: <dict>
1495// CHECK-NEXT: <key>line</key><integer>125</integer>
1496// CHECK-NEXT: <key>col</key><integer>3</integer>
1497// CHECK-NEXT: <key>file</key><integer>0</integer>
1498// CHECK-NEXT: </dict>
1499// CHECK-NEXT: <dict>
1500// CHECK-NEXT: <key>line</key><integer>125</integer>
1501// CHECK-NEXT: <key>col</key><integer>3</integer>
1502// CHECK-NEXT: <key>file</key><integer>0</integer>
1503// CHECK-NEXT: </dict>
1504// CHECK-NEXT: </array>
1505// CHECK-NEXT: <key>end</key>
1506// CHECK-NEXT: <array>
1507// CHECK-NEXT: <dict>
1508// CHECK-NEXT: <key>line</key><integer>130</integer>
1509// CHECK-NEXT: <key>col</key><integer>3</integer>
1510// CHECK-NEXT: <key>file</key><integer>0</integer>
1511// CHECK-NEXT: </dict>
1512// CHECK-NEXT: <dict>
1513// CHECK-NEXT: <key>line</key><integer>130</integer>
1514// CHECK-NEXT: <key>col</key><integer>3</integer>
1515// CHECK-NEXT: <key>file</key><integer>0</integer>
1516// CHECK-NEXT: </dict>
1517// CHECK-NEXT: </array>
Gabor Horvathefec1632015-10-22 11:53:04 +00001518// CHECK-NEXT: </dict>
1519// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +00001520// CHECK-NEXT: </dict>
Gabor Horvathefec1632015-10-22 11:53:04 +00001521// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00001522// CHECK-NEXT: <key>kind</key><string>event</string>
1523// CHECK-NEXT: <key>location</key>
1524// CHECK-NEXT: <dict>
1525// CHECK-NEXT: <key>line</key><integer>130</integer>
1526// CHECK-NEXT: <key>col</key><integer>3</integer>
1527// CHECK-NEXT: <key>file</key><integer>0</integer>
1528// CHECK-NEXT: </dict>
1529// CHECK-NEXT: <key>ranges</key>
Gabor Horvathefec1632015-10-22 11:53:04 +00001530// CHECK-NEXT: <array>
Devin Coughlinab139a92016-12-05 16:28:47 +00001531// CHECK-NEXT: <array>
1532// CHECK-NEXT: <dict>
1533// CHECK-NEXT: <key>line</key><integer>130</integer>
1534// CHECK-NEXT: <key>col</key><integer>16</integer>
1535// CHECK-NEXT: <key>file</key><integer>0</integer>
1536// CHECK-NEXT: </dict>
1537// CHECK-NEXT: <dict>
1538// CHECK-NEXT: <key>line</key><integer>130</integer>
1539// CHECK-NEXT: <key>col</key><integer>38</integer>
1540// CHECK-NEXT: <key>file</key><integer>0</integer>
1541// CHECK-NEXT: </dict>
1542// CHECK-NEXT: </array>
Gabor Horvathefec1632015-10-22 11:53:04 +00001543// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +00001544// CHECK-NEXT: <key>depth</key><integer>0</integer>
1545// CHECK-NEXT: <key>extended_message</key>
1546// CHECK-NEXT: <string>Conversion from value of type &apos;NSNumber *&apos; to incompatible type &apos;NSString *&apos;</string>
1547// CHECK-NEXT: <key>message</key>
1548// CHECK-NEXT: <string>Conversion from value of type &apos;NSNumber *&apos; to incompatible type &apos;NSString *&apos;</string>
1549// CHECK-NEXT: </dict>
1550// CHECK-NEXT: </array>
1551// CHECK-NEXT: <key>description</key><string>Conversion from value of type &apos;NSNumber *&apos; to incompatible type &apos;NSString *&apos;</string>
1552// CHECK-NEXT: <key>category</key><string>Core Foundation/Objective-C</string>
1553// CHECK-NEXT: <key>type</key><string>Generics</string>
1554// CHECK-NEXT: <key>check_name</key><string>core.DynamicTypePropagation</string>
1555// CHECK-NEXT: <!-- This hash is experimental and going to change! -->
1556// CHECK-NEXT: <key>issue_hash_content_of_line_in_context</key><string>7de91182a5d6e40a85fa3b91cf3fd089</string>
1557// CHECK-NEXT: <key>issue_context_kind</key><string>function</string>
1558// CHECK-NEXT: <key>issue_context</key><string>idErasedIncompatibleTypesReverseConversion</string>
1559// CHECK-NEXT: <key>issue_hash_function_offset</key><string>6</string>
1560// CHECK-NEXT: <key>location</key>
1561// CHECK-NEXT: <dict>
1562// CHECK-NEXT: <key>line</key><integer>130</integer>
1563// CHECK-NEXT: <key>col</key><integer>3</integer>
1564// CHECK-NEXT: <key>file</key><integer>0</integer>
1565// CHECK-NEXT: </dict>
1566// CHECK-NEXT: </dict>
1567// CHECK-NEXT: <dict>
1568// CHECK-NEXT: <key>path</key>
1569// CHECK-NEXT: <array>
1570// CHECK-NEXT: <dict>
1571// CHECK-NEXT: <key>kind</key><string>event</string>
1572// CHECK-NEXT: <key>location</key>
1573// CHECK-NEXT: <dict>
1574// CHECK-NEXT: <key>line</key><integer>135</integer>
1575// CHECK-NEXT: <key>col</key><integer>7</integer>
1576// CHECK-NEXT: <key>file</key><integer>0</integer>
1577// CHECK-NEXT: </dict>
1578// CHECK-NEXT: <key>ranges</key>
Gabor Horvathefec1632015-10-22 11:53:04 +00001579// CHECK-NEXT: <array>
Devin Coughlinab139a92016-12-05 16:28:47 +00001580// CHECK-NEXT: <array>
1581// CHECK-NEXT: <dict>
1582// CHECK-NEXT: <key>line</key><integer>135</integer>
1583// CHECK-NEXT: <key>col</key><integer>7</integer>
1584// CHECK-NEXT: <key>file</key><integer>0</integer>
1585// CHECK-NEXT: </dict>
1586// CHECK-NEXT: <dict>
1587// CHECK-NEXT: <key>line</key><integer>135</integer>
1588// CHECK-NEXT: <key>col</key><integer>7</integer>
1589// CHECK-NEXT: <key>file</key><integer>0</integer>
1590// CHECK-NEXT: </dict>
1591// CHECK-NEXT: </array>
Gabor Horvathefec1632015-10-22 11:53:04 +00001592// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +00001593// CHECK-NEXT: <key>depth</key><integer>0</integer>
1594// CHECK-NEXT: <key>extended_message</key>
1595// CHECK-NEXT: <string>Type &apos;NSMutableArray&lt;NSString *&gt; *&apos; is inferred from implicit cast (from &apos;NSMutableArray&lt;NSString *&gt; *&apos; to &apos;id&apos;)</string>
1596// CHECK-NEXT: <key>message</key>
1597// CHECK-NEXT: <string>Type &apos;NSMutableArray&lt;NSString *&gt; *&apos; is inferred from implicit cast (from &apos;NSMutableArray&lt;NSString *&gt; *&apos; to &apos;id&apos;)</string>
1598// CHECK-NEXT: </dict>
Gabor Horvathefec1632015-10-22 11:53:04 +00001599// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00001600// CHECK-NEXT: <key>kind</key><string>control</string>
1601// CHECK-NEXT: <key>edges</key>
Gabor Horvathefec1632015-10-22 11:53:04 +00001602// CHECK-NEXT: <array>
1603// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00001604// CHECK-NEXT: <key>start</key>
1605// CHECK-NEXT: <array>
1606// CHECK-NEXT: <dict>
1607// CHECK-NEXT: <key>line</key><integer>135</integer>
1608// CHECK-NEXT: <key>col</key><integer>3</integer>
1609// CHECK-NEXT: <key>file</key><integer>0</integer>
1610// CHECK-NEXT: </dict>
1611// CHECK-NEXT: <dict>
1612// CHECK-NEXT: <key>line</key><integer>135</integer>
1613// CHECK-NEXT: <key>col</key><integer>3</integer>
1614// CHECK-NEXT: <key>file</key><integer>0</integer>
1615// CHECK-NEXT: </dict>
1616// CHECK-NEXT: </array>
1617// CHECK-NEXT: <key>end</key>
1618// CHECK-NEXT: <array>
1619// CHECK-NEXT: <dict>
1620// CHECK-NEXT: <key>line</key><integer>136</integer>
1621// CHECK-NEXT: <key>col</key><integer>3</integer>
1622// CHECK-NEXT: <key>file</key><integer>0</integer>
1623// CHECK-NEXT: </dict>
1624// CHECK-NEXT: <dict>
1625// CHECK-NEXT: <key>line</key><integer>136</integer>
1626// CHECK-NEXT: <key>col</key><integer>3</integer>
1627// CHECK-NEXT: <key>file</key><integer>0</integer>
1628// CHECK-NEXT: </dict>
1629// CHECK-NEXT: </array>
Gabor Horvathefec1632015-10-22 11:53:04 +00001630// CHECK-NEXT: </dict>
1631// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +00001632// CHECK-NEXT: </dict>
Gabor Horvathefec1632015-10-22 11:53:04 +00001633// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00001634// CHECK-NEXT: <key>kind</key><string>control</string>
1635// CHECK-NEXT: <key>edges</key>
Gabor Horvathefec1632015-10-22 11:53:04 +00001636// CHECK-NEXT: <array>
1637// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00001638// CHECK-NEXT: <key>start</key>
1639// CHECK-NEXT: <array>
1640// CHECK-NEXT: <dict>
1641// CHECK-NEXT: <key>line</key><integer>136</integer>
1642// CHECK-NEXT: <key>col</key><integer>3</integer>
1643// CHECK-NEXT: <key>file</key><integer>0</integer>
1644// CHECK-NEXT: </dict>
1645// CHECK-NEXT: <dict>
1646// CHECK-NEXT: <key>line</key><integer>136</integer>
1647// CHECK-NEXT: <key>col</key><integer>3</integer>
1648// CHECK-NEXT: <key>file</key><integer>0</integer>
1649// CHECK-NEXT: </dict>
1650// CHECK-NEXT: </array>
1651// CHECK-NEXT: <key>end</key>
1652// CHECK-NEXT: <array>
1653// CHECK-NEXT: <dict>
1654// CHECK-NEXT: <key>line</key><integer>136</integer>
1655// CHECK-NEXT: <key>col</key><integer>7</integer>
1656// CHECK-NEXT: <key>file</key><integer>0</integer>
1657// CHECK-NEXT: </dict>
1658// CHECK-NEXT: <dict>
1659// CHECK-NEXT: <key>line</key><integer>136</integer>
1660// CHECK-NEXT: <key>col</key><integer>7</integer>
1661// CHECK-NEXT: <key>file</key><integer>0</integer>
1662// CHECK-NEXT: </dict>
1663// CHECK-NEXT: </array>
Gabor Horvathefec1632015-10-22 11:53:04 +00001664// CHECK-NEXT: </dict>
1665// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +00001666// CHECK-NEXT: </dict>
1667// CHECK-NEXT: <dict>
1668// CHECK-NEXT: <key>kind</key><string>event</string>
1669// CHECK-NEXT: <key>location</key>
1670// CHECK-NEXT: <dict>
1671// CHECK-NEXT: <key>line</key><integer>136</integer>
1672// CHECK-NEXT: <key>col</key><integer>7</integer>
1673// CHECK-NEXT: <key>file</key><integer>0</integer>
1674// CHECK-NEXT: </dict>
1675// CHECK-NEXT: <key>ranges</key>
Gabor Horvathefec1632015-10-22 11:53:04 +00001676// CHECK-NEXT: <array>
Devin Coughlinab139a92016-12-05 16:28:47 +00001677// CHECK-NEXT: <array>
1678// CHECK-NEXT: <dict>
1679// CHECK-NEXT: <key>line</key><integer>136</integer>
1680// CHECK-NEXT: <key>col</key><integer>7</integer>
1681// CHECK-NEXT: <key>file</key><integer>0</integer>
1682// CHECK-NEXT: </dict>
1683// CHECK-NEXT: <dict>
1684// CHECK-NEXT: <key>line</key><integer>136</integer>
1685// CHECK-NEXT: <key>col</key><integer>7</integer>
1686// CHECK-NEXT: <key>file</key><integer>0</integer>
1687// CHECK-NEXT: </dict>
1688// CHECK-NEXT: </array>
Gabor Horvathefec1632015-10-22 11:53:04 +00001689// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +00001690// CHECK-NEXT: <key>depth</key><integer>0</integer>
1691// CHECK-NEXT: <key>extended_message</key>
1692// CHECK-NEXT: <string>Conversion from value of type &apos;NSMutableArray&lt;NSString *&gt; *&apos; to incompatible type &apos;NSArray&lt;NSNumber *&gt; *&apos;</string>
1693// CHECK-NEXT: <key>message</key>
1694// CHECK-NEXT: <string>Conversion from value of type &apos;NSMutableArray&lt;NSString *&gt; *&apos; to incompatible type &apos;NSArray&lt;NSNumber *&gt; *&apos;</string>
1695// CHECK-NEXT: </dict>
1696// CHECK-NEXT: </array>
1697// CHECK-NEXT: <key>description</key><string>Conversion from value of type &apos;NSMutableArray&lt;NSString *&gt; *&apos; to incompatible type &apos;NSArray&lt;NSNumber *&gt; *&apos;</string>
1698// CHECK-NEXT: <key>category</key><string>Core Foundation/Objective-C</string>
1699// CHECK-NEXT: <key>type</key><string>Generics</string>
1700// CHECK-NEXT: <key>check_name</key><string>core.DynamicTypePropagation</string>
1701// CHECK-NEXT: <!-- This hash is experimental and going to change! -->
1702// CHECK-NEXT: <key>issue_hash_content_of_line_in_context</key><string>8960776d84319407ac2bf7a1531d19b0</string>
1703// CHECK-NEXT: <key>issue_context_kind</key><string>function</string>
1704// CHECK-NEXT: <key>issue_context</key><string>idErasedIncompatibleTypes</string>
1705// CHECK-NEXT: <key>issue_hash_function_offset</key><string>2</string>
1706// CHECK-NEXT: <key>location</key>
1707// CHECK-NEXT: <dict>
1708// CHECK-NEXT: <key>line</key><integer>136</integer>
1709// CHECK-NEXT: <key>col</key><integer>7</integer>
1710// CHECK-NEXT: <key>file</key><integer>0</integer>
1711// CHECK-NEXT: </dict>
1712// CHECK-NEXT: </dict>
1713// CHECK-NEXT: <dict>
1714// CHECK-NEXT: <key>path</key>
1715// CHECK-NEXT: <array>
1716// CHECK-NEXT: <dict>
1717// CHECK-NEXT: <key>kind</key><string>event</string>
1718// CHECK-NEXT: <key>location</key>
1719// CHECK-NEXT: <dict>
1720// CHECK-NEXT: <key>line</key><integer>135</integer>
1721// CHECK-NEXT: <key>col</key><integer>7</integer>
1722// CHECK-NEXT: <key>file</key><integer>0</integer>
1723// CHECK-NEXT: </dict>
1724// CHECK-NEXT: <key>ranges</key>
Gabor Horvathefec1632015-10-22 11:53:04 +00001725// CHECK-NEXT: <array>
Devin Coughlinab139a92016-12-05 16:28:47 +00001726// CHECK-NEXT: <array>
1727// CHECK-NEXT: <dict>
1728// CHECK-NEXT: <key>line</key><integer>135</integer>
1729// CHECK-NEXT: <key>col</key><integer>7</integer>
1730// CHECK-NEXT: <key>file</key><integer>0</integer>
1731// CHECK-NEXT: </dict>
1732// CHECK-NEXT: <dict>
1733// CHECK-NEXT: <key>line</key><integer>135</integer>
1734// CHECK-NEXT: <key>col</key><integer>7</integer>
1735// CHECK-NEXT: <key>file</key><integer>0</integer>
1736// CHECK-NEXT: </dict>
1737// CHECK-NEXT: </array>
Gabor Horvathefec1632015-10-22 11:53:04 +00001738// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +00001739// CHECK-NEXT: <key>depth</key><integer>0</integer>
1740// CHECK-NEXT: <key>extended_message</key>
1741// CHECK-NEXT: <string>Type &apos;NSMutableArray&lt;NSString *&gt; *&apos; is inferred from implicit cast (from &apos;NSMutableArray&lt;NSString *&gt; *&apos; to &apos;id&apos;)</string>
1742// CHECK-NEXT: <key>message</key>
1743// CHECK-NEXT: <string>Type &apos;NSMutableArray&lt;NSString *&gt; *&apos; is inferred from implicit cast (from &apos;NSMutableArray&lt;NSString *&gt; *&apos; to &apos;id&apos;)</string>
1744// CHECK-NEXT: </dict>
Gabor Horvathefec1632015-10-22 11:53:04 +00001745// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00001746// CHECK-NEXT: <key>kind</key><string>control</string>
1747// CHECK-NEXT: <key>edges</key>
Gabor Horvathefec1632015-10-22 11:53:04 +00001748// CHECK-NEXT: <array>
1749// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00001750// CHECK-NEXT: <key>start</key>
1751// CHECK-NEXT: <array>
1752// CHECK-NEXT: <dict>
1753// CHECK-NEXT: <key>line</key><integer>135</integer>
1754// CHECK-NEXT: <key>col</key><integer>3</integer>
1755// CHECK-NEXT: <key>file</key><integer>0</integer>
1756// CHECK-NEXT: </dict>
1757// CHECK-NEXT: <dict>
1758// CHECK-NEXT: <key>line</key><integer>135</integer>
1759// CHECK-NEXT: <key>col</key><integer>3</integer>
1760// CHECK-NEXT: <key>file</key><integer>0</integer>
1761// CHECK-NEXT: </dict>
1762// CHECK-NEXT: </array>
1763// CHECK-NEXT: <key>end</key>
1764// CHECK-NEXT: <array>
1765// CHECK-NEXT: <dict>
1766// CHECK-NEXT: <key>line</key><integer>139</integer>
1767// CHECK-NEXT: <key>col</key><integer>3</integer>
1768// CHECK-NEXT: <key>file</key><integer>0</integer>
1769// CHECK-NEXT: </dict>
1770// CHECK-NEXT: <dict>
1771// CHECK-NEXT: <key>line</key><integer>139</integer>
1772// CHECK-NEXT: <key>col</key><integer>9</integer>
1773// CHECK-NEXT: <key>file</key><integer>0</integer>
1774// CHECK-NEXT: </dict>
1775// CHECK-NEXT: </array>
Gabor Horvathefec1632015-10-22 11:53:04 +00001776// CHECK-NEXT: </dict>
1777// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +00001778// CHECK-NEXT: </dict>
Gabor Horvathefec1632015-10-22 11:53:04 +00001779// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00001780// CHECK-NEXT: <key>kind</key><string>control</string>
1781// CHECK-NEXT: <key>edges</key>
Gabor Horvathefec1632015-10-22 11:53:04 +00001782// CHECK-NEXT: <array>
1783// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00001784// CHECK-NEXT: <key>start</key>
1785// CHECK-NEXT: <array>
1786// CHECK-NEXT: <dict>
1787// CHECK-NEXT: <key>line</key><integer>139</integer>
1788// CHECK-NEXT: <key>col</key><integer>3</integer>
1789// CHECK-NEXT: <key>file</key><integer>0</integer>
1790// CHECK-NEXT: </dict>
1791// CHECK-NEXT: <dict>
1792// CHECK-NEXT: <key>line</key><integer>139</integer>
1793// CHECK-NEXT: <key>col</key><integer>9</integer>
1794// CHECK-NEXT: <key>file</key><integer>0</integer>
1795// CHECK-NEXT: </dict>
1796// CHECK-NEXT: </array>
1797// CHECK-NEXT: <key>end</key>
1798// CHECK-NEXT: <array>
1799// CHECK-NEXT: <dict>
1800// CHECK-NEXT: <key>line</key><integer>139</integer>
1801// CHECK-NEXT: <key>col</key><integer>11</integer>
1802// CHECK-NEXT: <key>file</key><integer>0</integer>
1803// CHECK-NEXT: </dict>
1804// CHECK-NEXT: <dict>
1805// CHECK-NEXT: <key>line</key><integer>139</integer>
1806// CHECK-NEXT: <key>col</key><integer>11</integer>
1807// CHECK-NEXT: <key>file</key><integer>0</integer>
1808// CHECK-NEXT: </dict>
1809// CHECK-NEXT: </array>
Gabor Horvathefec1632015-10-22 11:53:04 +00001810// CHECK-NEXT: </dict>
1811// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +00001812// CHECK-NEXT: </dict>
1813// CHECK-NEXT: <dict>
1814// CHECK-NEXT: <key>kind</key><string>event</string>
1815// CHECK-NEXT: <key>location</key>
1816// CHECK-NEXT: <dict>
1817// CHECK-NEXT: <key>line</key><integer>139</integer>
1818// CHECK-NEXT: <key>col</key><integer>11</integer>
1819// CHECK-NEXT: <key>file</key><integer>0</integer>
1820// CHECK-NEXT: </dict>
1821// CHECK-NEXT: <key>ranges</key>
Gabor Horvathefec1632015-10-22 11:53:04 +00001822// CHECK-NEXT: <array>
Devin Coughlinab139a92016-12-05 16:28:47 +00001823// CHECK-NEXT: <array>
1824// CHECK-NEXT: <dict>
1825// CHECK-NEXT: <key>line</key><integer>139</integer>
1826// CHECK-NEXT: <key>col</key><integer>11</integer>
1827// CHECK-NEXT: <key>file</key><integer>0</integer>
1828// CHECK-NEXT: </dict>
1829// CHECK-NEXT: <dict>
1830// CHECK-NEXT: <key>line</key><integer>139</integer>
1831// CHECK-NEXT: <key>col</key><integer>11</integer>
1832// CHECK-NEXT: <key>file</key><integer>0</integer>
1833// CHECK-NEXT: </dict>
1834// CHECK-NEXT: </array>
Gabor Horvathefec1632015-10-22 11:53:04 +00001835// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +00001836// CHECK-NEXT: <key>depth</key><integer>0</integer>
1837// CHECK-NEXT: <key>extended_message</key>
1838// CHECK-NEXT: <string>Conversion from value of type &apos;NSMutableArray&lt;NSString *&gt; *&apos; to incompatible type &apos;NSArray&lt;NSNumber *&gt; *&apos;</string>
1839// CHECK-NEXT: <key>message</key>
1840// CHECK-NEXT: <string>Conversion from value of type &apos;NSMutableArray&lt;NSString *&gt; *&apos; to incompatible type &apos;NSArray&lt;NSNumber *&gt; *&apos;</string>
1841// CHECK-NEXT: </dict>
1842// CHECK-NEXT: </array>
1843// CHECK-NEXT: <key>description</key><string>Conversion from value of type &apos;NSMutableArray&lt;NSString *&gt; *&apos; to incompatible type &apos;NSArray&lt;NSNumber *&gt; *&apos;</string>
1844// CHECK-NEXT: <key>category</key><string>Core Foundation/Objective-C</string>
1845// CHECK-NEXT: <key>type</key><string>Generics</string>
1846// CHECK-NEXT: <key>check_name</key><string>core.DynamicTypePropagation</string>
1847// CHECK-NEXT: <!-- This hash is experimental and going to change! -->
1848// CHECK-NEXT: <key>issue_hash_content_of_line_in_context</key><string>93b114c7a385294dce5c25ed04a8b25a</string>
1849// CHECK-NEXT: <key>issue_context_kind</key><string>function</string>
1850// CHECK-NEXT: <key>issue_context</key><string>idErasedIncompatibleTypes</string>
1851// CHECK-NEXT: <key>issue_hash_function_offset</key><string>5</string>
1852// CHECK-NEXT: <key>location</key>
1853// CHECK-NEXT: <dict>
1854// CHECK-NEXT: <key>line</key><integer>139</integer>
1855// CHECK-NEXT: <key>col</key><integer>11</integer>
1856// CHECK-NEXT: <key>file</key><integer>0</integer>
1857// CHECK-NEXT: </dict>
1858// CHECK-NEXT: </dict>
1859// CHECK-NEXT: <dict>
1860// CHECK-NEXT: <key>path</key>
1861// CHECK-NEXT: <array>
Gabor Horvathefec1632015-10-22 11:53:04 +00001862// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00001863// CHECK-NEXT: <key>kind</key><string>event</string>
1864// CHECK-NEXT: <key>location</key>
1865// CHECK-NEXT: <dict>
1866// CHECK-NEXT: <key>line</key><integer>135</integer>
1867// CHECK-NEXT: <key>col</key><integer>7</integer>
1868// CHECK-NEXT: <key>file</key><integer>0</integer>
1869// CHECK-NEXT: </dict>
1870// CHECK-NEXT: <key>ranges</key>
1871// CHECK-NEXT: <array>
1872// CHECK-NEXT: <array>
1873// CHECK-NEXT: <dict>
1874// CHECK-NEXT: <key>line</key><integer>135</integer>
1875// CHECK-NEXT: <key>col</key><integer>7</integer>
1876// CHECK-NEXT: <key>file</key><integer>0</integer>
1877// CHECK-NEXT: </dict>
1878// CHECK-NEXT: <dict>
1879// CHECK-NEXT: <key>line</key><integer>135</integer>
1880// CHECK-NEXT: <key>col</key><integer>7</integer>
1881// CHECK-NEXT: <key>file</key><integer>0</integer>
1882// CHECK-NEXT: </dict>
1883// CHECK-NEXT: </array>
1884// CHECK-NEXT: </array>
1885// CHECK-NEXT: <key>depth</key><integer>0</integer>
1886// CHECK-NEXT: <key>extended_message</key>
1887// CHECK-NEXT: <string>Type &apos;NSMutableArray&lt;NSString *&gt; *&apos; is inferred from implicit cast (from &apos;NSMutableArray&lt;NSString *&gt; *&apos; to &apos;id&apos;)</string>
1888// CHECK-NEXT: <key>message</key>
1889// CHECK-NEXT: <string>Type &apos;NSMutableArray&lt;NSString *&gt; *&apos; is inferred from implicit cast (from &apos;NSMutableArray&lt;NSString *&gt; *&apos; to &apos;id&apos;)</string>
Gabor Horvathefec1632015-10-22 11:53:04 +00001890// CHECK-NEXT: </dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00001891// CHECK-NEXT: <dict>
1892// CHECK-NEXT: <key>kind</key><string>control</string>
1893// CHECK-NEXT: <key>edges</key>
Gabor Horvathefec1632015-10-22 11:53:04 +00001894// CHECK-NEXT: <array>
1895// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00001896// CHECK-NEXT: <key>start</key>
1897// CHECK-NEXT: <array>
1898// CHECK-NEXT: <dict>
1899// CHECK-NEXT: <key>line</key><integer>135</integer>
1900// CHECK-NEXT: <key>col</key><integer>3</integer>
1901// CHECK-NEXT: <key>file</key><integer>0</integer>
1902// CHECK-NEXT: </dict>
1903// CHECK-NEXT: <dict>
1904// CHECK-NEXT: <key>line</key><integer>135</integer>
1905// CHECK-NEXT: <key>col</key><integer>3</integer>
1906// CHECK-NEXT: <key>file</key><integer>0</integer>
1907// CHECK-NEXT: </dict>
1908// CHECK-NEXT: </array>
1909// CHECK-NEXT: <key>end</key>
1910// CHECK-NEXT: <array>
1911// CHECK-NEXT: <dict>
1912// CHECK-NEXT: <key>line</key><integer>141</integer>
1913// CHECK-NEXT: <key>col</key><integer>3</integer>
1914// CHECK-NEXT: <key>file</key><integer>0</integer>
1915// CHECK-NEXT: </dict>
1916// CHECK-NEXT: <dict>
1917// CHECK-NEXT: <key>line</key><integer>141</integer>
1918// CHECK-NEXT: <key>col</key><integer>3</integer>
1919// CHECK-NEXT: <key>file</key><integer>0</integer>
1920// CHECK-NEXT: </dict>
1921// CHECK-NEXT: </array>
Gabor Horvathefec1632015-10-22 11:53:04 +00001922// CHECK-NEXT: </dict>
1923// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +00001924// CHECK-NEXT: </dict>
Gabor Horvathefec1632015-10-22 11:53:04 +00001925// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00001926// CHECK-NEXT: <key>kind</key><string>event</string>
1927// CHECK-NEXT: <key>location</key>
1928// CHECK-NEXT: <dict>
1929// CHECK-NEXT: <key>line</key><integer>141</integer>
1930// CHECK-NEXT: <key>col</key><integer>3</integer>
1931// CHECK-NEXT: <key>file</key><integer>0</integer>
1932// CHECK-NEXT: </dict>
1933// CHECK-NEXT: <key>ranges</key>
1934// CHECK-NEXT: <array>
1935// CHECK-NEXT: <array>
1936// CHECK-NEXT: <dict>
1937// CHECK-NEXT: <key>line</key><integer>141</integer>
1938// CHECK-NEXT: <key>col</key><integer>16</integer>
1939// CHECK-NEXT: <key>file</key><integer>0</integer>
1940// CHECK-NEXT: </dict>
1941// CHECK-NEXT: <dict>
1942// CHECK-NEXT: <key>line</key><integer>141</integer>
1943// CHECK-NEXT: <key>col</key><integer>38</integer>
1944// CHECK-NEXT: <key>file</key><integer>0</integer>
1945// CHECK-NEXT: </dict>
1946// CHECK-NEXT: </array>
1947// CHECK-NEXT: </array>
1948// CHECK-NEXT: <key>depth</key><integer>0</integer>
1949// CHECK-NEXT: <key>extended_message</key>
1950// CHECK-NEXT: <string>Conversion from value of type &apos;NSNumber *&apos; to incompatible type &apos;NSString *&apos;</string>
1951// CHECK-NEXT: <key>message</key>
1952// CHECK-NEXT: <string>Conversion from value of type &apos;NSNumber *&apos; to incompatible type &apos;NSString *&apos;</string>
Gabor Horvathefec1632015-10-22 11:53:04 +00001953// CHECK-NEXT: </dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00001954// CHECK-NEXT: </array>
1955// CHECK-NEXT: <key>description</key><string>Conversion from value of type &apos;NSNumber *&apos; to incompatible type &apos;NSString *&apos;</string>
1956// CHECK-NEXT: <key>category</key><string>Core Foundation/Objective-C</string>
1957// CHECK-NEXT: <key>type</key><string>Generics</string>
1958// CHECK-NEXT: <key>check_name</key><string>core.DynamicTypePropagation</string>
1959// CHECK-NEXT: <!-- This hash is experimental and going to change! -->
1960// CHECK-NEXT: <key>issue_hash_content_of_line_in_context</key><string>4c17f22d7e977f3343d2e2129b9229c3</string>
1961// CHECK-NEXT: <key>issue_context_kind</key><string>function</string>
1962// CHECK-NEXT: <key>issue_context</key><string>idErasedIncompatibleTypes</string>
1963// CHECK-NEXT: <key>issue_hash_function_offset</key><string>7</string>
1964// CHECK-NEXT: <key>location</key>
1965// CHECK-NEXT: <dict>
1966// CHECK-NEXT: <key>line</key><integer>141</integer>
1967// CHECK-NEXT: <key>col</key><integer>3</integer>
1968// CHECK-NEXT: <key>file</key><integer>0</integer>
1969// CHECK-NEXT: </dict>
1970// CHECK-NEXT: </dict>
1971// CHECK-NEXT: <dict>
1972// CHECK-NEXT: <key>path</key>
1973// CHECK-NEXT: <array>
1974// CHECK-NEXT: <dict>
1975// CHECK-NEXT: <key>kind</key><string>control</string>
1976// CHECK-NEXT: <key>edges</key>
Gabor Horvathefec1632015-10-22 11:53:04 +00001977// CHECK-NEXT: <array>
1978// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00001979// CHECK-NEXT: <key>start</key>
1980// CHECK-NEXT: <array>
1981// CHECK-NEXT: <dict>
1982// CHECK-NEXT: <key>line</key><integer>146</integer>
1983// CHECK-NEXT: <key>col</key><integer>3</integer>
1984// CHECK-NEXT: <key>file</key><integer>0</integer>
1985// CHECK-NEXT: </dict>
1986// CHECK-NEXT: <dict>
1987// CHECK-NEXT: <key>line</key><integer>146</integer>
1988// CHECK-NEXT: <key>col</key><integer>4</integer>
1989// CHECK-NEXT: <key>file</key><integer>0</integer>
1990// CHECK-NEXT: </dict>
1991// CHECK-NEXT: </array>
1992// CHECK-NEXT: <key>end</key>
1993// CHECK-NEXT: <array>
1994// CHECK-NEXT: <dict>
1995// CHECK-NEXT: <key>line</key><integer>146</integer>
1996// CHECK-NEXT: <key>col</key><integer>7</integer>
1997// CHECK-NEXT: <key>file</key><integer>0</integer>
1998// CHECK-NEXT: </dict>
1999// CHECK-NEXT: <dict>
2000// CHECK-NEXT: <key>line</key><integer>146</integer>
2001// CHECK-NEXT: <key>col</key><integer>16</integer>
2002// CHECK-NEXT: <key>file</key><integer>0</integer>
2003// CHECK-NEXT: </dict>
2004// CHECK-NEXT: </array>
Gabor Horvathefec1632015-10-22 11:53:04 +00002005// CHECK-NEXT: </dict>
2006// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +00002007// CHECK-NEXT: </dict>
2008// CHECK-NEXT: <dict>
2009// CHECK-NEXT: <key>kind</key><string>event</string>
2010// CHECK-NEXT: <key>location</key>
2011// CHECK-NEXT: <dict>
2012// CHECK-NEXT: <key>line</key><integer>146</integer>
2013// CHECK-NEXT: <key>col</key><integer>7</integer>
2014// CHECK-NEXT: <key>file</key><integer>0</integer>
2015// CHECK-NEXT: </dict>
2016// CHECK-NEXT: <key>ranges</key>
Gabor Horvathefec1632015-10-22 11:53:04 +00002017// CHECK-NEXT: <array>
Devin Coughlinab139a92016-12-05 16:28:47 +00002018// CHECK-NEXT: <array>
2019// CHECK-NEXT: <dict>
2020// CHECK-NEXT: <key>line</key><integer>146</integer>
2021// CHECK-NEXT: <key>col</key><integer>7</integer>
2022// CHECK-NEXT: <key>file</key><integer>0</integer>
2023// CHECK-NEXT: </dict>
2024// CHECK-NEXT: <dict>
2025// CHECK-NEXT: <key>line</key><integer>146</integer>
2026// CHECK-NEXT: <key>col</key><integer>23</integer>
2027// CHECK-NEXT: <key>file</key><integer>0</integer>
2028// CHECK-NEXT: </dict>
2029// CHECK-NEXT: </array>
Gabor Horvathefec1632015-10-22 11:53:04 +00002030// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +00002031// CHECK-NEXT: <key>depth</key><integer>0</integer>
2032// CHECK-NEXT: <key>extended_message</key>
2033// CHECK-NEXT: <string>Assuming the condition is false</string>
2034// CHECK-NEXT: <key>message</key>
2035// CHECK-NEXT: <string>Assuming the condition is false</string>
2036// CHECK-NEXT: </dict>
Gabor Horvathefec1632015-10-22 11:53:04 +00002037// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00002038// CHECK-NEXT: <key>kind</key><string>control</string>
2039// CHECK-NEXT: <key>edges</key>
Gabor Horvathefec1632015-10-22 11:53:04 +00002040// CHECK-NEXT: <array>
2041// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00002042// CHECK-NEXT: <key>start</key>
2043// CHECK-NEXT: <array>
2044// CHECK-NEXT: <dict>
2045// CHECK-NEXT: <key>line</key><integer>146</integer>
2046// CHECK-NEXT: <key>col</key><integer>7</integer>
2047// CHECK-NEXT: <key>file</key><integer>0</integer>
2048// CHECK-NEXT: </dict>
2049// CHECK-NEXT: <dict>
2050// CHECK-NEXT: <key>line</key><integer>146</integer>
2051// CHECK-NEXT: <key>col</key><integer>16</integer>
2052// CHECK-NEXT: <key>file</key><integer>0</integer>
2053// CHECK-NEXT: </dict>
2054// CHECK-NEXT: </array>
2055// CHECK-NEXT: <key>end</key>
2056// CHECK-NEXT: <array>
2057// CHECK-NEXT: <dict>
2058// CHECK-NEXT: <key>line</key><integer>150</integer>
2059// CHECK-NEXT: <key>col</key><integer>5</integer>
2060// CHECK-NEXT: <key>file</key><integer>0</integer>
2061// CHECK-NEXT: </dict>
2062// CHECK-NEXT: <dict>
2063// CHECK-NEXT: <key>line</key><integer>150</integer>
2064// CHECK-NEXT: <key>col</key><integer>5</integer>
2065// CHECK-NEXT: <key>file</key><integer>0</integer>
2066// CHECK-NEXT: </dict>
2067// CHECK-NEXT: </array>
Gabor Horvathefec1632015-10-22 11:53:04 +00002068// CHECK-NEXT: </dict>
2069// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +00002070// CHECK-NEXT: </dict>
2071// CHECK-NEXT: <dict>
2072// CHECK-NEXT: <key>kind</key><string>event</string>
2073// CHECK-NEXT: <key>location</key>
2074// CHECK-NEXT: <dict>
2075// CHECK-NEXT: <key>line</key><integer>150</integer>
2076// CHECK-NEXT: <key>col</key><integer>9</integer>
2077// CHECK-NEXT: <key>file</key><integer>0</integer>
2078// CHECK-NEXT: </dict>
2079// CHECK-NEXT: <key>ranges</key>
Gabor Horvathefec1632015-10-22 11:53:04 +00002080// CHECK-NEXT: <array>
Devin Coughlinab139a92016-12-05 16:28:47 +00002081// CHECK-NEXT: <array>
2082// CHECK-NEXT: <dict>
2083// CHECK-NEXT: <key>line</key><integer>150</integer>
2084// CHECK-NEXT: <key>col</key><integer>9</integer>
2085// CHECK-NEXT: <key>file</key><integer>0</integer>
2086// CHECK-NEXT: </dict>
2087// CHECK-NEXT: <dict>
2088// CHECK-NEXT: <key>line</key><integer>150</integer>
2089// CHECK-NEXT: <key>col</key><integer>9</integer>
2090// CHECK-NEXT: <key>file</key><integer>0</integer>
2091// CHECK-NEXT: </dict>
2092// CHECK-NEXT: </array>
Artem Dergachev0c334062016-10-05 08:19:49 +00002093// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +00002094// CHECK-NEXT: <key>depth</key><integer>0</integer>
2095// CHECK-NEXT: <key>extended_message</key>
2096// CHECK-NEXT: <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>
2097// CHECK-NEXT: <key>message</key>
2098// CHECK-NEXT: <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>
2099// CHECK-NEXT: </dict>
Artem Dergachev0c334062016-10-05 08:19:49 +00002100// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00002101// CHECK-NEXT: <key>kind</key><string>control</string>
2102// CHECK-NEXT: <key>edges</key>
Artem Dergachev0c334062016-10-05 08:19:49 +00002103// CHECK-NEXT: <array>
2104// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00002105// CHECK-NEXT: <key>start</key>
2106// CHECK-NEXT: <array>
2107// CHECK-NEXT: <dict>
2108// CHECK-NEXT: <key>line</key><integer>150</integer>
2109// CHECK-NEXT: <key>col</key><integer>5</integer>
2110// CHECK-NEXT: <key>file</key><integer>0</integer>
2111// CHECK-NEXT: </dict>
2112// CHECK-NEXT: <dict>
2113// CHECK-NEXT: <key>line</key><integer>150</integer>
2114// CHECK-NEXT: <key>col</key><integer>5</integer>
2115// CHECK-NEXT: <key>file</key><integer>0</integer>
2116// CHECK-NEXT: </dict>
2117// CHECK-NEXT: </array>
2118// CHECK-NEXT: <key>end</key>
2119// CHECK-NEXT: <array>
2120// CHECK-NEXT: <dict>
2121// CHECK-NEXT: <key>line</key><integer>151</integer>
2122// CHECK-NEXT: <key>col</key><integer>5</integer>
2123// CHECK-NEXT: <key>file</key><integer>0</integer>
2124// CHECK-NEXT: </dict>
2125// CHECK-NEXT: <dict>
2126// CHECK-NEXT: <key>line</key><integer>151</integer>
2127// CHECK-NEXT: <key>col</key><integer>5</integer>
2128// CHECK-NEXT: <key>file</key><integer>0</integer>
2129// CHECK-NEXT: </dict>
2130// CHECK-NEXT: </array>
Artem Dergachev0c334062016-10-05 08:19:49 +00002131// CHECK-NEXT: </dict>
2132// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +00002133// CHECK-NEXT: </dict>
Gabor Horvathefec1632015-10-22 11:53:04 +00002134// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00002135// CHECK-NEXT: <key>kind</key><string>control</string>
2136// CHECK-NEXT: <key>edges</key>
Gabor Horvathefec1632015-10-22 11:53:04 +00002137// CHECK-NEXT: <array>
2138// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00002139// CHECK-NEXT: <key>start</key>
2140// CHECK-NEXT: <array>
2141// CHECK-NEXT: <dict>
2142// CHECK-NEXT: <key>line</key><integer>151</integer>
2143// CHECK-NEXT: <key>col</key><integer>5</integer>
2144// CHECK-NEXT: <key>file</key><integer>0</integer>
2145// CHECK-NEXT: </dict>
2146// CHECK-NEXT: <dict>
2147// CHECK-NEXT: <key>line</key><integer>151</integer>
2148// CHECK-NEXT: <key>col</key><integer>5</integer>
2149// CHECK-NEXT: <key>file</key><integer>0</integer>
2150// CHECK-NEXT: </dict>
2151// CHECK-NEXT: </array>
2152// CHECK-NEXT: <key>end</key>
2153// CHECK-NEXT: <array>
2154// CHECK-NEXT: <dict>
2155// CHECK-NEXT: <key>line</key><integer>153</integer>
2156// CHECK-NEXT: <key>col</key><integer>3</integer>
2157// CHECK-NEXT: <key>file</key><integer>0</integer>
2158// CHECK-NEXT: </dict>
2159// CHECK-NEXT: <dict>
2160// CHECK-NEXT: <key>line</key><integer>153</integer>
2161// CHECK-NEXT: <key>col</key><integer>3</integer>
2162// CHECK-NEXT: <key>file</key><integer>0</integer>
2163// CHECK-NEXT: </dict>
2164// CHECK-NEXT: </array>
Gabor Horvathefec1632015-10-22 11:53:04 +00002165// CHECK-NEXT: </dict>
2166// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +00002167// CHECK-NEXT: </dict>
2168// CHECK-NEXT: <dict>
2169// CHECK-NEXT: <key>kind</key><string>event</string>
2170// CHECK-NEXT: <key>location</key>
2171// CHECK-NEXT: <dict>
2172// CHECK-NEXT: <key>line</key><integer>153</integer>
2173// CHECK-NEXT: <key>col</key><integer>3</integer>
2174// CHECK-NEXT: <key>file</key><integer>0</integer>
2175// CHECK-NEXT: </dict>
2176// CHECK-NEXT: <key>ranges</key>
Gabor Horvathefec1632015-10-22 11:53:04 +00002177// CHECK-NEXT: <array>
Devin Coughlinab139a92016-12-05 16:28:47 +00002178// CHECK-NEXT: <array>
2179// CHECK-NEXT: <dict>
2180// CHECK-NEXT: <key>line</key><integer>153</integer>
2181// CHECK-NEXT: <key>col</key><integer>17</integer>
2182// CHECK-NEXT: <key>file</key><integer>0</integer>
2183// CHECK-NEXT: </dict>
2184// CHECK-NEXT: <dict>
2185// CHECK-NEXT: <key>line</key><integer>153</integer>
2186// CHECK-NEXT: <key>col</key><integer>39</integer>
2187// CHECK-NEXT: <key>file</key><integer>0</integer>
2188// CHECK-NEXT: </dict>
2189// CHECK-NEXT: </array>
Gabor Horvathefec1632015-10-22 11:53:04 +00002190// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +00002191// CHECK-NEXT: <key>depth</key><integer>0</integer>
2192// CHECK-NEXT: <key>extended_message</key>
2193// CHECK-NEXT: <string>Conversion from value of type &apos;NSString *&apos; to incompatible type &apos;NSMutableString *&apos;</string>
2194// CHECK-NEXT: <key>message</key>
2195// CHECK-NEXT: <string>Conversion from value of type &apos;NSString *&apos; to incompatible type &apos;NSMutableString *&apos;</string>
2196// CHECK-NEXT: </dict>
2197// CHECK-NEXT: </array>
2198// CHECK-NEXT: <key>description</key><string>Conversion from value of type &apos;NSString *&apos; to incompatible type &apos;NSMutableString *&apos;</string>
2199// CHECK-NEXT: <key>category</key><string>Core Foundation/Objective-C</string>
2200// CHECK-NEXT: <key>type</key><string>Generics</string>
2201// CHECK-NEXT: <key>check_name</key><string>core.DynamicTypePropagation</string>
2202// CHECK-NEXT: <!-- This hash is experimental and going to change! -->
2203// CHECK-NEXT: <key>issue_hash_content_of_line_in_context</key><string>24a08781e7d8971a7d8f8f607ce40074</string>
2204// CHECK-NEXT: <key>issue_context_kind</key><string>function</string>
2205// CHECK-NEXT: <key>issue_context</key><string>pathSensitiveInference</string>
2206// CHECK-NEXT: <key>issue_hash_function_offset</key><string>8</string>
2207// CHECK-NEXT: <key>location</key>
2208// CHECK-NEXT: <dict>
2209// CHECK-NEXT: <key>line</key><integer>153</integer>
2210// CHECK-NEXT: <key>col</key><integer>3</integer>
2211// CHECK-NEXT: <key>file</key><integer>0</integer>
2212// CHECK-NEXT: </dict>
2213// CHECK-NEXT: </dict>
2214// CHECK-NEXT: <dict>
2215// CHECK-NEXT: <key>path</key>
2216// CHECK-NEXT: <array>
2217// CHECK-NEXT: <dict>
2218// CHECK-NEXT: <key>kind</key><string>event</string>
2219// CHECK-NEXT: <key>location</key>
2220// CHECK-NEXT: <dict>
2221// CHECK-NEXT: <key>line</key><integer>158</integer>
2222// CHECK-NEXT: <key>col</key><integer>7</integer>
2223// CHECK-NEXT: <key>file</key><integer>0</integer>
2224// CHECK-NEXT: </dict>
2225// CHECK-NEXT: <key>ranges</key>
Gabor Horvathefec1632015-10-22 11:53:04 +00002226// CHECK-NEXT: <array>
Devin Coughlinab139a92016-12-05 16:28:47 +00002227// CHECK-NEXT: <array>
2228// CHECK-NEXT: <dict>
2229// CHECK-NEXT: <key>line</key><integer>158</integer>
2230// CHECK-NEXT: <key>col</key><integer>7</integer>
2231// CHECK-NEXT: <key>file</key><integer>0</integer>
2232// CHECK-NEXT: </dict>
2233// CHECK-NEXT: <dict>
2234// CHECK-NEXT: <key>line</key><integer>158</integer>
2235// CHECK-NEXT: <key>col</key><integer>7</integer>
2236// CHECK-NEXT: <key>file</key><integer>0</integer>
2237// CHECK-NEXT: </dict>
2238// CHECK-NEXT: </array>
Gabor Horvathefec1632015-10-22 11:53:04 +00002239// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +00002240// CHECK-NEXT: <key>depth</key><integer>0</integer>
2241// CHECK-NEXT: <key>extended_message</key>
2242// CHECK-NEXT: <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>
2243// CHECK-NEXT: <key>message</key>
2244// CHECK-NEXT: <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>
2245// CHECK-NEXT: </dict>
Gabor Horvathefec1632015-10-22 11:53:04 +00002246// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00002247// CHECK-NEXT: <key>kind</key><string>control</string>
2248// CHECK-NEXT: <key>edges</key>
Gabor Horvathefec1632015-10-22 11:53:04 +00002249// CHECK-NEXT: <array>
2250// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00002251// CHECK-NEXT: <key>start</key>
2252// CHECK-NEXT: <array>
2253// CHECK-NEXT: <dict>
2254// CHECK-NEXT: <key>line</key><integer>158</integer>
2255// CHECK-NEXT: <key>col</key><integer>3</integer>
2256// CHECK-NEXT: <key>file</key><integer>0</integer>
2257// CHECK-NEXT: </dict>
2258// CHECK-NEXT: <dict>
2259// CHECK-NEXT: <key>line</key><integer>158</integer>
2260// CHECK-NEXT: <key>col</key><integer>3</integer>
2261// CHECK-NEXT: <key>file</key><integer>0</integer>
2262// CHECK-NEXT: </dict>
2263// CHECK-NEXT: </array>
2264// CHECK-NEXT: <key>end</key>
2265// CHECK-NEXT: <array>
2266// CHECK-NEXT: <dict>
2267// CHECK-NEXT: <key>line</key><integer>159</integer>
2268// CHECK-NEXT: <key>col</key><integer>3</integer>
2269// CHECK-NEXT: <key>file</key><integer>0</integer>
2270// CHECK-NEXT: </dict>
2271// CHECK-NEXT: <dict>
2272// CHECK-NEXT: <key>line</key><integer>159</integer>
2273// CHECK-NEXT: <key>col</key><integer>9</integer>
2274// CHECK-NEXT: <key>file</key><integer>0</integer>
2275// CHECK-NEXT: </dict>
2276// CHECK-NEXT: </array>
Gabor Horvathefec1632015-10-22 11:53:04 +00002277// CHECK-NEXT: </dict>
2278// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +00002279// CHECK-NEXT: </dict>
Gabor Horvathefec1632015-10-22 11:53:04 +00002280// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00002281// CHECK-NEXT: <key>kind</key><string>control</string>
2282// CHECK-NEXT: <key>edges</key>
Gabor Horvathefec1632015-10-22 11:53:04 +00002283// CHECK-NEXT: <array>
2284// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00002285// CHECK-NEXT: <key>start</key>
2286// CHECK-NEXT: <array>
2287// CHECK-NEXT: <dict>
2288// CHECK-NEXT: <key>line</key><integer>159</integer>
2289// CHECK-NEXT: <key>col</key><integer>3</integer>
2290// CHECK-NEXT: <key>file</key><integer>0</integer>
2291// CHECK-NEXT: </dict>
2292// CHECK-NEXT: <dict>
2293// CHECK-NEXT: <key>line</key><integer>159</integer>
2294// CHECK-NEXT: <key>col</key><integer>9</integer>
2295// CHECK-NEXT: <key>file</key><integer>0</integer>
2296// CHECK-NEXT: </dict>
2297// CHECK-NEXT: </array>
2298// CHECK-NEXT: <key>end</key>
2299// CHECK-NEXT: <array>
2300// CHECK-NEXT: <dict>
2301// CHECK-NEXT: <key>line</key><integer>159</integer>
2302// CHECK-NEXT: <key>col</key><integer>11</integer>
2303// CHECK-NEXT: <key>file</key><integer>0</integer>
2304// CHECK-NEXT: </dict>
2305// CHECK-NEXT: <dict>
2306// CHECK-NEXT: <key>line</key><integer>159</integer>
2307// CHECK-NEXT: <key>col</key><integer>11</integer>
2308// CHECK-NEXT: <key>file</key><integer>0</integer>
2309// CHECK-NEXT: </dict>
2310// CHECK-NEXT: </array>
Gabor Horvathefec1632015-10-22 11:53:04 +00002311// CHECK-NEXT: </dict>
2312// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +00002313// CHECK-NEXT: </dict>
2314// CHECK-NEXT: <dict>
2315// CHECK-NEXT: <key>kind</key><string>event</string>
2316// CHECK-NEXT: <key>location</key>
2317// CHECK-NEXT: <dict>
2318// CHECK-NEXT: <key>line</key><integer>159</integer>
2319// CHECK-NEXT: <key>col</key><integer>11</integer>
2320// CHECK-NEXT: <key>file</key><integer>0</integer>
2321// CHECK-NEXT: </dict>
2322// CHECK-NEXT: <key>ranges</key>
Gabor Horvathefec1632015-10-22 11:53:04 +00002323// CHECK-NEXT: <array>
Devin Coughlinab139a92016-12-05 16:28:47 +00002324// CHECK-NEXT: <array>
2325// CHECK-NEXT: <dict>
2326// CHECK-NEXT: <key>line</key><integer>159</integer>
2327// CHECK-NEXT: <key>col</key><integer>11</integer>
2328// CHECK-NEXT: <key>file</key><integer>0</integer>
2329// CHECK-NEXT: </dict>
2330// CHECK-NEXT: <dict>
2331// CHECK-NEXT: <key>line</key><integer>159</integer>
2332// CHECK-NEXT: <key>col</key><integer>11</integer>
2333// CHECK-NEXT: <key>file</key><integer>0</integer>
2334// CHECK-NEXT: </dict>
2335// CHECK-NEXT: </array>
Gabor Horvathefec1632015-10-22 11:53:04 +00002336// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +00002337// CHECK-NEXT: <key>depth</key><integer>0</integer>
2338// CHECK-NEXT: <key>extended_message</key>
2339// CHECK-NEXT: <string>Conversion from value of type &apos;MutableArray&lt;NSString *&gt; *&apos; to incompatible type &apos;NSArray&lt;NSNumber *&gt; *&apos;</string>
2340// CHECK-NEXT: <key>message</key>
2341// CHECK-NEXT: <string>Conversion from value of type &apos;MutableArray&lt;NSString *&gt; *&apos; to incompatible type &apos;NSArray&lt;NSNumber *&gt; *&apos;</string>
2342// CHECK-NEXT: </dict>
2343// CHECK-NEXT: </array>
2344// CHECK-NEXT: <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>
2345// CHECK-NEXT: <key>category</key><string>Core Foundation/Objective-C</string>
2346// CHECK-NEXT: <key>type</key><string>Generics</string>
2347// CHECK-NEXT: <key>check_name</key><string>core.DynamicTypePropagation</string>
2348// CHECK-NEXT: <!-- This hash is experimental and going to change! -->
2349// CHECK-NEXT: <key>issue_hash_content_of_line_in_context</key><string>a8534f675404d57d833dc3c371d49845</string>
2350// CHECK-NEXT: <key>issue_context_kind</key><string>function</string>
2351// CHECK-NEXT: <key>issue_context</key><string>verifyAPIusage</string>
2352// CHECK-NEXT: <key>issue_hash_function_offset</key><string>2</string>
2353// CHECK-NEXT: <key>location</key>
2354// CHECK-NEXT: <dict>
2355// CHECK-NEXT: <key>line</key><integer>159</integer>
2356// CHECK-NEXT: <key>col</key><integer>11</integer>
2357// CHECK-NEXT: <key>file</key><integer>0</integer>
2358// CHECK-NEXT: </dict>
2359// CHECK-NEXT: </dict>
2360// CHECK-NEXT: <dict>
2361// CHECK-NEXT: <key>path</key>
2362// CHECK-NEXT: <array>
2363// CHECK-NEXT: <dict>
2364// CHECK-NEXT: <key>kind</key><string>event</string>
2365// CHECK-NEXT: <key>location</key>
2366// CHECK-NEXT: <dict>
2367// CHECK-NEXT: <key>line</key><integer>164</integer>
2368// CHECK-NEXT: <key>col</key><integer>7</integer>
2369// CHECK-NEXT: <key>file</key><integer>0</integer>
2370// CHECK-NEXT: </dict>
2371// CHECK-NEXT: <key>ranges</key>
Gabor Horvathefec1632015-10-22 11:53:04 +00002372// CHECK-NEXT: <array>
Devin Coughlinab139a92016-12-05 16:28:47 +00002373// CHECK-NEXT: <array>
2374// CHECK-NEXT: <dict>
2375// CHECK-NEXT: <key>line</key><integer>164</integer>
2376// CHECK-NEXT: <key>col</key><integer>7</integer>
2377// CHECK-NEXT: <key>file</key><integer>0</integer>
2378// CHECK-NEXT: </dict>
2379// CHECK-NEXT: <dict>
2380// CHECK-NEXT: <key>line</key><integer>164</integer>
2381// CHECK-NEXT: <key>col</key><integer>42</integer>
2382// CHECK-NEXT: <key>file</key><integer>0</integer>
2383// CHECK-NEXT: </dict>
2384// CHECK-NEXT: </array>
Gabor Horvathefec1632015-10-22 11:53:04 +00002385// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +00002386// CHECK-NEXT: <key>depth</key><integer>0</integer>
2387// CHECK-NEXT: <key>extended_message</key>
2388// CHECK-NEXT: <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>
2389// CHECK-NEXT: <key>message</key>
2390// CHECK-NEXT: <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>
2391// CHECK-NEXT: </dict>
Gabor Horvathefec1632015-10-22 11:53:04 +00002392// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00002393// CHECK-NEXT: <key>kind</key><string>control</string>
2394// CHECK-NEXT: <key>edges</key>
Gabor Horvathefec1632015-10-22 11:53:04 +00002395// CHECK-NEXT: <array>
2396// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00002397// CHECK-NEXT: <key>start</key>
2398// CHECK-NEXT: <array>
2399// CHECK-NEXT: <dict>
2400// CHECK-NEXT: <key>line</key><integer>164</integer>
2401// CHECK-NEXT: <key>col</key><integer>3</integer>
2402// CHECK-NEXT: <key>file</key><integer>0</integer>
2403// CHECK-NEXT: </dict>
2404// CHECK-NEXT: <dict>
2405// CHECK-NEXT: <key>line</key><integer>164</integer>
2406// CHECK-NEXT: <key>col</key><integer>3</integer>
2407// CHECK-NEXT: <key>file</key><integer>0</integer>
2408// CHECK-NEXT: </dict>
2409// CHECK-NEXT: </array>
2410// CHECK-NEXT: <key>end</key>
2411// CHECK-NEXT: <array>
2412// CHECK-NEXT: <dict>
2413// CHECK-NEXT: <key>line</key><integer>165</integer>
2414// CHECK-NEXT: <key>col</key><integer>3</integer>
2415// CHECK-NEXT: <key>file</key><integer>0</integer>
2416// CHECK-NEXT: </dict>
2417// CHECK-NEXT: <dict>
2418// CHECK-NEXT: <key>line</key><integer>165</integer>
2419// CHECK-NEXT: <key>col</key><integer>3</integer>
2420// CHECK-NEXT: <key>file</key><integer>0</integer>
2421// CHECK-NEXT: </dict>
2422// CHECK-NEXT: </array>
Gabor Horvathefec1632015-10-22 11:53:04 +00002423// CHECK-NEXT: </dict>
2424// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +00002425// CHECK-NEXT: </dict>
Gabor Horvathefec1632015-10-22 11:53:04 +00002426// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00002427// CHECK-NEXT: <key>kind</key><string>event</string>
2428// CHECK-NEXT: <key>location</key>
2429// CHECK-NEXT: <dict>
2430// CHECK-NEXT: <key>line</key><integer>165</integer>
2431// CHECK-NEXT: <key>col</key><integer>3</integer>
2432// CHECK-NEXT: <key>file</key><integer>0</integer>
2433// CHECK-NEXT: </dict>
2434// CHECK-NEXT: <key>ranges</key>
2435// CHECK-NEXT: <array>
2436// CHECK-NEXT: <array>
2437// CHECK-NEXT: <dict>
2438// CHECK-NEXT: <key>line</key><integer>165</integer>
2439// CHECK-NEXT: <key>col</key><integer>17</integer>
2440// CHECK-NEXT: <key>file</key><integer>0</integer>
2441// CHECK-NEXT: </dict>
2442// CHECK-NEXT: <dict>
2443// CHECK-NEXT: <key>line</key><integer>165</integer>
2444// CHECK-NEXT: <key>col</key><integer>39</integer>
2445// CHECK-NEXT: <key>file</key><integer>0</integer>
2446// CHECK-NEXT: </dict>
2447// CHECK-NEXT: </array>
2448// CHECK-NEXT: </array>
2449// CHECK-NEXT: <key>depth</key><integer>0</integer>
2450// CHECK-NEXT: <key>extended_message</key>
2451// CHECK-NEXT: <string>Conversion from value of type &apos;NSString *&apos; to incompatible type &apos;NSMutableString *&apos;</string>
2452// CHECK-NEXT: <key>message</key>
2453// CHECK-NEXT: <string>Conversion from value of type &apos;NSString *&apos; to incompatible type &apos;NSMutableString *&apos;</string>
Gabor Horvathefec1632015-10-22 11:53:04 +00002454// CHECK-NEXT: </dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00002455// CHECK-NEXT: </array>
2456// CHECK-NEXT: <key>description</key><string>Conversion from value of type &apos;NSString *&apos; to incompatible type &apos;NSMutableString *&apos;</string>
2457// CHECK-NEXT: <key>category</key><string>Core Foundation/Objective-C</string>
2458// CHECK-NEXT: <key>type</key><string>Generics</string>
2459// CHECK-NEXT: <key>check_name</key><string>core.DynamicTypePropagation</string>
2460// CHECK-NEXT: <!-- This hash is experimental and going to change! -->
2461// CHECK-NEXT: <key>issue_hash_content_of_line_in_context</key><string>0549631e5a7fa668375061b6c898e438</string>
2462// CHECK-NEXT: <key>issue_context_kind</key><string>function</string>
2463// CHECK-NEXT: <key>issue_context</key><string>trustExplicitCasts</string>
2464// CHECK-NEXT: <key>issue_hash_function_offset</key><string>2</string>
2465// CHECK-NEXT: <key>location</key>
2466// CHECK-NEXT: <dict>
2467// CHECK-NEXT: <key>line</key><integer>165</integer>
2468// CHECK-NEXT: <key>col</key><integer>3</integer>
2469// CHECK-NEXT: <key>file</key><integer>0</integer>
2470// CHECK-NEXT: </dict>
2471// CHECK-NEXT: </dict>
2472// CHECK-NEXT: <dict>
2473// CHECK-NEXT: <key>path</key>
2474// CHECK-NEXT: <array>
2475// CHECK-NEXT: <dict>
2476// CHECK-NEXT: <key>kind</key><string>control</string>
2477// CHECK-NEXT: <key>edges</key>
Gabor Horvathefec1632015-10-22 11:53:04 +00002478// CHECK-NEXT: <array>
2479// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00002480// CHECK-NEXT: <key>start</key>
2481// CHECK-NEXT: <array>
2482// CHECK-NEXT: <dict>
2483// CHECK-NEXT: <key>line</key><integer>171</integer>
2484// CHECK-NEXT: <key>col</key><integer>3</integer>
2485// CHECK-NEXT: <key>file</key><integer>0</integer>
2486// CHECK-NEXT: </dict>
2487// CHECK-NEXT: <dict>
2488// CHECK-NEXT: <key>line</key><integer>171</integer>
2489// CHECK-NEXT: <key>col</key><integer>3</integer>
2490// CHECK-NEXT: <key>file</key><integer>0</integer>
2491// CHECK-NEXT: </dict>
2492// CHECK-NEXT: </array>
2493// CHECK-NEXT: <key>end</key>
2494// CHECK-NEXT: <array>
2495// CHECK-NEXT: <dict>
2496// CHECK-NEXT: <key>line</key><integer>172</integer>
2497// CHECK-NEXT: <key>col</key><integer>3</integer>
2498// CHECK-NEXT: <key>file</key><integer>0</integer>
2499// CHECK-NEXT: </dict>
2500// CHECK-NEXT: <dict>
2501// CHECK-NEXT: <key>line</key><integer>172</integer>
2502// CHECK-NEXT: <key>col</key><integer>3</integer>
2503// CHECK-NEXT: <key>file</key><integer>0</integer>
2504// CHECK-NEXT: </dict>
2505// CHECK-NEXT: </array>
Gabor Horvathefec1632015-10-22 11:53:04 +00002506// CHECK-NEXT: </dict>
2507// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +00002508// CHECK-NEXT: </dict>
2509// CHECK-NEXT: <dict>
2510// CHECK-NEXT: <key>kind</key><string>event</string>
2511// CHECK-NEXT: <key>location</key>
2512// CHECK-NEXT: <dict>
2513// CHECK-NEXT: <key>line</key><integer>172</integer>
2514// CHECK-NEXT: <key>col</key><integer>7</integer>
2515// CHECK-NEXT: <key>file</key><integer>0</integer>
2516// CHECK-NEXT: </dict>
2517// CHECK-NEXT: <key>ranges</key>
Gabor Horvathefec1632015-10-22 11:53:04 +00002518// CHECK-NEXT: <array>
Devin Coughlinab139a92016-12-05 16:28:47 +00002519// CHECK-NEXT: <array>
2520// CHECK-NEXT: <dict>
2521// CHECK-NEXT: <key>line</key><integer>172</integer>
2522// CHECK-NEXT: <key>col</key><integer>7</integer>
2523// CHECK-NEXT: <key>file</key><integer>0</integer>
2524// CHECK-NEXT: </dict>
2525// CHECK-NEXT: <dict>
2526// CHECK-NEXT: <key>line</key><integer>172</integer>
2527// CHECK-NEXT: <key>col</key><integer>7</integer>
2528// CHECK-NEXT: <key>file</key><integer>0</integer>
2529// CHECK-NEXT: </dict>
2530// CHECK-NEXT: </array>
Gabor Horvathefec1632015-10-22 11:53:04 +00002531// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +00002532// CHECK-NEXT: <key>depth</key><integer>0</integer>
2533// CHECK-NEXT: <key>extended_message</key>
2534// CHECK-NEXT: <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>
2535// CHECK-NEXT: <key>message</key>
2536// CHECK-NEXT: <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>
2537// CHECK-NEXT: </dict>
Gabor Horvathefec1632015-10-22 11:53:04 +00002538// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00002539// CHECK-NEXT: <key>kind</key><string>control</string>
2540// CHECK-NEXT: <key>edges</key>
Gabor Horvathefec1632015-10-22 11:53:04 +00002541// CHECK-NEXT: <array>
2542// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00002543// CHECK-NEXT: <key>start</key>
2544// CHECK-NEXT: <array>
2545// CHECK-NEXT: <dict>
2546// CHECK-NEXT: <key>line</key><integer>172</integer>
2547// CHECK-NEXT: <key>col</key><integer>3</integer>
2548// CHECK-NEXT: <key>file</key><integer>0</integer>
2549// CHECK-NEXT: </dict>
2550// CHECK-NEXT: <dict>
2551// CHECK-NEXT: <key>line</key><integer>172</integer>
2552// CHECK-NEXT: <key>col</key><integer>3</integer>
2553// CHECK-NEXT: <key>file</key><integer>0</integer>
2554// CHECK-NEXT: </dict>
2555// CHECK-NEXT: </array>
2556// CHECK-NEXT: <key>end</key>
2557// CHECK-NEXT: <array>
2558// CHECK-NEXT: <dict>
2559// CHECK-NEXT: <key>line</key><integer>173</integer>
2560// CHECK-NEXT: <key>col</key><integer>3</integer>
2561// CHECK-NEXT: <key>file</key><integer>0</integer>
2562// CHECK-NEXT: </dict>
2563// CHECK-NEXT: <dict>
2564// CHECK-NEXT: <key>line</key><integer>173</integer>
2565// CHECK-NEXT: <key>col</key><integer>3</integer>
2566// CHECK-NEXT: <key>file</key><integer>0</integer>
2567// CHECK-NEXT: </dict>
2568// CHECK-NEXT: </array>
Gabor Horvathefec1632015-10-22 11:53:04 +00002569// CHECK-NEXT: </dict>
2570// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +00002571// CHECK-NEXT: </dict>
Gabor Horvathefec1632015-10-22 11:53:04 +00002572// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00002573// CHECK-NEXT: <key>kind</key><string>control</string>
2574// CHECK-NEXT: <key>edges</key>
Gabor Horvathefec1632015-10-22 11:53:04 +00002575// CHECK-NEXT: <array>
2576// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00002577// CHECK-NEXT: <key>start</key>
2578// CHECK-NEXT: <array>
2579// CHECK-NEXT: <dict>
2580// CHECK-NEXT: <key>line</key><integer>173</integer>
2581// CHECK-NEXT: <key>col</key><integer>3</integer>
2582// CHECK-NEXT: <key>file</key><integer>0</integer>
2583// CHECK-NEXT: </dict>
2584// CHECK-NEXT: <dict>
2585// CHECK-NEXT: <key>line</key><integer>173</integer>
2586// CHECK-NEXT: <key>col</key><integer>3</integer>
2587// CHECK-NEXT: <key>file</key><integer>0</integer>
2588// CHECK-NEXT: </dict>
2589// CHECK-NEXT: </array>
2590// CHECK-NEXT: <key>end</key>
2591// CHECK-NEXT: <array>
2592// CHECK-NEXT: <dict>
2593// CHECK-NEXT: <key>line</key><integer>173</integer>
2594// CHECK-NEXT: <key>col</key><integer>7</integer>
2595// CHECK-NEXT: <key>file</key><integer>0</integer>
2596// CHECK-NEXT: </dict>
2597// CHECK-NEXT: <dict>
2598// CHECK-NEXT: <key>line</key><integer>173</integer>
2599// CHECK-NEXT: <key>col</key><integer>7</integer>
2600// CHECK-NEXT: <key>file</key><integer>0</integer>
2601// CHECK-NEXT: </dict>
2602// CHECK-NEXT: </array>
Gabor Horvathefec1632015-10-22 11:53:04 +00002603// CHECK-NEXT: </dict>
2604// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +00002605// CHECK-NEXT: </dict>
2606// CHECK-NEXT: <dict>
2607// CHECK-NEXT: <key>kind</key><string>event</string>
2608// CHECK-NEXT: <key>location</key>
2609// CHECK-NEXT: <dict>
2610// CHECK-NEXT: <key>line</key><integer>173</integer>
2611// CHECK-NEXT: <key>col</key><integer>7</integer>
2612// CHECK-NEXT: <key>file</key><integer>0</integer>
2613// CHECK-NEXT: </dict>
2614// CHECK-NEXT: <key>ranges</key>
Gabor Horvathefec1632015-10-22 11:53:04 +00002615// CHECK-NEXT: <array>
Devin Coughlinab139a92016-12-05 16:28:47 +00002616// CHECK-NEXT: <array>
2617// CHECK-NEXT: <dict>
2618// CHECK-NEXT: <key>line</key><integer>173</integer>
2619// CHECK-NEXT: <key>col</key><integer>7</integer>
2620// CHECK-NEXT: <key>file</key><integer>0</integer>
2621// CHECK-NEXT: </dict>
2622// CHECK-NEXT: <dict>
2623// CHECK-NEXT: <key>line</key><integer>173</integer>
2624// CHECK-NEXT: <key>col</key><integer>7</integer>
2625// CHECK-NEXT: <key>file</key><integer>0</integer>
2626// CHECK-NEXT: </dict>
2627// CHECK-NEXT: </array>
Gabor Horvathefec1632015-10-22 11:53:04 +00002628// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +00002629// CHECK-NEXT: <key>depth</key><integer>0</integer>
2630// CHECK-NEXT: <key>extended_message</key>
2631// CHECK-NEXT: <string>Conversion from value of type &apos;MutableArray&lt;NSString *&gt; *&apos; to incompatible type &apos;MutableArray&lt;NSNumber *&gt; *&apos;</string>
2632// CHECK-NEXT: <key>message</key>
2633// CHECK-NEXT: <string>Conversion from value of type &apos;MutableArray&lt;NSString *&gt; *&apos; to incompatible type &apos;MutableArray&lt;NSNumber *&gt; *&apos;</string>
2634// CHECK-NEXT: </dict>
2635// CHECK-NEXT: </array>
2636// CHECK-NEXT: <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>
2637// CHECK-NEXT: <key>category</key><string>Core Foundation/Objective-C</string>
2638// CHECK-NEXT: <key>type</key><string>Generics</string>
2639// CHECK-NEXT: <key>check_name</key><string>core.DynamicTypePropagation</string>
2640// CHECK-NEXT: <!-- This hash is experimental and going to change! -->
2641// CHECK-NEXT: <key>issue_hash_content_of_line_in_context</key><string>d113e22b9ee9ded1cd94750c3557eff4</string>
2642// CHECK-NEXT: <key>issue_context_kind</key><string>function</string>
2643// CHECK-NEXT: <key>issue_context</key><string>subtypeOfGeneric</string>
2644// CHECK-NEXT: <key>issue_hash_function_offset</key><string>3</string>
2645// CHECK-NEXT: <key>location</key>
2646// CHECK-NEXT: <dict>
2647// CHECK-NEXT: <key>line</key><integer>173</integer>
2648// CHECK-NEXT: <key>col</key><integer>7</integer>
2649// CHECK-NEXT: <key>file</key><integer>0</integer>
2650// CHECK-NEXT: </dict>
2651// CHECK-NEXT: </dict>
2652// CHECK-NEXT: <dict>
2653// CHECK-NEXT: <key>path</key>
2654// CHECK-NEXT: <array>
2655// CHECK-NEXT: <dict>
2656// CHECK-NEXT: <key>kind</key><string>event</string>
2657// CHECK-NEXT: <key>location</key>
2658// CHECK-NEXT: <dict>
2659// CHECK-NEXT: <key>line</key><integer>179</integer>
2660// CHECK-NEXT: <key>col</key><integer>7</integer>
2661// CHECK-NEXT: <key>file</key><integer>0</integer>
2662// CHECK-NEXT: </dict>
2663// CHECK-NEXT: <key>ranges</key>
Gabor Horvathefec1632015-10-22 11:53:04 +00002664// CHECK-NEXT: <array>
Devin Coughlinab139a92016-12-05 16:28:47 +00002665// CHECK-NEXT: <array>
2666// CHECK-NEXT: <dict>
2667// CHECK-NEXT: <key>line</key><integer>179</integer>
2668// CHECK-NEXT: <key>col</key><integer>7</integer>
2669// CHECK-NEXT: <key>file</key><integer>0</integer>
2670// CHECK-NEXT: </dict>
2671// CHECK-NEXT: <dict>
2672// CHECK-NEXT: <key>line</key><integer>179</integer>
2673// CHECK-NEXT: <key>col</key><integer>7</integer>
2674// CHECK-NEXT: <key>file</key><integer>0</integer>
2675// CHECK-NEXT: </dict>
2676// CHECK-NEXT: </array>
Gabor Horvathefec1632015-10-22 11:53:04 +00002677// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +00002678// CHECK-NEXT: <key>depth</key><integer>0</integer>
2679// CHECK-NEXT: <key>extended_message</key>
2680// CHECK-NEXT: <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>
2681// CHECK-NEXT: <key>message</key>
2682// CHECK-NEXT: <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>
2683// CHECK-NEXT: </dict>
Gabor Horvathefec1632015-10-22 11:53:04 +00002684// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00002685// CHECK-NEXT: <key>kind</key><string>control</string>
2686// CHECK-NEXT: <key>edges</key>
Gabor Horvathefec1632015-10-22 11:53:04 +00002687// CHECK-NEXT: <array>
2688// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00002689// CHECK-NEXT: <key>start</key>
2690// CHECK-NEXT: <array>
2691// CHECK-NEXT: <dict>
2692// CHECK-NEXT: <key>line</key><integer>179</integer>
2693// CHECK-NEXT: <key>col</key><integer>3</integer>
2694// CHECK-NEXT: <key>file</key><integer>0</integer>
2695// CHECK-NEXT: </dict>
2696// CHECK-NEXT: <dict>
2697// CHECK-NEXT: <key>line</key><integer>179</integer>
2698// CHECK-NEXT: <key>col</key><integer>3</integer>
2699// CHECK-NEXT: <key>file</key><integer>0</integer>
2700// CHECK-NEXT: </dict>
2701// CHECK-NEXT: </array>
2702// CHECK-NEXT: <key>end</key>
2703// CHECK-NEXT: <array>
2704// CHECK-NEXT: <dict>
2705// CHECK-NEXT: <key>line</key><integer>183</integer>
2706// CHECK-NEXT: <key>col</key><integer>3</integer>
2707// CHECK-NEXT: <key>file</key><integer>0</integer>
2708// CHECK-NEXT: </dict>
2709// CHECK-NEXT: <dict>
2710// CHECK-NEXT: <key>line</key><integer>183</integer>
2711// CHECK-NEXT: <key>col</key><integer>3</integer>
2712// CHECK-NEXT: <key>file</key><integer>0</integer>
2713// CHECK-NEXT: </dict>
2714// CHECK-NEXT: </array>
Gabor Horvathefec1632015-10-22 11:53:04 +00002715// CHECK-NEXT: </dict>
2716// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +00002717// CHECK-NEXT: </dict>
Gabor Horvathefec1632015-10-22 11:53:04 +00002718// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00002719// CHECK-NEXT: <key>kind</key><string>control</string>
2720// CHECK-NEXT: <key>edges</key>
Gabor Horvathefec1632015-10-22 11:53:04 +00002721// CHECK-NEXT: <array>
2722// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00002723// CHECK-NEXT: <key>start</key>
2724// CHECK-NEXT: <array>
2725// CHECK-NEXT: <dict>
2726// CHECK-NEXT: <key>line</key><integer>183</integer>
2727// CHECK-NEXT: <key>col</key><integer>3</integer>
2728// CHECK-NEXT: <key>file</key><integer>0</integer>
2729// CHECK-NEXT: </dict>
2730// CHECK-NEXT: <dict>
2731// CHECK-NEXT: <key>line</key><integer>183</integer>
2732// CHECK-NEXT: <key>col</key><integer>3</integer>
2733// CHECK-NEXT: <key>file</key><integer>0</integer>
2734// CHECK-NEXT: </dict>
2735// CHECK-NEXT: </array>
2736// CHECK-NEXT: <key>end</key>
2737// CHECK-NEXT: <array>
2738// CHECK-NEXT: <dict>
2739// CHECK-NEXT: <key>line</key><integer>183</integer>
2740// CHECK-NEXT: <key>col</key><integer>7</integer>
2741// CHECK-NEXT: <key>file</key><integer>0</integer>
2742// CHECK-NEXT: </dict>
2743// CHECK-NEXT: <dict>
2744// CHECK-NEXT: <key>line</key><integer>183</integer>
2745// CHECK-NEXT: <key>col</key><integer>7</integer>
2746// CHECK-NEXT: <key>file</key><integer>0</integer>
2747// CHECK-NEXT: </dict>
2748// CHECK-NEXT: </array>
Gabor Horvathefec1632015-10-22 11:53:04 +00002749// CHECK-NEXT: </dict>
2750// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +00002751// CHECK-NEXT: </dict>
2752// CHECK-NEXT: <dict>
2753// CHECK-NEXT: <key>kind</key><string>event</string>
2754// CHECK-NEXT: <key>location</key>
2755// CHECK-NEXT: <dict>
2756// CHECK-NEXT: <key>line</key><integer>183</integer>
2757// CHECK-NEXT: <key>col</key><integer>7</integer>
2758// CHECK-NEXT: <key>file</key><integer>0</integer>
2759// CHECK-NEXT: </dict>
2760// CHECK-NEXT: <key>ranges</key>
Gabor Horvathefec1632015-10-22 11:53:04 +00002761// CHECK-NEXT: <array>
Devin Coughlinab139a92016-12-05 16:28:47 +00002762// CHECK-NEXT: <array>
2763// CHECK-NEXT: <dict>
2764// CHECK-NEXT: <key>line</key><integer>183</integer>
2765// CHECK-NEXT: <key>col</key><integer>7</integer>
2766// CHECK-NEXT: <key>file</key><integer>0</integer>
2767// CHECK-NEXT: </dict>
2768// CHECK-NEXT: <dict>
2769// CHECK-NEXT: <key>line</key><integer>183</integer>
2770// CHECK-NEXT: <key>col</key><integer>7</integer>
2771// CHECK-NEXT: <key>file</key><integer>0</integer>
2772// CHECK-NEXT: </dict>
2773// CHECK-NEXT: </array>
Gabor Horvathefec1632015-10-22 11:53:04 +00002774// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +00002775// CHECK-NEXT: <key>depth</key><integer>0</integer>
2776// CHECK-NEXT: <key>extended_message</key>
2777// CHECK-NEXT: <string>Conversion from value of type &apos;ExceptionalArray&lt;NSString *&gt; *&apos; to incompatible type &apos;MutableArray&lt;NSNumber *&gt; *&apos;</string>
2778// CHECK-NEXT: <key>message</key>
2779// CHECK-NEXT: <string>Conversion from value of type &apos;ExceptionalArray&lt;NSString *&gt; *&apos; to incompatible type &apos;MutableArray&lt;NSNumber *&gt; *&apos;</string>
2780// CHECK-NEXT: </dict>
2781// CHECK-NEXT: </array>
2782// CHECK-NEXT: <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>
2783// CHECK-NEXT: <key>category</key><string>Core Foundation/Objective-C</string>
2784// CHECK-NEXT: <key>type</key><string>Generics</string>
2785// CHECK-NEXT: <key>check_name</key><string>core.DynamicTypePropagation</string>
2786// CHECK-NEXT: <!-- This hash is experimental and going to change! -->
2787// CHECK-NEXT: <key>issue_hash_content_of_line_in_context</key><string>f1b900572a63726a729714a765595c38</string>
2788// CHECK-NEXT: <key>issue_context_kind</key><string>function</string>
2789// CHECK-NEXT: <key>issue_context</key><string>genericSubtypeOfGeneric</string>
2790// CHECK-NEXT: <key>issue_hash_function_offset</key><string>5</string>
2791// CHECK-NEXT: <key>location</key>
2792// CHECK-NEXT: <dict>
2793// CHECK-NEXT: <key>line</key><integer>183</integer>
2794// CHECK-NEXT: <key>col</key><integer>7</integer>
2795// CHECK-NEXT: <key>file</key><integer>0</integer>
2796// CHECK-NEXT: </dict>
2797// CHECK-NEXT: </dict>
2798// CHECK-NEXT: <dict>
2799// CHECK-NEXT: <key>path</key>
2800// CHECK-NEXT: <array>
Gabor Horvathefec1632015-10-22 11:53:04 +00002801// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00002802// CHECK-NEXT: <key>kind</key><string>event</string>
2803// CHECK-NEXT: <key>location</key>
2804// CHECK-NEXT: <dict>
2805// CHECK-NEXT: <key>line</key><integer>179</integer>
2806// CHECK-NEXT: <key>col</key><integer>7</integer>
2807// CHECK-NEXT: <key>file</key><integer>0</integer>
2808// CHECK-NEXT: </dict>
2809// CHECK-NEXT: <key>ranges</key>
2810// CHECK-NEXT: <array>
2811// CHECK-NEXT: <array>
2812// CHECK-NEXT: <dict>
2813// CHECK-NEXT: <key>line</key><integer>179</integer>
2814// CHECK-NEXT: <key>col</key><integer>7</integer>
2815// CHECK-NEXT: <key>file</key><integer>0</integer>
2816// CHECK-NEXT: </dict>
2817// CHECK-NEXT: <dict>
2818// CHECK-NEXT: <key>line</key><integer>179</integer>
2819// CHECK-NEXT: <key>col</key><integer>7</integer>
2820// CHECK-NEXT: <key>file</key><integer>0</integer>
2821// CHECK-NEXT: </dict>
2822// CHECK-NEXT: </array>
2823// CHECK-NEXT: </array>
2824// CHECK-NEXT: <key>depth</key><integer>0</integer>
2825// CHECK-NEXT: <key>extended_message</key>
2826// CHECK-NEXT: <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>
2827// CHECK-NEXT: <key>message</key>
2828// CHECK-NEXT: <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 Horvathefec1632015-10-22 11:53:04 +00002829// CHECK-NEXT: </dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00002830// CHECK-NEXT: <dict>
2831// CHECK-NEXT: <key>kind</key><string>control</string>
2832// CHECK-NEXT: <key>edges</key>
Gabor Horvathefec1632015-10-22 11:53:04 +00002833// CHECK-NEXT: <array>
2834// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00002835// CHECK-NEXT: <key>start</key>
2836// CHECK-NEXT: <array>
2837// CHECK-NEXT: <dict>
2838// CHECK-NEXT: <key>line</key><integer>179</integer>
2839// CHECK-NEXT: <key>col</key><integer>3</integer>
2840// CHECK-NEXT: <key>file</key><integer>0</integer>
2841// CHECK-NEXT: </dict>
2842// CHECK-NEXT: <dict>
2843// CHECK-NEXT: <key>line</key><integer>179</integer>
2844// CHECK-NEXT: <key>col</key><integer>3</integer>
2845// CHECK-NEXT: <key>file</key><integer>0</integer>
2846// CHECK-NEXT: </dict>
2847// CHECK-NEXT: </array>
2848// CHECK-NEXT: <key>end</key>
2849// CHECK-NEXT: <array>
2850// CHECK-NEXT: <dict>
2851// CHECK-NEXT: <key>line</key><integer>185</integer>
2852// CHECK-NEXT: <key>col</key><integer>3</integer>
2853// CHECK-NEXT: <key>file</key><integer>0</integer>
2854// CHECK-NEXT: </dict>
2855// CHECK-NEXT: <dict>
2856// CHECK-NEXT: <key>line</key><integer>185</integer>
2857// CHECK-NEXT: <key>col</key><integer>3</integer>
2858// CHECK-NEXT: <key>file</key><integer>0</integer>
2859// CHECK-NEXT: </dict>
2860// CHECK-NEXT: </array>
Gabor Horvathefec1632015-10-22 11:53:04 +00002861// CHECK-NEXT: </dict>
2862// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +00002863// CHECK-NEXT: </dict>
Gabor Horvathefec1632015-10-22 11:53:04 +00002864// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00002865// CHECK-NEXT: <key>kind</key><string>event</string>
2866// CHECK-NEXT: <key>location</key>
2867// CHECK-NEXT: <dict>
2868// CHECK-NEXT: <key>line</key><integer>185</integer>
2869// CHECK-NEXT: <key>col</key><integer>3</integer>
2870// CHECK-NEXT: <key>file</key><integer>0</integer>
2871// CHECK-NEXT: </dict>
2872// CHECK-NEXT: <key>ranges</key>
Gabor Horvathefec1632015-10-22 11:53:04 +00002873// CHECK-NEXT: <array>
Devin Coughlinab139a92016-12-05 16:28:47 +00002874// CHECK-NEXT: <array>
2875// CHECK-NEXT: <dict>
2876// CHECK-NEXT: <key>line</key><integer>185</integer>
2877// CHECK-NEXT: <key>col</key><integer>17</integer>
2878// CHECK-NEXT: <key>file</key><integer>0</integer>
2879// CHECK-NEXT: </dict>
2880// CHECK-NEXT: <dict>
2881// CHECK-NEXT: <key>line</key><integer>185</integer>
2882// CHECK-NEXT: <key>col</key><integer>39</integer>
2883// CHECK-NEXT: <key>file</key><integer>0</integer>
2884// CHECK-NEXT: </dict>
2885// CHECK-NEXT: </array>
Gabor Horvathefec1632015-10-22 11:53:04 +00002886// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +00002887// CHECK-NEXT: <key>depth</key><integer>0</integer>
2888// CHECK-NEXT: <key>extended_message</key>
2889// CHECK-NEXT: <string>Conversion from value of type &apos;NSNumber *&apos; to incompatible type &apos;NSString *&apos;</string>
2890// CHECK-NEXT: <key>message</key>
2891// CHECK-NEXT: <string>Conversion from value of type &apos;NSNumber *&apos; to incompatible type &apos;NSString *&apos;</string>
2892// CHECK-NEXT: </dict>
2893// CHECK-NEXT: </array>
2894// CHECK-NEXT: <key>description</key><string>Conversion from value of type &apos;NSNumber *&apos; to incompatible type &apos;NSString *&apos;</string>
2895// CHECK-NEXT: <key>category</key><string>Core Foundation/Objective-C</string>
2896// CHECK-NEXT: <key>type</key><string>Generics</string>
2897// CHECK-NEXT: <key>check_name</key><string>core.DynamicTypePropagation</string>
2898// CHECK-NEXT: <!-- This hash is experimental and going to change! -->
2899// CHECK-NEXT: <key>issue_hash_content_of_line_in_context</key><string>cbb926c9de226a3eac85fb961a93f39a</string>
2900// CHECK-NEXT: <key>issue_context_kind</key><string>function</string>
2901// CHECK-NEXT: <key>issue_context</key><string>genericSubtypeOfGeneric</string>
2902// CHECK-NEXT: <key>issue_hash_function_offset</key><string>7</string>
2903// CHECK-NEXT: <key>location</key>
2904// CHECK-NEXT: <dict>
2905// CHECK-NEXT: <key>line</key><integer>185</integer>
2906// CHECK-NEXT: <key>col</key><integer>3</integer>
2907// CHECK-NEXT: <key>file</key><integer>0</integer>
2908// CHECK-NEXT: </dict>
2909// CHECK-NEXT: </dict>
2910// CHECK-NEXT: <dict>
2911// CHECK-NEXT: <key>path</key>
2912// CHECK-NEXT: <array>
2913// CHECK-NEXT: <dict>
2914// CHECK-NEXT: <key>kind</key><string>event</string>
2915// CHECK-NEXT: <key>location</key>
2916// CHECK-NEXT: <dict>
2917// CHECK-NEXT: <key>line</key><integer>191</integer>
2918// CHECK-NEXT: <key>col</key><integer>7</integer>
2919// CHECK-NEXT: <key>file</key><integer>0</integer>
2920// CHECK-NEXT: </dict>
2921// CHECK-NEXT: <key>ranges</key>
Gabor Horvathefec1632015-10-22 11:53:04 +00002922// CHECK-NEXT: <array>
Devin Coughlinab139a92016-12-05 16:28:47 +00002923// CHECK-NEXT: <array>
2924// CHECK-NEXT: <dict>
2925// CHECK-NEXT: <key>line</key><integer>191</integer>
2926// CHECK-NEXT: <key>col</key><integer>7</integer>
2927// CHECK-NEXT: <key>file</key><integer>0</integer>
2928// CHECK-NEXT: </dict>
2929// CHECK-NEXT: <dict>
2930// CHECK-NEXT: <key>line</key><integer>191</integer>
2931// CHECK-NEXT: <key>col</key><integer>7</integer>
2932// CHECK-NEXT: <key>file</key><integer>0</integer>
2933// CHECK-NEXT: </dict>
2934// CHECK-NEXT: </array>
Gabor Horvathefec1632015-10-22 11:53:04 +00002935// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +00002936// CHECK-NEXT: <key>depth</key><integer>0</integer>
2937// CHECK-NEXT: <key>extended_message</key>
2938// CHECK-NEXT: <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>
2939// CHECK-NEXT: <key>message</key>
2940// CHECK-NEXT: <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>
2941// CHECK-NEXT: </dict>
Gabor Horvathefec1632015-10-22 11:53:04 +00002942// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00002943// CHECK-NEXT: <key>kind</key><string>control</string>
2944// CHECK-NEXT: <key>edges</key>
Gabor Horvathefec1632015-10-22 11:53:04 +00002945// CHECK-NEXT: <array>
2946// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00002947// CHECK-NEXT: <key>start</key>
2948// CHECK-NEXT: <array>
2949// CHECK-NEXT: <dict>
2950// CHECK-NEXT: <key>line</key><integer>191</integer>
2951// CHECK-NEXT: <key>col</key><integer>3</integer>
2952// CHECK-NEXT: <key>file</key><integer>0</integer>
2953// CHECK-NEXT: </dict>
2954// CHECK-NEXT: <dict>
2955// CHECK-NEXT: <key>line</key><integer>191</integer>
2956// CHECK-NEXT: <key>col</key><integer>3</integer>
2957// CHECK-NEXT: <key>file</key><integer>0</integer>
2958// CHECK-NEXT: </dict>
2959// CHECK-NEXT: </array>
2960// CHECK-NEXT: <key>end</key>
2961// CHECK-NEXT: <array>
2962// CHECK-NEXT: <dict>
2963// CHECK-NEXT: <key>line</key><integer>195</integer>
2964// CHECK-NEXT: <key>col</key><integer>3</integer>
2965// CHECK-NEXT: <key>file</key><integer>0</integer>
2966// CHECK-NEXT: </dict>
2967// CHECK-NEXT: <dict>
2968// CHECK-NEXT: <key>line</key><integer>195</integer>
2969// CHECK-NEXT: <key>col</key><integer>3</integer>
2970// CHECK-NEXT: <key>file</key><integer>0</integer>
2971// CHECK-NEXT: </dict>
2972// CHECK-NEXT: </array>
Gabor Horvathefec1632015-10-22 11:53:04 +00002973// CHECK-NEXT: </dict>
2974// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +00002975// CHECK-NEXT: </dict>
Gabor Horvathefec1632015-10-22 11:53:04 +00002976// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00002977// CHECK-NEXT: <key>kind</key><string>control</string>
2978// CHECK-NEXT: <key>edges</key>
Gabor Horvathefec1632015-10-22 11:53:04 +00002979// CHECK-NEXT: <array>
2980// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00002981// CHECK-NEXT: <key>start</key>
2982// CHECK-NEXT: <array>
2983// CHECK-NEXT: <dict>
2984// CHECK-NEXT: <key>line</key><integer>195</integer>
2985// CHECK-NEXT: <key>col</key><integer>3</integer>
2986// CHECK-NEXT: <key>file</key><integer>0</integer>
2987// CHECK-NEXT: </dict>
2988// CHECK-NEXT: <dict>
2989// CHECK-NEXT: <key>line</key><integer>195</integer>
2990// CHECK-NEXT: <key>col</key><integer>3</integer>
2991// CHECK-NEXT: <key>file</key><integer>0</integer>
2992// CHECK-NEXT: </dict>
2993// CHECK-NEXT: </array>
2994// CHECK-NEXT: <key>end</key>
2995// CHECK-NEXT: <array>
2996// CHECK-NEXT: <dict>
2997// CHECK-NEXT: <key>line</key><integer>195</integer>
2998// CHECK-NEXT: <key>col</key><integer>7</integer>
2999// CHECK-NEXT: <key>file</key><integer>0</integer>
3000// CHECK-NEXT: </dict>
3001// CHECK-NEXT: <dict>
3002// CHECK-NEXT: <key>line</key><integer>195</integer>
3003// CHECK-NEXT: <key>col</key><integer>7</integer>
3004// CHECK-NEXT: <key>file</key><integer>0</integer>
3005// CHECK-NEXT: </dict>
3006// CHECK-NEXT: </array>
Gabor Horvathefec1632015-10-22 11:53:04 +00003007// CHECK-NEXT: </dict>
3008// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +00003009// CHECK-NEXT: </dict>
3010// CHECK-NEXT: <dict>
3011// CHECK-NEXT: <key>kind</key><string>event</string>
3012// CHECK-NEXT: <key>location</key>
3013// CHECK-NEXT: <dict>
3014// CHECK-NEXT: <key>line</key><integer>195</integer>
3015// CHECK-NEXT: <key>col</key><integer>7</integer>
3016// CHECK-NEXT: <key>file</key><integer>0</integer>
3017// CHECK-NEXT: </dict>
3018// CHECK-NEXT: <key>ranges</key>
Gabor Horvathefec1632015-10-22 11:53:04 +00003019// CHECK-NEXT: <array>
Devin Coughlinab139a92016-12-05 16:28:47 +00003020// CHECK-NEXT: <array>
3021// CHECK-NEXT: <dict>
3022// CHECK-NEXT: <key>line</key><integer>195</integer>
3023// CHECK-NEXT: <key>col</key><integer>7</integer>
3024// CHECK-NEXT: <key>file</key><integer>0</integer>
3025// CHECK-NEXT: </dict>
3026// CHECK-NEXT: <dict>
3027// CHECK-NEXT: <key>line</key><integer>195</integer>
3028// CHECK-NEXT: <key>col</key><integer>7</integer>
3029// CHECK-NEXT: <key>file</key><integer>0</integer>
3030// CHECK-NEXT: </dict>
3031// CHECK-NEXT: </array>
Gabor Horvathefec1632015-10-22 11:53:04 +00003032// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +00003033// CHECK-NEXT: <key>depth</key><integer>0</integer>
3034// CHECK-NEXT: <key>extended_message</key>
3035// CHECK-NEXT: <string>Conversion from value of type &apos;ExceptionalArray&lt;NSString *&gt; *&apos; to incompatible type &apos;MutableArray&lt;NSNumber *&gt; *&apos;</string>
3036// CHECK-NEXT: <key>message</key>
3037// CHECK-NEXT: <string>Conversion from value of type &apos;ExceptionalArray&lt;NSString *&gt; *&apos; to incompatible type &apos;MutableArray&lt;NSNumber *&gt; *&apos;</string>
3038// CHECK-NEXT: </dict>
3039// CHECK-NEXT: </array>
3040// CHECK-NEXT: <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>
3041// CHECK-NEXT: <key>category</key><string>Core Foundation/Objective-C</string>
3042// CHECK-NEXT: <key>type</key><string>Generics</string>
3043// CHECK-NEXT: <key>check_name</key><string>core.DynamicTypePropagation</string>
3044// CHECK-NEXT: <!-- This hash is experimental and going to change! -->
3045// CHECK-NEXT: <key>issue_hash_content_of_line_in_context</key><string>b6ee3b22fbad45f213b4bf14bec7eeaf</string>
3046// CHECK-NEXT: <key>issue_context_kind</key><string>function</string>
3047// CHECK-NEXT: <key>issue_context</key><string>genericSubtypeOfGenericReverse</string>
3048// CHECK-NEXT: <key>issue_hash_function_offset</key><string>5</string>
3049// CHECK-NEXT: <key>location</key>
3050// CHECK-NEXT: <dict>
3051// CHECK-NEXT: <key>line</key><integer>195</integer>
3052// CHECK-NEXT: <key>col</key><integer>7</integer>
3053// CHECK-NEXT: <key>file</key><integer>0</integer>
3054// CHECK-NEXT: </dict>
3055// CHECK-NEXT: </dict>
3056// CHECK-NEXT: <dict>
3057// CHECK-NEXT: <key>path</key>
3058// CHECK-NEXT: <array>
Gabor Horvathefec1632015-10-22 11:53:04 +00003059// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00003060// CHECK-NEXT: <key>kind</key><string>event</string>
3061// CHECK-NEXT: <key>location</key>
3062// CHECK-NEXT: <dict>
3063// CHECK-NEXT: <key>line</key><integer>191</integer>
3064// CHECK-NEXT: <key>col</key><integer>7</integer>
3065// CHECK-NEXT: <key>file</key><integer>0</integer>
3066// CHECK-NEXT: </dict>
3067// CHECK-NEXT: <key>ranges</key>
3068// CHECK-NEXT: <array>
3069// CHECK-NEXT: <array>
3070// CHECK-NEXT: <dict>
3071// CHECK-NEXT: <key>line</key><integer>191</integer>
3072// CHECK-NEXT: <key>col</key><integer>7</integer>
3073// CHECK-NEXT: <key>file</key><integer>0</integer>
3074// CHECK-NEXT: </dict>
3075// CHECK-NEXT: <dict>
3076// CHECK-NEXT: <key>line</key><integer>191</integer>
3077// CHECK-NEXT: <key>col</key><integer>7</integer>
3078// CHECK-NEXT: <key>file</key><integer>0</integer>
3079// CHECK-NEXT: </dict>
3080// CHECK-NEXT: </array>
3081// CHECK-NEXT: </array>
3082// CHECK-NEXT: <key>depth</key><integer>0</integer>
3083// CHECK-NEXT: <key>extended_message</key>
3084// CHECK-NEXT: <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>
3085// CHECK-NEXT: <key>message</key>
3086// CHECK-NEXT: <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 Horvathefec1632015-10-22 11:53:04 +00003087// CHECK-NEXT: </dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00003088// CHECK-NEXT: <dict>
3089// CHECK-NEXT: <key>kind</key><string>control</string>
3090// CHECK-NEXT: <key>edges</key>
Gabor Horvathefec1632015-10-22 11:53:04 +00003091// CHECK-NEXT: <array>
3092// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00003093// CHECK-NEXT: <key>start</key>
3094// CHECK-NEXT: <array>
3095// CHECK-NEXT: <dict>
3096// CHECK-NEXT: <key>line</key><integer>191</integer>
3097// CHECK-NEXT: <key>col</key><integer>3</integer>
3098// CHECK-NEXT: <key>file</key><integer>0</integer>
3099// CHECK-NEXT: </dict>
3100// CHECK-NEXT: <dict>
3101// CHECK-NEXT: <key>line</key><integer>191</integer>
3102// CHECK-NEXT: <key>col</key><integer>3</integer>
3103// CHECK-NEXT: <key>file</key><integer>0</integer>
3104// CHECK-NEXT: </dict>
3105// CHECK-NEXT: </array>
3106// CHECK-NEXT: <key>end</key>
3107// CHECK-NEXT: <array>
3108// CHECK-NEXT: <dict>
3109// CHECK-NEXT: <key>line</key><integer>197</integer>
3110// CHECK-NEXT: <key>col</key><integer>2</integer>
3111// CHECK-NEXT: <key>file</key><integer>0</integer>
3112// CHECK-NEXT: </dict>
3113// CHECK-NEXT: <dict>
3114// CHECK-NEXT: <key>line</key><integer>197</integer>
3115// CHECK-NEXT: <key>col</key><integer>2</integer>
3116// CHECK-NEXT: <key>file</key><integer>0</integer>
3117// CHECK-NEXT: </dict>
3118// CHECK-NEXT: </array>
Gabor Horvathefec1632015-10-22 11:53:04 +00003119// CHECK-NEXT: </dict>
3120// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +00003121// CHECK-NEXT: </dict>
Gabor Horvathefec1632015-10-22 11:53:04 +00003122// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00003123// CHECK-NEXT: <key>kind</key><string>event</string>
3124// CHECK-NEXT: <key>location</key>
3125// CHECK-NEXT: <dict>
3126// CHECK-NEXT: <key>line</key><integer>197</integer>
3127// CHECK-NEXT: <key>col</key><integer>2</integer>
3128// CHECK-NEXT: <key>file</key><integer>0</integer>
3129// CHECK-NEXT: </dict>
3130// CHECK-NEXT: <key>ranges</key>
Gabor Horvathefec1632015-10-22 11:53:04 +00003131// CHECK-NEXT: <array>
Devin Coughlinab139a92016-12-05 16:28:47 +00003132// CHECK-NEXT: <array>
3133// CHECK-NEXT: <dict>
3134// CHECK-NEXT: <key>line</key><integer>197</integer>
3135// CHECK-NEXT: <key>col</key><integer>16</integer>
3136// CHECK-NEXT: <key>file</key><integer>0</integer>
3137// CHECK-NEXT: </dict>
3138// CHECK-NEXT: <dict>
3139// CHECK-NEXT: <key>line</key><integer>197</integer>
3140// CHECK-NEXT: <key>col</key><integer>38</integer>
3141// CHECK-NEXT: <key>file</key><integer>0</integer>
3142// CHECK-NEXT: </dict>
3143// CHECK-NEXT: </array>
Gabor Horvathefec1632015-10-22 11:53:04 +00003144// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +00003145// CHECK-NEXT: <key>depth</key><integer>0</integer>
3146// CHECK-NEXT: <key>extended_message</key>
3147// CHECK-NEXT: <string>Conversion from value of type &apos;NSNumber *&apos; to incompatible type &apos;NSString *&apos;</string>
3148// CHECK-NEXT: <key>message</key>
3149// CHECK-NEXT: <string>Conversion from value of type &apos;NSNumber *&apos; to incompatible type &apos;NSString *&apos;</string>
3150// CHECK-NEXT: </dict>
3151// CHECK-NEXT: </array>
3152// CHECK-NEXT: <key>description</key><string>Conversion from value of type &apos;NSNumber *&apos; to incompatible type &apos;NSString *&apos;</string>
3153// CHECK-NEXT: <key>category</key><string>Core Foundation/Objective-C</string>
3154// CHECK-NEXT: <key>type</key><string>Generics</string>
3155// CHECK-NEXT: <key>check_name</key><string>core.DynamicTypePropagation</string>
3156// CHECK-NEXT: <!-- This hash is experimental and going to change! -->
3157// CHECK-NEXT: <key>issue_hash_content_of_line_in_context</key><string>6561f05506a8ceca3afc79fc59912b94</string>
3158// CHECK-NEXT: <key>issue_context_kind</key><string>function</string>
3159// CHECK-NEXT: <key>issue_context</key><string>genericSubtypeOfGenericReverse</string>
3160// CHECK-NEXT: <key>issue_hash_function_offset</key><string>7</string>
3161// CHECK-NEXT: <key>location</key>
3162// CHECK-NEXT: <dict>
3163// CHECK-NEXT: <key>line</key><integer>197</integer>
3164// CHECK-NEXT: <key>col</key><integer>2</integer>
3165// CHECK-NEXT: <key>file</key><integer>0</integer>
3166// CHECK-NEXT: </dict>
3167// CHECK-NEXT: </dict>
3168// CHECK-NEXT: <dict>
3169// CHECK-NEXT: <key>path</key>
3170// CHECK-NEXT: <array>
3171// CHECK-NEXT: <dict>
3172// CHECK-NEXT: <key>kind</key><string>event</string>
3173// CHECK-NEXT: <key>location</key>
3174// CHECK-NEXT: <dict>
3175// CHECK-NEXT: <key>line</key><integer>203</integer>
3176// CHECK-NEXT: <key>col</key><integer>20</integer>
3177// CHECK-NEXT: <key>file</key><integer>0</integer>
3178// CHECK-NEXT: </dict>
3179// CHECK-NEXT: <key>ranges</key>
Gabor Horvathefec1632015-10-22 11:53:04 +00003180// CHECK-NEXT: <array>
Devin Coughlinab139a92016-12-05 16:28:47 +00003181// CHECK-NEXT: <array>
3182// CHECK-NEXT: <dict>
3183// CHECK-NEXT: <key>line</key><integer>203</integer>
3184// CHECK-NEXT: <key>col</key><integer>20</integer>
3185// CHECK-NEXT: <key>file</key><integer>0</integer>
3186// CHECK-NEXT: </dict>
3187// CHECK-NEXT: <dict>
3188// CHECK-NEXT: <key>line</key><integer>203</integer>
3189// CHECK-NEXT: <key>col</key><integer>20</integer>
3190// CHECK-NEXT: <key>file</key><integer>0</integer>
3191// CHECK-NEXT: </dict>
3192// CHECK-NEXT: </array>
Gabor Horvathefec1632015-10-22 11:53:04 +00003193// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +00003194// CHECK-NEXT: <key>depth</key><integer>0</integer>
3195// CHECK-NEXT: <key>extended_message</key>
3196// CHECK-NEXT: <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>
3197// CHECK-NEXT: <key>message</key>
3198// CHECK-NEXT: <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>
3199// CHECK-NEXT: </dict>
Gabor Horvathefec1632015-10-22 11:53:04 +00003200// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00003201// CHECK-NEXT: <key>kind</key><string>control</string>
3202// CHECK-NEXT: <key>edges</key>
Gabor Horvathefec1632015-10-22 11:53:04 +00003203// CHECK-NEXT: <array>
3204// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00003205// CHECK-NEXT: <key>start</key>
3206// CHECK-NEXT: <array>
3207// CHECK-NEXT: <dict>
3208// CHECK-NEXT: <key>line</key><integer>203</integer>
3209// CHECK-NEXT: <key>col</key><integer>3</integer>
3210// CHECK-NEXT: <key>file</key><integer>0</integer>
3211// CHECK-NEXT: </dict>
3212// CHECK-NEXT: <dict>
3213// CHECK-NEXT: <key>line</key><integer>203</integer>
3214// CHECK-NEXT: <key>col</key><integer>18</integer>
3215// CHECK-NEXT: <key>file</key><integer>0</integer>
3216// CHECK-NEXT: </dict>
3217// CHECK-NEXT: </array>
3218// CHECK-NEXT: <key>end</key>
3219// CHECK-NEXT: <array>
3220// CHECK-NEXT: <dict>
3221// CHECK-NEXT: <key>line</key><integer>204</integer>
3222// CHECK-NEXT: <key>col</key><integer>3</integer>
3223// CHECK-NEXT: <key>file</key><integer>0</integer>
3224// CHECK-NEXT: </dict>
3225// CHECK-NEXT: <dict>
3226// CHECK-NEXT: <key>line</key><integer>204</integer>
3227// CHECK-NEXT: <key>col</key><integer>25</integer>
3228// CHECK-NEXT: <key>file</key><integer>0</integer>
3229// CHECK-NEXT: </dict>
3230// CHECK-NEXT: </array>
Gabor Horvathefec1632015-10-22 11:53:04 +00003231// CHECK-NEXT: </dict>
3232// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +00003233// CHECK-NEXT: </dict>
Gabor Horvathefec1632015-10-22 11:53:04 +00003234// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00003235// CHECK-NEXT: <key>kind</key><string>control</string>
3236// CHECK-NEXT: <key>edges</key>
Gabor Horvathefec1632015-10-22 11:53:04 +00003237// CHECK-NEXT: <array>
3238// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00003239// CHECK-NEXT: <key>start</key>
3240// CHECK-NEXT: <array>
3241// CHECK-NEXT: <dict>
3242// CHECK-NEXT: <key>line</key><integer>204</integer>
3243// CHECK-NEXT: <key>col</key><integer>3</integer>
3244// CHECK-NEXT: <key>file</key><integer>0</integer>
3245// CHECK-NEXT: </dict>
3246// CHECK-NEXT: <dict>
3247// CHECK-NEXT: <key>line</key><integer>204</integer>
3248// CHECK-NEXT: <key>col</key><integer>25</integer>
3249// CHECK-NEXT: <key>file</key><integer>0</integer>
3250// CHECK-NEXT: </dict>
3251// CHECK-NEXT: </array>
3252// CHECK-NEXT: <key>end</key>
3253// CHECK-NEXT: <array>
3254// CHECK-NEXT: <dict>
3255// CHECK-NEXT: <key>line</key><integer>204</integer>
3256// CHECK-NEXT: <key>col</key><integer>27</integer>
3257// CHECK-NEXT: <key>file</key><integer>0</integer>
3258// CHECK-NEXT: </dict>
3259// CHECK-NEXT: <dict>
3260// CHECK-NEXT: <key>line</key><integer>204</integer>
3261// CHECK-NEXT: <key>col</key><integer>27</integer>
3262// CHECK-NEXT: <key>file</key><integer>0</integer>
3263// CHECK-NEXT: </dict>
3264// CHECK-NEXT: </array>
Gabor Horvathefec1632015-10-22 11:53:04 +00003265// CHECK-NEXT: </dict>
3266// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +00003267// CHECK-NEXT: </dict>
3268// CHECK-NEXT: <dict>
3269// CHECK-NEXT: <key>kind</key><string>event</string>
3270// CHECK-NEXT: <key>location</key>
3271// CHECK-NEXT: <dict>
3272// CHECK-NEXT: <key>line</key><integer>204</integer>
3273// CHECK-NEXT: <key>col</key><integer>27</integer>
3274// CHECK-NEXT: <key>file</key><integer>0</integer>
3275// CHECK-NEXT: </dict>
3276// CHECK-NEXT: <key>ranges</key>
Gabor Horvathefec1632015-10-22 11:53:04 +00003277// CHECK-NEXT: <array>
Devin Coughlinab139a92016-12-05 16:28:47 +00003278// CHECK-NEXT: <array>
3279// CHECK-NEXT: <dict>
3280// CHECK-NEXT: <key>line</key><integer>204</integer>
3281// CHECK-NEXT: <key>col</key><integer>27</integer>
3282// CHECK-NEXT: <key>file</key><integer>0</integer>
3283// CHECK-NEXT: </dict>
3284// CHECK-NEXT: <dict>
3285// CHECK-NEXT: <key>line</key><integer>204</integer>
3286// CHECK-NEXT: <key>col</key><integer>27</integer>
3287// CHECK-NEXT: <key>file</key><integer>0</integer>
3288// CHECK-NEXT: </dict>
3289// CHECK-NEXT: </array>
Gabor Horvathefec1632015-10-22 11:53:04 +00003290// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +00003291// CHECK-NEXT: <key>depth</key><integer>0</integer>
3292// CHECK-NEXT: <key>extended_message</key>
3293// CHECK-NEXT: <string>Conversion from value of type &apos;MutableArray&lt;NSString *&gt; *&apos; to incompatible type &apos;MutableArray&lt;NSMutableString *&gt; *&apos;</string>
3294// CHECK-NEXT: <key>message</key>
3295// CHECK-NEXT: <string>Conversion from value of type &apos;MutableArray&lt;NSString *&gt; *&apos; to incompatible type &apos;MutableArray&lt;NSMutableString *&gt; *&apos;</string>
3296// CHECK-NEXT: </dict>
3297// CHECK-NEXT: </array>
3298// CHECK-NEXT: <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>
3299// CHECK-NEXT: <key>category</key><string>Core Foundation/Objective-C</string>
3300// CHECK-NEXT: <key>type</key><string>Generics</string>
3301// CHECK-NEXT: <key>check_name</key><string>core.DynamicTypePropagation</string>
3302// CHECK-NEXT: <!-- This hash is experimental and going to change! -->
3303// CHECK-NEXT: <key>issue_hash_content_of_line_in_context</key><string>6aab15d40b39ec0a6b749e561d486e6a</string>
3304// CHECK-NEXT: <key>issue_context_kind</key><string>function</string>
3305// CHECK-NEXT: <key>issue_context</key><string>inferenceFromAPI</string>
3306// CHECK-NEXT: <key>issue_hash_function_offset</key><string>4</string>
3307// CHECK-NEXT: <key>location</key>
3308// CHECK-NEXT: <dict>
3309// CHECK-NEXT: <key>line</key><integer>204</integer>
3310// CHECK-NEXT: <key>col</key><integer>27</integer>
3311// CHECK-NEXT: <key>file</key><integer>0</integer>
3312// CHECK-NEXT: </dict>
3313// CHECK-NEXT: </dict>
3314// CHECK-NEXT: <dict>
3315// CHECK-NEXT: <key>path</key>
3316// CHECK-NEXT: <array>
3317// CHECK-NEXT: <dict>
3318// CHECK-NEXT: <key>kind</key><string>event</string>
3319// CHECK-NEXT: <key>location</key>
3320// CHECK-NEXT: <dict>
3321// CHECK-NEXT: <key>line</key><integer>208</integer>
3322// CHECK-NEXT: <key>col</key><integer>27</integer>
3323// CHECK-NEXT: <key>file</key><integer>0</integer>
3324// CHECK-NEXT: </dict>
3325// CHECK-NEXT: <key>ranges</key>
Gabor Horvathefec1632015-10-22 11:53:04 +00003326// CHECK-NEXT: <array>
Devin Coughlinab139a92016-12-05 16:28:47 +00003327// CHECK-NEXT: <array>
3328// CHECK-NEXT: <dict>
3329// CHECK-NEXT: <key>line</key><integer>208</integer>
3330// CHECK-NEXT: <key>col</key><integer>27</integer>
3331// CHECK-NEXT: <key>file</key><integer>0</integer>
3332// CHECK-NEXT: </dict>
3333// CHECK-NEXT: <dict>
3334// CHECK-NEXT: <key>line</key><integer>208</integer>
3335// CHECK-NEXT: <key>col</key><integer>27</integer>
3336// CHECK-NEXT: <key>file</key><integer>0</integer>
3337// CHECK-NEXT: </dict>
3338// CHECK-NEXT: </array>
Gabor Horvathefec1632015-10-22 11:53:04 +00003339// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +00003340// CHECK-NEXT: <key>depth</key><integer>0</integer>
3341// CHECK-NEXT: <key>extended_message</key>
3342// CHECK-NEXT: <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>
3343// CHECK-NEXT: <key>message</key>
3344// CHECK-NEXT: <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>
3345// CHECK-NEXT: </dict>
Gabor Horvathefec1632015-10-22 11:53:04 +00003346// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00003347// CHECK-NEXT: <key>kind</key><string>control</string>
3348// CHECK-NEXT: <key>edges</key>
Gabor Horvathefec1632015-10-22 11:53:04 +00003349// CHECK-NEXT: <array>
3350// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00003351// CHECK-NEXT: <key>start</key>
3352// CHECK-NEXT: <array>
3353// CHECK-NEXT: <dict>
3354// CHECK-NEXT: <key>line</key><integer>208</integer>
3355// CHECK-NEXT: <key>col</key><integer>3</integer>
3356// CHECK-NEXT: <key>file</key><integer>0</integer>
3357// CHECK-NEXT: </dict>
3358// CHECK-NEXT: <dict>
3359// CHECK-NEXT: <key>line</key><integer>208</integer>
3360// CHECK-NEXT: <key>col</key><integer>25</integer>
3361// CHECK-NEXT: <key>file</key><integer>0</integer>
3362// CHECK-NEXT: </dict>
3363// CHECK-NEXT: </array>
3364// CHECK-NEXT: <key>end</key>
3365// CHECK-NEXT: <array>
3366// CHECK-NEXT: <dict>
3367// CHECK-NEXT: <key>line</key><integer>209</integer>
3368// CHECK-NEXT: <key>col</key><integer>3</integer>
3369// CHECK-NEXT: <key>file</key><integer>0</integer>
3370// CHECK-NEXT: </dict>
3371// CHECK-NEXT: <dict>
3372// CHECK-NEXT: <key>line</key><integer>209</integer>
3373// CHECK-NEXT: <key>col</key><integer>18</integer>
3374// CHECK-NEXT: <key>file</key><integer>0</integer>
3375// CHECK-NEXT: </dict>
3376// CHECK-NEXT: </array>
Gabor Horvathefec1632015-10-22 11:53:04 +00003377// CHECK-NEXT: </dict>
3378// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +00003379// CHECK-NEXT: </dict>
Gabor Horvathefec1632015-10-22 11:53:04 +00003380// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00003381// CHECK-NEXT: <key>kind</key><string>control</string>
3382// CHECK-NEXT: <key>edges</key>
Gabor Horvathefec1632015-10-22 11:53:04 +00003383// CHECK-NEXT: <array>
3384// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00003385// CHECK-NEXT: <key>start</key>
3386// CHECK-NEXT: <array>
3387// CHECK-NEXT: <dict>
3388// CHECK-NEXT: <key>line</key><integer>209</integer>
3389// CHECK-NEXT: <key>col</key><integer>3</integer>
3390// CHECK-NEXT: <key>file</key><integer>0</integer>
3391// CHECK-NEXT: </dict>
3392// CHECK-NEXT: <dict>
3393// CHECK-NEXT: <key>line</key><integer>209</integer>
3394// CHECK-NEXT: <key>col</key><integer>18</integer>
3395// CHECK-NEXT: <key>file</key><integer>0</integer>
3396// CHECK-NEXT: </dict>
3397// CHECK-NEXT: </array>
3398// CHECK-NEXT: <key>end</key>
3399// CHECK-NEXT: <array>
3400// CHECK-NEXT: <dict>
3401// CHECK-NEXT: <key>line</key><integer>209</integer>
3402// CHECK-NEXT: <key>col</key><integer>20</integer>
3403// CHECK-NEXT: <key>file</key><integer>0</integer>
3404// CHECK-NEXT: </dict>
3405// CHECK-NEXT: <dict>
3406// CHECK-NEXT: <key>line</key><integer>209</integer>
3407// CHECK-NEXT: <key>col</key><integer>20</integer>
3408// CHECK-NEXT: <key>file</key><integer>0</integer>
3409// CHECK-NEXT: </dict>
3410// CHECK-NEXT: </array>
Gabor Horvathefec1632015-10-22 11:53:04 +00003411// CHECK-NEXT: </dict>
3412// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +00003413// CHECK-NEXT: </dict>
3414// CHECK-NEXT: <dict>
3415// CHECK-NEXT: <key>kind</key><string>event</string>
3416// CHECK-NEXT: <key>location</key>
3417// CHECK-NEXT: <dict>
3418// CHECK-NEXT: <key>line</key><integer>209</integer>
3419// CHECK-NEXT: <key>col</key><integer>20</integer>
3420// CHECK-NEXT: <key>file</key><integer>0</integer>
3421// CHECK-NEXT: </dict>
3422// CHECK-NEXT: <key>ranges</key>
Gabor Horvathefec1632015-10-22 11:53:04 +00003423// CHECK-NEXT: <array>
Devin Coughlinab139a92016-12-05 16:28:47 +00003424// CHECK-NEXT: <array>
3425// CHECK-NEXT: <dict>
3426// CHECK-NEXT: <key>line</key><integer>209</integer>
3427// CHECK-NEXT: <key>col</key><integer>20</integer>
3428// CHECK-NEXT: <key>file</key><integer>0</integer>
3429// CHECK-NEXT: </dict>
3430// CHECK-NEXT: <dict>
3431// CHECK-NEXT: <key>line</key><integer>209</integer>
3432// CHECK-NEXT: <key>col</key><integer>20</integer>
3433// CHECK-NEXT: <key>file</key><integer>0</integer>
3434// CHECK-NEXT: </dict>
3435// CHECK-NEXT: </array>
Gabor Horvathefec1632015-10-22 11:53:04 +00003436// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +00003437// CHECK-NEXT: <key>depth</key><integer>0</integer>
3438// CHECK-NEXT: <key>extended_message</key>
3439// CHECK-NEXT: <string>Conversion from value of type &apos;MutableArray&lt;NSMutableString *&gt; *&apos; to incompatible type &apos;MutableArray&lt;NSString *&gt; *&apos;</string>
3440// CHECK-NEXT: <key>message</key>
3441// CHECK-NEXT: <string>Conversion from value of type &apos;MutableArray&lt;NSMutableString *&gt; *&apos; to incompatible type &apos;MutableArray&lt;NSString *&gt; *&apos;</string>
3442// CHECK-NEXT: </dict>
3443// CHECK-NEXT: </array>
3444// CHECK-NEXT: <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>
3445// CHECK-NEXT: <key>category</key><string>Core Foundation/Objective-C</string>
3446// CHECK-NEXT: <key>type</key><string>Generics</string>
3447// CHECK-NEXT: <key>check_name</key><string>core.DynamicTypePropagation</string>
3448// CHECK-NEXT: <!-- This hash is experimental and going to change! -->
3449// CHECK-NEXT: <key>issue_hash_content_of_line_in_context</key><string>bd1da1b7775323773555e5d5c122661f</string>
3450// CHECK-NEXT: <key>issue_context_kind</key><string>function</string>
3451// CHECK-NEXT: <key>issue_context</key><string>inferenceFromAPI2</string>
3452// CHECK-NEXT: <key>issue_hash_function_offset</key><string>2</string>
3453// CHECK-NEXT: <key>location</key>
3454// CHECK-NEXT: <dict>
3455// CHECK-NEXT: <key>line</key><integer>209</integer>
3456// CHECK-NEXT: <key>col</key><integer>20</integer>
3457// CHECK-NEXT: <key>file</key><integer>0</integer>
3458// CHECK-NEXT: </dict>
3459// CHECK-NEXT: </dict>
3460// CHECK-NEXT: <dict>
3461// CHECK-NEXT: <key>path</key>
3462// CHECK-NEXT: <array>
3463// CHECK-NEXT: <dict>
3464// CHECK-NEXT: <key>kind</key><string>event</string>
3465// CHECK-NEXT: <key>location</key>
3466// CHECK-NEXT: <dict>
3467// CHECK-NEXT: <key>line</key><integer>213</integer>
3468// CHECK-NEXT: <key>col</key><integer>27</integer>
3469// CHECK-NEXT: <key>file</key><integer>0</integer>
3470// CHECK-NEXT: </dict>
3471// CHECK-NEXT: <key>ranges</key>
Gabor Horvathefec1632015-10-22 11:53:04 +00003472// CHECK-NEXT: <array>
Devin Coughlinab139a92016-12-05 16:28:47 +00003473// CHECK-NEXT: <array>
3474// CHECK-NEXT: <dict>
3475// CHECK-NEXT: <key>line</key><integer>213</integer>
3476// CHECK-NEXT: <key>col</key><integer>27</integer>
3477// CHECK-NEXT: <key>file</key><integer>0</integer>
3478// CHECK-NEXT: </dict>
3479// CHECK-NEXT: <dict>
3480// CHECK-NEXT: <key>line</key><integer>213</integer>
3481// CHECK-NEXT: <key>col</key><integer>27</integer>
3482// CHECK-NEXT: <key>file</key><integer>0</integer>
3483// CHECK-NEXT: </dict>
3484// CHECK-NEXT: </array>
Gabor Horvathefec1632015-10-22 11:53:04 +00003485// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +00003486// CHECK-NEXT: <key>depth</key><integer>0</integer>
3487// CHECK-NEXT: <key>extended_message</key>
3488// CHECK-NEXT: <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>
3489// CHECK-NEXT: <key>message</key>
3490// CHECK-NEXT: <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>
3491// CHECK-NEXT: </dict>
Gabor Horvathefec1632015-10-22 11:53:04 +00003492// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00003493// CHECK-NEXT: <key>kind</key><string>control</string>
3494// CHECK-NEXT: <key>edges</key>
Gabor Horvathefec1632015-10-22 11:53:04 +00003495// CHECK-NEXT: <array>
3496// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00003497// CHECK-NEXT: <key>start</key>
3498// CHECK-NEXT: <array>
3499// CHECK-NEXT: <dict>
3500// CHECK-NEXT: <key>line</key><integer>213</integer>
3501// CHECK-NEXT: <key>col</key><integer>3</integer>
3502// CHECK-NEXT: <key>file</key><integer>0</integer>
3503// CHECK-NEXT: </dict>
3504// CHECK-NEXT: <dict>
3505// CHECK-NEXT: <key>line</key><integer>213</integer>
3506// CHECK-NEXT: <key>col</key><integer>25</integer>
3507// CHECK-NEXT: <key>file</key><integer>0</integer>
3508// CHECK-NEXT: </dict>
3509// CHECK-NEXT: </array>
3510// CHECK-NEXT: <key>end</key>
3511// CHECK-NEXT: <array>
3512// CHECK-NEXT: <dict>
3513// CHECK-NEXT: <key>line</key><integer>214</integer>
3514// CHECK-NEXT: <key>col</key><integer>3</integer>
3515// CHECK-NEXT: <key>file</key><integer>0</integer>
3516// CHECK-NEXT: </dict>
3517// CHECK-NEXT: <dict>
3518// CHECK-NEXT: <key>line</key><integer>214</integer>
3519// CHECK-NEXT: <key>col</key><integer>18</integer>
3520// CHECK-NEXT: <key>file</key><integer>0</integer>
3521// CHECK-NEXT: </dict>
3522// CHECK-NEXT: </array>
Gabor Horvathefec1632015-10-22 11:53:04 +00003523// CHECK-NEXT: </dict>
3524// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +00003525// CHECK-NEXT: </dict>
Gabor Horvathefec1632015-10-22 11:53:04 +00003526// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00003527// CHECK-NEXT: <key>kind</key><string>control</string>
3528// CHECK-NEXT: <key>edges</key>
Gabor Horvathefec1632015-10-22 11:53:04 +00003529// CHECK-NEXT: <array>
3530// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00003531// CHECK-NEXT: <key>start</key>
3532// CHECK-NEXT: <array>
3533// CHECK-NEXT: <dict>
3534// CHECK-NEXT: <key>line</key><integer>214</integer>
3535// CHECK-NEXT: <key>col</key><integer>3</integer>
3536// CHECK-NEXT: <key>file</key><integer>0</integer>
3537// CHECK-NEXT: </dict>
3538// CHECK-NEXT: <dict>
3539// CHECK-NEXT: <key>line</key><integer>214</integer>
3540// CHECK-NEXT: <key>col</key><integer>18</integer>
3541// CHECK-NEXT: <key>file</key><integer>0</integer>
3542// CHECK-NEXT: </dict>
3543// CHECK-NEXT: </array>
3544// CHECK-NEXT: <key>end</key>
3545// CHECK-NEXT: <array>
3546// CHECK-NEXT: <dict>
3547// CHECK-NEXT: <key>line</key><integer>214</integer>
3548// CHECK-NEXT: <key>col</key><integer>20</integer>
3549// CHECK-NEXT: <key>file</key><integer>0</integer>
3550// CHECK-NEXT: </dict>
3551// CHECK-NEXT: <dict>
3552// CHECK-NEXT: <key>line</key><integer>214</integer>
3553// CHECK-NEXT: <key>col</key><integer>20</integer>
3554// CHECK-NEXT: <key>file</key><integer>0</integer>
3555// CHECK-NEXT: </dict>
3556// CHECK-NEXT: </array>
Gabor Horvathefec1632015-10-22 11:53:04 +00003557// CHECK-NEXT: </dict>
3558// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +00003559// CHECK-NEXT: </dict>
3560// CHECK-NEXT: <dict>
3561// CHECK-NEXT: <key>kind</key><string>event</string>
3562// CHECK-NEXT: <key>location</key>
3563// CHECK-NEXT: <dict>
3564// CHECK-NEXT: <key>line</key><integer>214</integer>
3565// CHECK-NEXT: <key>col</key><integer>20</integer>
3566// CHECK-NEXT: <key>file</key><integer>0</integer>
3567// CHECK-NEXT: </dict>
3568// CHECK-NEXT: <key>ranges</key>
Gabor Horvathefec1632015-10-22 11:53:04 +00003569// CHECK-NEXT: <array>
Devin Coughlinab139a92016-12-05 16:28:47 +00003570// CHECK-NEXT: <array>
3571// CHECK-NEXT: <dict>
3572// CHECK-NEXT: <key>line</key><integer>214</integer>
3573// CHECK-NEXT: <key>col</key><integer>20</integer>
3574// CHECK-NEXT: <key>file</key><integer>0</integer>
3575// CHECK-NEXT: </dict>
3576// CHECK-NEXT: <dict>
3577// CHECK-NEXT: <key>line</key><integer>214</integer>
3578// CHECK-NEXT: <key>col</key><integer>20</integer>
3579// CHECK-NEXT: <key>file</key><integer>0</integer>
3580// CHECK-NEXT: </dict>
3581// CHECK-NEXT: </array>
Gabor Horvathefec1632015-10-22 11:53:04 +00003582// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +00003583// CHECK-NEXT: <key>depth</key><integer>0</integer>
3584// CHECK-NEXT: <key>extended_message</key>
3585// CHECK-NEXT: <string>Conversion from value of type &apos;MutableArray&lt;NSMutableString *&gt; *&apos; to incompatible type &apos;MutableArray&lt;NSString *&gt; *&apos;</string>
3586// CHECK-NEXT: <key>message</key>
3587// CHECK-NEXT: <string>Conversion from value of type &apos;MutableArray&lt;NSMutableString *&gt; *&apos; to incompatible type &apos;MutableArray&lt;NSString *&gt; *&apos;</string>
3588// CHECK-NEXT: </dict>
3589// CHECK-NEXT: </array>
3590// CHECK-NEXT: <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>
3591// CHECK-NEXT: <key>category</key><string>Core Foundation/Objective-C</string>
3592// CHECK-NEXT: <key>type</key><string>Generics</string>
3593// CHECK-NEXT: <key>check_name</key><string>core.DynamicTypePropagation</string>
3594// CHECK-NEXT: <!-- This hash is experimental and going to change! -->
3595// CHECK-NEXT: <key>issue_hash_content_of_line_in_context</key><string>3f2abd3c0b4b4a80a71bcbb668124ffb</string>
3596// CHECK-NEXT: <key>issue_context_kind</key><string>function</string>
3597// CHECK-NEXT: <key>issue_context</key><string>inferenceFromAPIWithLegacyTypes</string>
3598// CHECK-NEXT: <key>issue_hash_function_offset</key><string>2</string>
3599// CHECK-NEXT: <key>location</key>
3600// CHECK-NEXT: <dict>
3601// CHECK-NEXT: <key>line</key><integer>214</integer>
3602// CHECK-NEXT: <key>col</key><integer>20</integer>
3603// CHECK-NEXT: <key>file</key><integer>0</integer>
3604// CHECK-NEXT: </dict>
3605// CHECK-NEXT: </dict>
3606// CHECK-NEXT: <dict>
3607// CHECK-NEXT: <key>path</key>
3608// CHECK-NEXT: <array>
3609// CHECK-NEXT: <dict>
3610// CHECK-NEXT: <key>kind</key><string>event</string>
3611// CHECK-NEXT: <key>location</key>
3612// CHECK-NEXT: <dict>
3613// CHECK-NEXT: <key>line</key><integer>218</integer>
3614// CHECK-NEXT: <key>col</key><integer>20</integer>
3615// CHECK-NEXT: <key>file</key><integer>0</integer>
3616// CHECK-NEXT: </dict>
3617// CHECK-NEXT: <key>ranges</key>
Gabor Horvathefec1632015-10-22 11:53:04 +00003618// CHECK-NEXT: <array>
Devin Coughlinab139a92016-12-05 16:28:47 +00003619// CHECK-NEXT: <array>
3620// CHECK-NEXT: <dict>
3621// CHECK-NEXT: <key>line</key><integer>218</integer>
3622// CHECK-NEXT: <key>col</key><integer>20</integer>
3623// CHECK-NEXT: <key>file</key><integer>0</integer>
3624// CHECK-NEXT: </dict>
3625// CHECK-NEXT: <dict>
3626// CHECK-NEXT: <key>line</key><integer>218</integer>
3627// CHECK-NEXT: <key>col</key><integer>20</integer>
3628// CHECK-NEXT: <key>file</key><integer>0</integer>
3629// CHECK-NEXT: </dict>
3630// CHECK-NEXT: </array>
Gabor Horvathefec1632015-10-22 11:53:04 +00003631// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +00003632// CHECK-NEXT: <key>depth</key><integer>0</integer>
3633// CHECK-NEXT: <key>extended_message</key>
3634// CHECK-NEXT: <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>
3635// CHECK-NEXT: <key>message</key>
3636// CHECK-NEXT: <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>
3637// CHECK-NEXT: </dict>
Gabor Horvathefec1632015-10-22 11:53:04 +00003638// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00003639// CHECK-NEXT: <key>kind</key><string>control</string>
3640// CHECK-NEXT: <key>edges</key>
Gabor Horvathefec1632015-10-22 11:53:04 +00003641// CHECK-NEXT: <array>
3642// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00003643// CHECK-NEXT: <key>start</key>
3644// CHECK-NEXT: <array>
3645// CHECK-NEXT: <dict>
3646// CHECK-NEXT: <key>line</key><integer>218</integer>
3647// CHECK-NEXT: <key>col</key><integer>3</integer>
3648// CHECK-NEXT: <key>file</key><integer>0</integer>
3649// CHECK-NEXT: </dict>
3650// CHECK-NEXT: <dict>
3651// CHECK-NEXT: <key>line</key><integer>218</integer>
3652// CHECK-NEXT: <key>col</key><integer>18</integer>
3653// CHECK-NEXT: <key>file</key><integer>0</integer>
3654// CHECK-NEXT: </dict>
3655// CHECK-NEXT: </array>
3656// CHECK-NEXT: <key>end</key>
3657// CHECK-NEXT: <array>
3658// CHECK-NEXT: <dict>
3659// CHECK-NEXT: <key>line</key><integer>219</integer>
3660// CHECK-NEXT: <key>col</key><integer>3</integer>
3661// CHECK-NEXT: <key>file</key><integer>0</integer>
3662// CHECK-NEXT: </dict>
3663// CHECK-NEXT: <dict>
3664// CHECK-NEXT: <key>line</key><integer>219</integer>
3665// CHECK-NEXT: <key>col</key><integer>25</integer>
3666// CHECK-NEXT: <key>file</key><integer>0</integer>
3667// CHECK-NEXT: </dict>
3668// CHECK-NEXT: </array>
Gabor Horvathefec1632015-10-22 11:53:04 +00003669// CHECK-NEXT: </dict>
3670// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +00003671// CHECK-NEXT: </dict>
Gabor Horvathefec1632015-10-22 11:53:04 +00003672// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00003673// CHECK-NEXT: <key>kind</key><string>control</string>
3674// CHECK-NEXT: <key>edges</key>
Gabor Horvathefec1632015-10-22 11:53:04 +00003675// CHECK-NEXT: <array>
3676// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00003677// CHECK-NEXT: <key>start</key>
3678// CHECK-NEXT: <array>
3679// CHECK-NEXT: <dict>
3680// CHECK-NEXT: <key>line</key><integer>219</integer>
3681// CHECK-NEXT: <key>col</key><integer>3</integer>
3682// CHECK-NEXT: <key>file</key><integer>0</integer>
3683// CHECK-NEXT: </dict>
3684// CHECK-NEXT: <dict>
3685// CHECK-NEXT: <key>line</key><integer>219</integer>
3686// CHECK-NEXT: <key>col</key><integer>25</integer>
3687// CHECK-NEXT: <key>file</key><integer>0</integer>
3688// CHECK-NEXT: </dict>
3689// CHECK-NEXT: </array>
3690// CHECK-NEXT: <key>end</key>
3691// CHECK-NEXT: <array>
3692// CHECK-NEXT: <dict>
3693// CHECK-NEXT: <key>line</key><integer>219</integer>
3694// CHECK-NEXT: <key>col</key><integer>27</integer>
3695// CHECK-NEXT: <key>file</key><integer>0</integer>
3696// CHECK-NEXT: </dict>
3697// CHECK-NEXT: <dict>
3698// CHECK-NEXT: <key>line</key><integer>219</integer>
3699// CHECK-NEXT: <key>col</key><integer>27</integer>
3700// CHECK-NEXT: <key>file</key><integer>0</integer>
3701// CHECK-NEXT: </dict>
3702// CHECK-NEXT: </array>
Gabor Horvathefec1632015-10-22 11:53:04 +00003703// CHECK-NEXT: </dict>
3704// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +00003705// CHECK-NEXT: </dict>
3706// CHECK-NEXT: <dict>
3707// CHECK-NEXT: <key>kind</key><string>event</string>
3708// CHECK-NEXT: <key>location</key>
3709// CHECK-NEXT: <dict>
3710// CHECK-NEXT: <key>line</key><integer>219</integer>
3711// CHECK-NEXT: <key>col</key><integer>27</integer>
3712// CHECK-NEXT: <key>file</key><integer>0</integer>
3713// CHECK-NEXT: </dict>
3714// CHECK-NEXT: <key>ranges</key>
Gabor Horvathefec1632015-10-22 11:53:04 +00003715// CHECK-NEXT: <array>
Devin Coughlinab139a92016-12-05 16:28:47 +00003716// CHECK-NEXT: <array>
3717// CHECK-NEXT: <dict>
3718// CHECK-NEXT: <key>line</key><integer>219</integer>
3719// CHECK-NEXT: <key>col</key><integer>27</integer>
3720// CHECK-NEXT: <key>file</key><integer>0</integer>
3721// CHECK-NEXT: </dict>
3722// CHECK-NEXT: <dict>
3723// CHECK-NEXT: <key>line</key><integer>219</integer>
3724// CHECK-NEXT: <key>col</key><integer>27</integer>
3725// CHECK-NEXT: <key>file</key><integer>0</integer>
3726// CHECK-NEXT: </dict>
3727// CHECK-NEXT: </array>
Gabor Horvathefec1632015-10-22 11:53:04 +00003728// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +00003729// CHECK-NEXT: <key>depth</key><integer>0</integer>
3730// CHECK-NEXT: <key>extended_message</key>
3731// CHECK-NEXT: <string>Conversion from value of type &apos;MutableArray&lt;NSString *&gt; *&apos; to incompatible type &apos;MutableArray&lt;NSMutableString *&gt; *&apos;</string>
3732// CHECK-NEXT: <key>message</key>
3733// CHECK-NEXT: <string>Conversion from value of type &apos;MutableArray&lt;NSString *&gt; *&apos; to incompatible type &apos;MutableArray&lt;NSMutableString *&gt; *&apos;</string>
3734// CHECK-NEXT: </dict>
3735// CHECK-NEXT: </array>
3736// CHECK-NEXT: <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>
3737// CHECK-NEXT: <key>category</key><string>Core Foundation/Objective-C</string>
3738// CHECK-NEXT: <key>type</key><string>Generics</string>
3739// CHECK-NEXT: <key>check_name</key><string>core.DynamicTypePropagation</string>
3740// CHECK-NEXT: <!-- This hash is experimental and going to change! -->
3741// CHECK-NEXT: <key>issue_hash_content_of_line_in_context</key><string>73a50f2592e8b3c9af898749f24176f7</string>
3742// CHECK-NEXT: <key>issue_context_kind</key><string>function</string>
3743// CHECK-NEXT: <key>issue_context</key><string>inferenceFromAPIWithLegacyTypes2</string>
3744// CHECK-NEXT: <key>issue_hash_function_offset</key><string>2</string>
3745// CHECK-NEXT: <key>location</key>
3746// CHECK-NEXT: <dict>
3747// CHECK-NEXT: <key>line</key><integer>219</integer>
3748// CHECK-NEXT: <key>col</key><integer>27</integer>
3749// CHECK-NEXT: <key>file</key><integer>0</integer>
3750// CHECK-NEXT: </dict>
3751// CHECK-NEXT: </dict>
3752// CHECK-NEXT: <dict>
3753// CHECK-NEXT: <key>path</key>
3754// CHECK-NEXT: <array>
3755// CHECK-NEXT: <dict>
3756// CHECK-NEXT: <key>kind</key><string>event</string>
3757// CHECK-NEXT: <key>location</key>
3758// CHECK-NEXT: <dict>
3759// CHECK-NEXT: <key>line</key><integer>223</integer>
3760// CHECK-NEXT: <key>col</key><integer>27</integer>
3761// CHECK-NEXT: <key>file</key><integer>0</integer>
3762// CHECK-NEXT: </dict>
3763// CHECK-NEXT: <key>ranges</key>
Gabor Horvathefec1632015-10-22 11:53:04 +00003764// CHECK-NEXT: <array>
Devin Coughlinab139a92016-12-05 16:28:47 +00003765// CHECK-NEXT: <array>
3766// CHECK-NEXT: <dict>
3767// CHECK-NEXT: <key>line</key><integer>223</integer>
3768// CHECK-NEXT: <key>col</key><integer>27</integer>
3769// CHECK-NEXT: <key>file</key><integer>0</integer>
3770// CHECK-NEXT: </dict>
3771// CHECK-NEXT: <dict>
3772// CHECK-NEXT: <key>line</key><integer>223</integer>
3773// CHECK-NEXT: <key>col</key><integer>27</integer>
3774// CHECK-NEXT: <key>file</key><integer>0</integer>
3775// CHECK-NEXT: </dict>
3776// CHECK-NEXT: </array>
Gabor Horvathefec1632015-10-22 11:53:04 +00003777// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +00003778// CHECK-NEXT: <key>depth</key><integer>0</integer>
3779// CHECK-NEXT: <key>extended_message</key>
3780// CHECK-NEXT: <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>
3781// CHECK-NEXT: <key>message</key>
3782// CHECK-NEXT: <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>
3783// CHECK-NEXT: </dict>
Gabor Horvathefec1632015-10-22 11:53:04 +00003784// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00003785// CHECK-NEXT: <key>kind</key><string>control</string>
3786// CHECK-NEXT: <key>edges</key>
Gabor Horvathefec1632015-10-22 11:53:04 +00003787// CHECK-NEXT: <array>
3788// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00003789// CHECK-NEXT: <key>start</key>
3790// CHECK-NEXT: <array>
3791// CHECK-NEXT: <dict>
3792// CHECK-NEXT: <key>line</key><integer>223</integer>
3793// CHECK-NEXT: <key>col</key><integer>3</integer>
3794// CHECK-NEXT: <key>file</key><integer>0</integer>
3795// CHECK-NEXT: </dict>
3796// CHECK-NEXT: <dict>
3797// CHECK-NEXT: <key>line</key><integer>223</integer>
3798// CHECK-NEXT: <key>col</key><integer>20</integer>
3799// CHECK-NEXT: <key>file</key><integer>0</integer>
3800// CHECK-NEXT: </dict>
3801// CHECK-NEXT: </array>
3802// CHECK-NEXT: <key>end</key>
3803// CHECK-NEXT: <array>
3804// CHECK-NEXT: <dict>
3805// CHECK-NEXT: <key>line</key><integer>224</integer>
3806// CHECK-NEXT: <key>col</key><integer>3</integer>
3807// CHECK-NEXT: <key>file</key><integer>0</integer>
3808// CHECK-NEXT: </dict>
3809// CHECK-NEXT: <dict>
3810// CHECK-NEXT: <key>line</key><integer>224</integer>
3811// CHECK-NEXT: <key>col</key><integer>18</integer>
3812// CHECK-NEXT: <key>file</key><integer>0</integer>
3813// CHECK-NEXT: </dict>
3814// CHECK-NEXT: </array>
Gabor Horvathefec1632015-10-22 11:53:04 +00003815// CHECK-NEXT: </dict>
3816// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +00003817// CHECK-NEXT: </dict>
Gabor Horvathefec1632015-10-22 11:53:04 +00003818// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00003819// CHECK-NEXT: <key>kind</key><string>event</string>
3820// CHECK-NEXT: <key>location</key>
3821// CHECK-NEXT: <dict>
3822// CHECK-NEXT: <key>line</key><integer>224</integer>
3823// CHECK-NEXT: <key>col</key><integer>20</integer>
3824// CHECK-NEXT: <key>file</key><integer>0</integer>
3825// CHECK-NEXT: </dict>
3826// CHECK-NEXT: <key>ranges</key>
3827// CHECK-NEXT: <array>
3828// CHECK-NEXT: <array>
3829// CHECK-NEXT: <dict>
3830// CHECK-NEXT: <key>line</key><integer>224</integer>
3831// CHECK-NEXT: <key>col</key><integer>20</integer>
3832// CHECK-NEXT: <key>file</key><integer>0</integer>
3833// CHECK-NEXT: </dict>
3834// CHECK-NEXT: <dict>
3835// CHECK-NEXT: <key>line</key><integer>224</integer>
3836// CHECK-NEXT: <key>col</key><integer>20</integer>
3837// CHECK-NEXT: <key>file</key><integer>0</integer>
3838// CHECK-NEXT: </dict>
3839// CHECK-NEXT: </array>
3840// CHECK-NEXT: </array>
3841// CHECK-NEXT: <key>depth</key><integer>0</integer>
3842// CHECK-NEXT: <key>extended_message</key>
3843// CHECK-NEXT: <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>
3844// CHECK-NEXT: <key>message</key>
3845// CHECK-NEXT: <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 Horvathefec1632015-10-22 11:53:04 +00003846// CHECK-NEXT: </dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00003847// CHECK-NEXT: <dict>
3848// CHECK-NEXT: <key>kind</key><string>control</string>
3849// CHECK-NEXT: <key>edges</key>
Gabor Horvathefec1632015-10-22 11:53:04 +00003850// CHECK-NEXT: <array>
3851// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00003852// CHECK-NEXT: <key>start</key>
3853// CHECK-NEXT: <array>
3854// CHECK-NEXT: <dict>
3855// CHECK-NEXT: <key>line</key><integer>224</integer>
3856// CHECK-NEXT: <key>col</key><integer>3</integer>
3857// CHECK-NEXT: <key>file</key><integer>0</integer>
3858// CHECK-NEXT: </dict>
3859// CHECK-NEXT: <dict>
3860// CHECK-NEXT: <key>line</key><integer>224</integer>
3861// CHECK-NEXT: <key>col</key><integer>18</integer>
3862// CHECK-NEXT: <key>file</key><integer>0</integer>
3863// CHECK-NEXT: </dict>
3864// CHECK-NEXT: </array>
3865// CHECK-NEXT: <key>end</key>
3866// CHECK-NEXT: <array>
3867// CHECK-NEXT: <dict>
3868// CHECK-NEXT: <key>line</key><integer>225</integer>
3869// CHECK-NEXT: <key>col</key><integer>3</integer>
3870// CHECK-NEXT: <key>file</key><integer>0</integer>
3871// CHECK-NEXT: </dict>
3872// CHECK-NEXT: <dict>
3873// CHECK-NEXT: <key>line</key><integer>225</integer>
3874// CHECK-NEXT: <key>col</key><integer>25</integer>
3875// CHECK-NEXT: <key>file</key><integer>0</integer>
3876// CHECK-NEXT: </dict>
3877// CHECK-NEXT: </array>
Gabor Horvathefec1632015-10-22 11:53:04 +00003878// CHECK-NEXT: </dict>
3879// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +00003880// CHECK-NEXT: </dict>
Gabor Horvathefec1632015-10-22 11:53:04 +00003881// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00003882// CHECK-NEXT: <key>kind</key><string>control</string>
3883// CHECK-NEXT: <key>edges</key>
Gabor Horvathefec1632015-10-22 11:53:04 +00003884// CHECK-NEXT: <array>
3885// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00003886// CHECK-NEXT: <key>start</key>
3887// CHECK-NEXT: <array>
3888// CHECK-NEXT: <dict>
3889// CHECK-NEXT: <key>line</key><integer>225</integer>
3890// CHECK-NEXT: <key>col</key><integer>3</integer>
3891// CHECK-NEXT: <key>file</key><integer>0</integer>
3892// CHECK-NEXT: </dict>
3893// CHECK-NEXT: <dict>
3894// CHECK-NEXT: <key>line</key><integer>225</integer>
3895// CHECK-NEXT: <key>col</key><integer>25</integer>
3896// CHECK-NEXT: <key>file</key><integer>0</integer>
3897// CHECK-NEXT: </dict>
3898// CHECK-NEXT: </array>
3899// CHECK-NEXT: <key>end</key>
3900// CHECK-NEXT: <array>
3901// CHECK-NEXT: <dict>
3902// CHECK-NEXT: <key>line</key><integer>225</integer>
3903// CHECK-NEXT: <key>col</key><integer>27</integer>
3904// CHECK-NEXT: <key>file</key><integer>0</integer>
3905// CHECK-NEXT: </dict>
3906// CHECK-NEXT: <dict>
3907// CHECK-NEXT: <key>line</key><integer>225</integer>
3908// CHECK-NEXT: <key>col</key><integer>27</integer>
3909// CHECK-NEXT: <key>file</key><integer>0</integer>
3910// CHECK-NEXT: </dict>
3911// CHECK-NEXT: </array>
Gabor Horvathefec1632015-10-22 11:53:04 +00003912// CHECK-NEXT: </dict>
3913// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +00003914// CHECK-NEXT: </dict>
3915// CHECK-NEXT: <dict>
3916// CHECK-NEXT: <key>kind</key><string>event</string>
3917// CHECK-NEXT: <key>location</key>
3918// CHECK-NEXT: <dict>
3919// CHECK-NEXT: <key>line</key><integer>225</integer>
3920// CHECK-NEXT: <key>col</key><integer>27</integer>
3921// CHECK-NEXT: <key>file</key><integer>0</integer>
3922// CHECK-NEXT: </dict>
3923// CHECK-NEXT: <key>ranges</key>
Gabor Horvathefec1632015-10-22 11:53:04 +00003924// CHECK-NEXT: <array>
Devin Coughlinab139a92016-12-05 16:28:47 +00003925// CHECK-NEXT: <array>
3926// CHECK-NEXT: <dict>
3927// CHECK-NEXT: <key>line</key><integer>225</integer>
3928// CHECK-NEXT: <key>col</key><integer>27</integer>
3929// CHECK-NEXT: <key>file</key><integer>0</integer>
3930// CHECK-NEXT: </dict>
3931// CHECK-NEXT: <dict>
3932// CHECK-NEXT: <key>line</key><integer>225</integer>
3933// CHECK-NEXT: <key>col</key><integer>27</integer>
3934// CHECK-NEXT: <key>file</key><integer>0</integer>
3935// CHECK-NEXT: </dict>
3936// CHECK-NEXT: </array>
Gabor Horvathefec1632015-10-22 11:53:04 +00003937// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +00003938// CHECK-NEXT: <key>depth</key><integer>0</integer>
3939// CHECK-NEXT: <key>extended_message</key>
3940// CHECK-NEXT: <string>Conversion from value of type &apos;MutableArray&lt;NSString *&gt; *&apos; to incompatible type &apos;MutableArray&lt;NSMutableString *&gt; *&apos;</string>
3941// CHECK-NEXT: <key>message</key>
3942// CHECK-NEXT: <string>Conversion from value of type &apos;MutableArray&lt;NSString *&gt; *&apos; to incompatible type &apos;MutableArray&lt;NSMutableString *&gt; *&apos;</string>
3943// CHECK-NEXT: </dict>
3944// CHECK-NEXT: </array>
3945// CHECK-NEXT: <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>
3946// CHECK-NEXT: <key>category</key><string>Core Foundation/Objective-C</string>
3947// CHECK-NEXT: <key>type</key><string>Generics</string>
3948// CHECK-NEXT: <key>check_name</key><string>core.DynamicTypePropagation</string>
3949// CHECK-NEXT: <!-- This hash is experimental and going to change! -->
3950// CHECK-NEXT: <key>issue_hash_content_of_line_in_context</key><string>23ca540c8961ab9a362a194e1e895f86</string>
3951// CHECK-NEXT: <key>issue_context_kind</key><string>function</string>
3952// CHECK-NEXT: <key>issue_context</key><string>inferenceFromAPIWithLegacyTypes3</string>
3953// CHECK-NEXT: <key>issue_hash_function_offset</key><string>3</string>
3954// CHECK-NEXT: <key>location</key>
3955// CHECK-NEXT: <dict>
3956// CHECK-NEXT: <key>line</key><integer>225</integer>
3957// CHECK-NEXT: <key>col</key><integer>27</integer>
3958// CHECK-NEXT: <key>file</key><integer>0</integer>
3959// CHECK-NEXT: </dict>
3960// CHECK-NEXT: </dict>
3961// CHECK-NEXT: <dict>
3962// CHECK-NEXT: <key>path</key>
3963// CHECK-NEXT: <array>
3964// CHECK-NEXT: <dict>
3965// CHECK-NEXT: <key>kind</key><string>event</string>
3966// CHECK-NEXT: <key>location</key>
3967// CHECK-NEXT: <dict>
3968// CHECK-NEXT: <key>line</key><integer>229</integer>
3969// CHECK-NEXT: <key>col</key><integer>20</integer>
3970// CHECK-NEXT: <key>file</key><integer>0</integer>
3971// CHECK-NEXT: </dict>
3972// CHECK-NEXT: <key>ranges</key>
Gabor Horvathefec1632015-10-22 11:53:04 +00003973// CHECK-NEXT: <array>
Devin Coughlinab139a92016-12-05 16:28:47 +00003974// CHECK-NEXT: <array>
3975// CHECK-NEXT: <dict>
3976// CHECK-NEXT: <key>line</key><integer>229</integer>
3977// CHECK-NEXT: <key>col</key><integer>20</integer>
3978// CHECK-NEXT: <key>file</key><integer>0</integer>
3979// CHECK-NEXT: </dict>
3980// CHECK-NEXT: <dict>
3981// CHECK-NEXT: <key>line</key><integer>229</integer>
3982// CHECK-NEXT: <key>col</key><integer>20</integer>
3983// CHECK-NEXT: <key>file</key><integer>0</integer>
3984// CHECK-NEXT: </dict>
3985// CHECK-NEXT: </array>
Gabor Horvathefec1632015-10-22 11:53:04 +00003986// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +00003987// CHECK-NEXT: <key>depth</key><integer>0</integer>
3988// CHECK-NEXT: <key>extended_message</key>
3989// CHECK-NEXT: <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>
3990// CHECK-NEXT: <key>message</key>
3991// CHECK-NEXT: <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>
3992// CHECK-NEXT: </dict>
Gabor Horvathefec1632015-10-22 11:53:04 +00003993// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00003994// CHECK-NEXT: <key>kind</key><string>control</string>
3995// CHECK-NEXT: <key>edges</key>
Gabor Horvathefec1632015-10-22 11:53:04 +00003996// CHECK-NEXT: <array>
3997// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00003998// CHECK-NEXT: <key>start</key>
3999// CHECK-NEXT: <array>
4000// CHECK-NEXT: <dict>
4001// CHECK-NEXT: <key>line</key><integer>229</integer>
4002// CHECK-NEXT: <key>col</key><integer>3</integer>
4003// CHECK-NEXT: <key>file</key><integer>0</integer>
4004// CHECK-NEXT: </dict>
4005// CHECK-NEXT: <dict>
4006// CHECK-NEXT: <key>line</key><integer>229</integer>
4007// CHECK-NEXT: <key>col</key><integer>18</integer>
4008// CHECK-NEXT: <key>file</key><integer>0</integer>
4009// CHECK-NEXT: </dict>
4010// CHECK-NEXT: </array>
4011// CHECK-NEXT: <key>end</key>
4012// CHECK-NEXT: <array>
4013// CHECK-NEXT: <dict>
4014// CHECK-NEXT: <key>line</key><integer>230</integer>
4015// CHECK-NEXT: <key>col</key><integer>3</integer>
4016// CHECK-NEXT: <key>file</key><integer>0</integer>
4017// CHECK-NEXT: </dict>
4018// CHECK-NEXT: <dict>
4019// CHECK-NEXT: <key>line</key><integer>230</integer>
4020// CHECK-NEXT: <key>col</key><integer>25</integer>
4021// CHECK-NEXT: <key>file</key><integer>0</integer>
4022// CHECK-NEXT: </dict>
4023// CHECK-NEXT: </array>
Gabor Horvathefec1632015-10-22 11:53:04 +00004024// CHECK-NEXT: </dict>
4025// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +00004026// CHECK-NEXT: </dict>
Gabor Horvathefec1632015-10-22 11:53:04 +00004027// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00004028// CHECK-NEXT: <key>kind</key><string>control</string>
4029// CHECK-NEXT: <key>edges</key>
Gabor Horvathefec1632015-10-22 11:53:04 +00004030// CHECK-NEXT: <array>
4031// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00004032// CHECK-NEXT: <key>start</key>
4033// CHECK-NEXT: <array>
4034// CHECK-NEXT: <dict>
4035// CHECK-NEXT: <key>line</key><integer>230</integer>
4036// CHECK-NEXT: <key>col</key><integer>3</integer>
4037// CHECK-NEXT: <key>file</key><integer>0</integer>
4038// CHECK-NEXT: </dict>
4039// CHECK-NEXT: <dict>
4040// CHECK-NEXT: <key>line</key><integer>230</integer>
4041// CHECK-NEXT: <key>col</key><integer>25</integer>
4042// CHECK-NEXT: <key>file</key><integer>0</integer>
4043// CHECK-NEXT: </dict>
4044// CHECK-NEXT: </array>
4045// CHECK-NEXT: <key>end</key>
4046// CHECK-NEXT: <array>
4047// CHECK-NEXT: <dict>
4048// CHECK-NEXT: <key>line</key><integer>230</integer>
4049// CHECK-NEXT: <key>col</key><integer>27</integer>
4050// CHECK-NEXT: <key>file</key><integer>0</integer>
4051// CHECK-NEXT: </dict>
4052// CHECK-NEXT: <dict>
4053// CHECK-NEXT: <key>line</key><integer>230</integer>
4054// CHECK-NEXT: <key>col</key><integer>27</integer>
4055// CHECK-NEXT: <key>file</key><integer>0</integer>
4056// CHECK-NEXT: </dict>
4057// CHECK-NEXT: </array>
Gabor Horvathefec1632015-10-22 11:53:04 +00004058// CHECK-NEXT: </dict>
4059// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +00004060// CHECK-NEXT: </dict>
4061// CHECK-NEXT: <dict>
4062// CHECK-NEXT: <key>kind</key><string>event</string>
4063// CHECK-NEXT: <key>location</key>
4064// CHECK-NEXT: <dict>
4065// CHECK-NEXT: <key>line</key><integer>230</integer>
4066// CHECK-NEXT: <key>col</key><integer>27</integer>
4067// CHECK-NEXT: <key>file</key><integer>0</integer>
4068// CHECK-NEXT: </dict>
4069// CHECK-NEXT: <key>ranges</key>
Gabor Horvathefec1632015-10-22 11:53:04 +00004070// CHECK-NEXT: <array>
Devin Coughlinab139a92016-12-05 16:28:47 +00004071// CHECK-NEXT: <array>
4072// CHECK-NEXT: <dict>
4073// CHECK-NEXT: <key>line</key><integer>230</integer>
4074// CHECK-NEXT: <key>col</key><integer>27</integer>
4075// CHECK-NEXT: <key>file</key><integer>0</integer>
4076// CHECK-NEXT: </dict>
4077// CHECK-NEXT: <dict>
4078// CHECK-NEXT: <key>line</key><integer>230</integer>
4079// CHECK-NEXT: <key>col</key><integer>27</integer>
4080// CHECK-NEXT: <key>file</key><integer>0</integer>
4081// CHECK-NEXT: </dict>
4082// CHECK-NEXT: </array>
Gabor Horvathefec1632015-10-22 11:53:04 +00004083// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +00004084// CHECK-NEXT: <key>depth</key><integer>0</integer>
4085// CHECK-NEXT: <key>extended_message</key>
4086// CHECK-NEXT: <string>Conversion from value of type &apos;MutableArray&lt;NSString *&gt; *&apos; to incompatible type &apos;MutableArray&lt;NSMutableString *&gt; *&apos;</string>
4087// CHECK-NEXT: <key>message</key>
4088// CHECK-NEXT: <string>Conversion from value of type &apos;MutableArray&lt;NSString *&gt; *&apos; to incompatible type &apos;MutableArray&lt;NSMutableString *&gt; *&apos;</string>
4089// CHECK-NEXT: </dict>
4090// CHECK-NEXT: </array>
4091// CHECK-NEXT: <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>
4092// CHECK-NEXT: <key>category</key><string>Core Foundation/Objective-C</string>
4093// CHECK-NEXT: <key>type</key><string>Generics</string>
4094// CHECK-NEXT: <key>check_name</key><string>core.DynamicTypePropagation</string>
4095// CHECK-NEXT: <!-- This hash is experimental and going to change! -->
4096// CHECK-NEXT: <key>issue_hash_content_of_line_in_context</key><string>be7e9426f827314f05fd4e15b25909df</string>
4097// CHECK-NEXT: <key>issue_context_kind</key><string>function</string>
4098// CHECK-NEXT: <key>issue_context</key><string>inferenceFromAPIWithBuggyTypes</string>
4099// CHECK-NEXT: <key>issue_hash_function_offset</key><string>2</string>
4100// CHECK-NEXT: <key>location</key>
4101// CHECK-NEXT: <dict>
4102// CHECK-NEXT: <key>line</key><integer>230</integer>
4103// CHECK-NEXT: <key>col</key><integer>27</integer>
4104// CHECK-NEXT: <key>file</key><integer>0</integer>
4105// CHECK-NEXT: </dict>
4106// CHECK-NEXT: </dict>
4107// CHECK-NEXT: <dict>
4108// CHECK-NEXT: <key>path</key>
4109// CHECK-NEXT: <array>
4110// CHECK-NEXT: <dict>
4111// CHECK-NEXT: <key>kind</key><string>event</string>
4112// CHECK-NEXT: <key>location</key>
4113// CHECK-NEXT: <dict>
4114// CHECK-NEXT: <key>line</key><integer>234</integer>
4115// CHECK-NEXT: <key>col</key><integer>27</integer>
4116// CHECK-NEXT: <key>file</key><integer>0</integer>
4117// CHECK-NEXT: </dict>
4118// CHECK-NEXT: <key>ranges</key>
Gabor Horvathefec1632015-10-22 11:53:04 +00004119// CHECK-NEXT: <array>
Devin Coughlinab139a92016-12-05 16:28:47 +00004120// CHECK-NEXT: <array>
4121// CHECK-NEXT: <dict>
4122// CHECK-NEXT: <key>line</key><integer>234</integer>
4123// CHECK-NEXT: <key>col</key><integer>27</integer>
4124// CHECK-NEXT: <key>file</key><integer>0</integer>
4125// CHECK-NEXT: </dict>
4126// CHECK-NEXT: <dict>
4127// CHECK-NEXT: <key>line</key><integer>234</integer>
4128// CHECK-NEXT: <key>col</key><integer>27</integer>
4129// CHECK-NEXT: <key>file</key><integer>0</integer>
4130// CHECK-NEXT: </dict>
4131// CHECK-NEXT: </array>
Gabor Horvathefec1632015-10-22 11:53:04 +00004132// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +00004133// CHECK-NEXT: <key>depth</key><integer>0</integer>
4134// CHECK-NEXT: <key>extended_message</key>
4135// CHECK-NEXT: <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>
4136// CHECK-NEXT: <key>message</key>
4137// CHECK-NEXT: <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>
4138// CHECK-NEXT: </dict>
Gabor Horvathefec1632015-10-22 11:53:04 +00004139// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00004140// CHECK-NEXT: <key>kind</key><string>control</string>
4141// CHECK-NEXT: <key>edges</key>
Gabor Horvathefec1632015-10-22 11:53:04 +00004142// CHECK-NEXT: <array>
4143// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00004144// CHECK-NEXT: <key>start</key>
4145// CHECK-NEXT: <array>
4146// CHECK-NEXT: <dict>
4147// CHECK-NEXT: <key>line</key><integer>234</integer>
4148// CHECK-NEXT: <key>col</key><integer>3</integer>
4149// CHECK-NEXT: <key>file</key><integer>0</integer>
4150// CHECK-NEXT: </dict>
4151// CHECK-NEXT: <dict>
4152// CHECK-NEXT: <key>line</key><integer>234</integer>
4153// CHECK-NEXT: <key>col</key><integer>25</integer>
4154// CHECK-NEXT: <key>file</key><integer>0</integer>
4155// CHECK-NEXT: </dict>
4156// CHECK-NEXT: </array>
4157// CHECK-NEXT: <key>end</key>
4158// CHECK-NEXT: <array>
4159// CHECK-NEXT: <dict>
4160// CHECK-NEXT: <key>line</key><integer>235</integer>
4161// CHECK-NEXT: <key>col</key><integer>3</integer>
4162// CHECK-NEXT: <key>file</key><integer>0</integer>
4163// CHECK-NEXT: </dict>
4164// CHECK-NEXT: <dict>
4165// CHECK-NEXT: <key>line</key><integer>235</integer>
4166// CHECK-NEXT: <key>col</key><integer>18</integer>
4167// CHECK-NEXT: <key>file</key><integer>0</integer>
4168// CHECK-NEXT: </dict>
4169// CHECK-NEXT: </array>
Gabor Horvathefec1632015-10-22 11:53:04 +00004170// CHECK-NEXT: </dict>
4171// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +00004172// CHECK-NEXT: </dict>
Gabor Horvathefec1632015-10-22 11:53:04 +00004173// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00004174// CHECK-NEXT: <key>kind</key><string>control</string>
4175// CHECK-NEXT: <key>edges</key>
Gabor Horvathefec1632015-10-22 11:53:04 +00004176// CHECK-NEXT: <array>
4177// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00004178// CHECK-NEXT: <key>start</key>
4179// CHECK-NEXT: <array>
4180// CHECK-NEXT: <dict>
4181// CHECK-NEXT: <key>line</key><integer>235</integer>
4182// CHECK-NEXT: <key>col</key><integer>3</integer>
4183// CHECK-NEXT: <key>file</key><integer>0</integer>
4184// CHECK-NEXT: </dict>
4185// CHECK-NEXT: <dict>
4186// CHECK-NEXT: <key>line</key><integer>235</integer>
4187// CHECK-NEXT: <key>col</key><integer>18</integer>
4188// CHECK-NEXT: <key>file</key><integer>0</integer>
4189// CHECK-NEXT: </dict>
4190// CHECK-NEXT: </array>
4191// CHECK-NEXT: <key>end</key>
4192// CHECK-NEXT: <array>
4193// CHECK-NEXT: <dict>
4194// CHECK-NEXT: <key>line</key><integer>235</integer>
4195// CHECK-NEXT: <key>col</key><integer>20</integer>
4196// CHECK-NEXT: <key>file</key><integer>0</integer>
4197// CHECK-NEXT: </dict>
4198// CHECK-NEXT: <dict>
4199// CHECK-NEXT: <key>line</key><integer>235</integer>
4200// CHECK-NEXT: <key>col</key><integer>20</integer>
4201// CHECK-NEXT: <key>file</key><integer>0</integer>
4202// CHECK-NEXT: </dict>
4203// CHECK-NEXT: </array>
Gabor Horvathefec1632015-10-22 11:53:04 +00004204// CHECK-NEXT: </dict>
4205// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +00004206// CHECK-NEXT: </dict>
4207// CHECK-NEXT: <dict>
4208// CHECK-NEXT: <key>kind</key><string>event</string>
4209// CHECK-NEXT: <key>location</key>
4210// CHECK-NEXT: <dict>
4211// CHECK-NEXT: <key>line</key><integer>235</integer>
4212// CHECK-NEXT: <key>col</key><integer>20</integer>
4213// CHECK-NEXT: <key>file</key><integer>0</integer>
4214// CHECK-NEXT: </dict>
4215// CHECK-NEXT: <key>ranges</key>
Gabor Horvathefec1632015-10-22 11:53:04 +00004216// CHECK-NEXT: <array>
Devin Coughlinab139a92016-12-05 16:28:47 +00004217// CHECK-NEXT: <array>
4218// CHECK-NEXT: <dict>
4219// CHECK-NEXT: <key>line</key><integer>235</integer>
4220// CHECK-NEXT: <key>col</key><integer>20</integer>
4221// CHECK-NEXT: <key>file</key><integer>0</integer>
4222// CHECK-NEXT: </dict>
4223// CHECK-NEXT: <dict>
4224// CHECK-NEXT: <key>line</key><integer>235</integer>
4225// CHECK-NEXT: <key>col</key><integer>20</integer>
4226// CHECK-NEXT: <key>file</key><integer>0</integer>
4227// CHECK-NEXT: </dict>
4228// CHECK-NEXT: </array>
Gabor Horvathefec1632015-10-22 11:53:04 +00004229// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +00004230// CHECK-NEXT: <key>depth</key><integer>0</integer>
4231// CHECK-NEXT: <key>extended_message</key>
4232// CHECK-NEXT: <string>Conversion from value of type &apos;MutableArray&lt;NSMutableString *&gt; *&apos; to incompatible type &apos;MutableArray&lt;NSString *&gt; *&apos;</string>
4233// CHECK-NEXT: <key>message</key>
4234// CHECK-NEXT: <string>Conversion from value of type &apos;MutableArray&lt;NSMutableString *&gt; *&apos; to incompatible type &apos;MutableArray&lt;NSString *&gt; *&apos;</string>
4235// CHECK-NEXT: </dict>
4236// CHECK-NEXT: </array>
4237// CHECK-NEXT: <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>
4238// CHECK-NEXT: <key>category</key><string>Core Foundation/Objective-C</string>
4239// CHECK-NEXT: <key>type</key><string>Generics</string>
4240// CHECK-NEXT: <key>check_name</key><string>core.DynamicTypePropagation</string>
4241// CHECK-NEXT: <!-- This hash is experimental and going to change! -->
4242// CHECK-NEXT: <key>issue_hash_content_of_line_in_context</key><string>0f97a618ccac913d7c8631b5b86a133e</string>
4243// CHECK-NEXT: <key>issue_context_kind</key><string>function</string>
4244// CHECK-NEXT: <key>issue_context</key><string>InferenceFromAPIWithBuggyTypes2</string>
4245// CHECK-NEXT: <key>issue_hash_function_offset</key><string>2</string>
4246// CHECK-NEXT: <key>location</key>
4247// CHECK-NEXT: <dict>
4248// CHECK-NEXT: <key>line</key><integer>235</integer>
4249// CHECK-NEXT: <key>col</key><integer>20</integer>
4250// CHECK-NEXT: <key>file</key><integer>0</integer>
4251// CHECK-NEXT: </dict>
4252// CHECK-NEXT: </dict>
4253// CHECK-NEXT: <dict>
4254// CHECK-NEXT: <key>path</key>
4255// CHECK-NEXT: <array>
4256// CHECK-NEXT: <dict>
4257// CHECK-NEXT: <key>kind</key><string>event</string>
4258// CHECK-NEXT: <key>location</key>
4259// CHECK-NEXT: <dict>
4260// CHECK-NEXT: <key>line</key><integer>239</integer>
4261// CHECK-NEXT: <key>col</key><integer>10</integer>
4262// CHECK-NEXT: <key>file</key><integer>0</integer>
4263// CHECK-NEXT: </dict>
4264// CHECK-NEXT: <key>ranges</key>
Gabor Horvathefec1632015-10-22 11:53:04 +00004265// CHECK-NEXT: <array>
Devin Coughlinab139a92016-12-05 16:28:47 +00004266// CHECK-NEXT: <array>
4267// CHECK-NEXT: <dict>
4268// CHECK-NEXT: <key>line</key><integer>239</integer>
4269// CHECK-NEXT: <key>col</key><integer>10</integer>
4270// CHECK-NEXT: <key>file</key><integer>0</integer>
4271// CHECK-NEXT: </dict>
4272// CHECK-NEXT: <dict>
4273// CHECK-NEXT: <key>line</key><integer>239</integer>
4274// CHECK-NEXT: <key>col</key><integer>10</integer>
4275// CHECK-NEXT: <key>file</key><integer>0</integer>
4276// CHECK-NEXT: </dict>
4277// CHECK-NEXT: </array>
Gabor Horvathefec1632015-10-22 11:53:04 +00004278// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +00004279// CHECK-NEXT: <key>depth</key><integer>0</integer>
4280// CHECK-NEXT: <key>extended_message</key>
4281// CHECK-NEXT: <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>
4282// CHECK-NEXT: <key>message</key>
4283// CHECK-NEXT: <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>
4284// CHECK-NEXT: </dict>
Gabor Horvathefec1632015-10-22 11:53:04 +00004285// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00004286// CHECK-NEXT: <key>kind</key><string>control</string>
4287// CHECK-NEXT: <key>edges</key>
Gabor Horvathefec1632015-10-22 11:53:04 +00004288// CHECK-NEXT: <array>
4289// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00004290// CHECK-NEXT: <key>start</key>
4291// CHECK-NEXT: <array>
4292// CHECK-NEXT: <dict>
4293// CHECK-NEXT: <key>line</key><integer>239</integer>
4294// CHECK-NEXT: <key>col</key><integer>3</integer>
4295// CHECK-NEXT: <key>file</key><integer>0</integer>
4296// CHECK-NEXT: </dict>
4297// CHECK-NEXT: <dict>
4298// CHECK-NEXT: <key>line</key><integer>239</integer>
4299// CHECK-NEXT: <key>col</key><integer>4</integer>
4300// CHECK-NEXT: <key>file</key><integer>0</integer>
4301// CHECK-NEXT: </dict>
4302// CHECK-NEXT: </array>
4303// CHECK-NEXT: <key>end</key>
4304// CHECK-NEXT: <array>
4305// CHECK-NEXT: <dict>
4306// CHECK-NEXT: <key>line</key><integer>241</integer>
4307// CHECK-NEXT: <key>col</key><integer>3</integer>
4308// CHECK-NEXT: <key>file</key><integer>0</integer>
4309// CHECK-NEXT: </dict>
4310// CHECK-NEXT: <dict>
4311// CHECK-NEXT: <key>line</key><integer>241</integer>
4312// CHECK-NEXT: <key>col</key><integer>18</integer>
4313// CHECK-NEXT: <key>file</key><integer>0</integer>
4314// CHECK-NEXT: </dict>
4315// CHECK-NEXT: </array>
Gabor Horvathefec1632015-10-22 11:53:04 +00004316// CHECK-NEXT: </dict>
4317// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +00004318// CHECK-NEXT: </dict>
Gabor Horvathefec1632015-10-22 11:53:04 +00004319// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00004320// CHECK-NEXT: <key>kind</key><string>control</string>
4321// CHECK-NEXT: <key>edges</key>
Gabor Horvathefec1632015-10-22 11:53:04 +00004322// CHECK-NEXT: <array>
4323// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00004324// CHECK-NEXT: <key>start</key>
4325// CHECK-NEXT: <array>
4326// CHECK-NEXT: <dict>
4327// CHECK-NEXT: <key>line</key><integer>241</integer>
4328// CHECK-NEXT: <key>col</key><integer>3</integer>
4329// CHECK-NEXT: <key>file</key><integer>0</integer>
4330// CHECK-NEXT: </dict>
4331// CHECK-NEXT: <dict>
4332// CHECK-NEXT: <key>line</key><integer>241</integer>
4333// CHECK-NEXT: <key>col</key><integer>18</integer>
4334// CHECK-NEXT: <key>file</key><integer>0</integer>
4335// CHECK-NEXT: </dict>
4336// CHECK-NEXT: </array>
4337// CHECK-NEXT: <key>end</key>
4338// CHECK-NEXT: <array>
4339// CHECK-NEXT: <dict>
4340// CHECK-NEXT: <key>line</key><integer>241</integer>
4341// CHECK-NEXT: <key>col</key><integer>20</integer>
4342// CHECK-NEXT: <key>file</key><integer>0</integer>
4343// CHECK-NEXT: </dict>
4344// CHECK-NEXT: <dict>
4345// CHECK-NEXT: <key>line</key><integer>241</integer>
4346// CHECK-NEXT: <key>col</key><integer>20</integer>
4347// CHECK-NEXT: <key>file</key><integer>0</integer>
4348// CHECK-NEXT: </dict>
4349// CHECK-NEXT: </array>
Gabor Horvathefec1632015-10-22 11:53:04 +00004350// CHECK-NEXT: </dict>
4351// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +00004352// CHECK-NEXT: </dict>
4353// CHECK-NEXT: <dict>
4354// CHECK-NEXT: <key>kind</key><string>event</string>
4355// CHECK-NEXT: <key>location</key>
4356// CHECK-NEXT: <dict>
4357// CHECK-NEXT: <key>line</key><integer>241</integer>
4358// CHECK-NEXT: <key>col</key><integer>20</integer>
4359// CHECK-NEXT: <key>file</key><integer>0</integer>
4360// CHECK-NEXT: </dict>
4361// CHECK-NEXT: <key>ranges</key>
Gabor Horvathefec1632015-10-22 11:53:04 +00004362// CHECK-NEXT: <array>
Devin Coughlinab139a92016-12-05 16:28:47 +00004363// CHECK-NEXT: <array>
4364// CHECK-NEXT: <dict>
4365// CHECK-NEXT: <key>line</key><integer>241</integer>
4366// CHECK-NEXT: <key>col</key><integer>20</integer>
4367// CHECK-NEXT: <key>file</key><integer>0</integer>
4368// CHECK-NEXT: </dict>
4369// CHECK-NEXT: <dict>
4370// CHECK-NEXT: <key>line</key><integer>241</integer>
4371// CHECK-NEXT: <key>col</key><integer>20</integer>
4372// CHECK-NEXT: <key>file</key><integer>0</integer>
4373// CHECK-NEXT: </dict>
4374// CHECK-NEXT: </array>
Gabor Horvathefec1632015-10-22 11:53:04 +00004375// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +00004376// CHECK-NEXT: <key>depth</key><integer>0</integer>
4377// CHECK-NEXT: <key>extended_message</key>
4378// CHECK-NEXT: <string>Conversion from value of type &apos;MutableArray&lt;NSMutableString *&gt; *&apos; to incompatible type &apos;MutableArray&lt;NSString *&gt; *&apos;</string>
4379// CHECK-NEXT: <key>message</key>
4380// CHECK-NEXT: <string>Conversion from value of type &apos;MutableArray&lt;NSMutableString *&gt; *&apos; to incompatible type &apos;MutableArray&lt;NSString *&gt; *&apos;</string>
4381// CHECK-NEXT: </dict>
4382// CHECK-NEXT: </array>
4383// CHECK-NEXT: <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>
4384// CHECK-NEXT: <key>category</key><string>Core Foundation/Objective-C</string>
4385// CHECK-NEXT: <key>type</key><string>Generics</string>
4386// CHECK-NEXT: <key>check_name</key><string>core.DynamicTypePropagation</string>
4387// CHECK-NEXT: <!-- This hash is experimental and going to change! -->
4388// CHECK-NEXT: <key>issue_hash_content_of_line_in_context</key><string>725c54c88bb271138b1de545ee59a8aa</string>
4389// CHECK-NEXT: <key>issue_context_kind</key><string>function</string>
4390// CHECK-NEXT: <key>issue_context</key><string>InferenceFromAPIWithBuggyTypes3</string>
4391// CHECK-NEXT: <key>issue_hash_function_offset</key><string>3</string>
4392// CHECK-NEXT: <key>location</key>
4393// CHECK-NEXT: <dict>
4394// CHECK-NEXT: <key>line</key><integer>241</integer>
4395// CHECK-NEXT: <key>col</key><integer>20</integer>
4396// CHECK-NEXT: <key>file</key><integer>0</integer>
4397// CHECK-NEXT: </dict>
4398// CHECK-NEXT: </dict>
4399// CHECK-NEXT: <dict>
4400// CHECK-NEXT: <key>path</key>
4401// CHECK-NEXT: <array>
4402// CHECK-NEXT: <dict>
4403// CHECK-NEXT: <key>kind</key><string>event</string>
4404// CHECK-NEXT: <key>location</key>
4405// CHECK-NEXT: <dict>
4406// CHECK-NEXT: <key>line</key><integer>245</integer>
4407// CHECK-NEXT: <key>col</key><integer>45</integer>
4408// CHECK-NEXT: <key>file</key><integer>0</integer>
4409// CHECK-NEXT: </dict>
4410// CHECK-NEXT: <key>ranges</key>
Gabor Horvathefec1632015-10-22 11:53:04 +00004411// CHECK-NEXT: <array>
Devin Coughlinab139a92016-12-05 16:28:47 +00004412// CHECK-NEXT: <array>
4413// CHECK-NEXT: <dict>
4414// CHECK-NEXT: <key>line</key><integer>245</integer>
4415// CHECK-NEXT: <key>col</key><integer>45</integer>
4416// CHECK-NEXT: <key>file</key><integer>0</integer>
4417// CHECK-NEXT: </dict>
4418// CHECK-NEXT: <dict>
4419// CHECK-NEXT: <key>line</key><integer>245</integer>
4420// CHECK-NEXT: <key>col</key><integer>45</integer>
4421// CHECK-NEXT: <key>file</key><integer>0</integer>
4422// CHECK-NEXT: </dict>
4423// CHECK-NEXT: </array>
Gabor Horvathefec1632015-10-22 11:53:04 +00004424// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +00004425// CHECK-NEXT: <key>depth</key><integer>0</integer>
4426// CHECK-NEXT: <key>extended_message</key>
4427// CHECK-NEXT: <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>
4428// CHECK-NEXT: <key>message</key>
4429// CHECK-NEXT: <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>
4430// CHECK-NEXT: </dict>
Gabor Horvathefec1632015-10-22 11:53:04 +00004431// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00004432// CHECK-NEXT: <key>kind</key><string>control</string>
4433// CHECK-NEXT: <key>edges</key>
Gabor Horvathefec1632015-10-22 11:53:04 +00004434// CHECK-NEXT: <array>
4435// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00004436// CHECK-NEXT: <key>start</key>
4437// CHECK-NEXT: <array>
4438// CHECK-NEXT: <dict>
4439// CHECK-NEXT: <key>line</key><integer>245</integer>
4440// CHECK-NEXT: <key>col</key><integer>3</integer>
4441// CHECK-NEXT: <key>file</key><integer>0</integer>
4442// CHECK-NEXT: </dict>
4443// CHECK-NEXT: <dict>
4444// CHECK-NEXT: <key>line</key><integer>245</integer>
4445// CHECK-NEXT: <key>col</key><integer>19</integer>
4446// CHECK-NEXT: <key>file</key><integer>0</integer>
4447// CHECK-NEXT: </dict>
4448// CHECK-NEXT: </array>
4449// CHECK-NEXT: <key>end</key>
4450// CHECK-NEXT: <array>
4451// CHECK-NEXT: <dict>
4452// CHECK-NEXT: <key>line</key><integer>246</integer>
4453// CHECK-NEXT: <key>col</key><integer>3</integer>
4454// CHECK-NEXT: <key>file</key><integer>0</integer>
4455// CHECK-NEXT: </dict>
4456// CHECK-NEXT: <dict>
4457// CHECK-NEXT: <key>line</key><integer>246</integer>
4458// CHECK-NEXT: <key>col</key><integer>18</integer>
4459// CHECK-NEXT: <key>file</key><integer>0</integer>
4460// CHECK-NEXT: </dict>
4461// CHECK-NEXT: </array>
Gabor Horvathefec1632015-10-22 11:53:04 +00004462// CHECK-NEXT: </dict>
4463// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +00004464// CHECK-NEXT: </dict>
Gabor Horvathefec1632015-10-22 11:53:04 +00004465// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00004466// CHECK-NEXT: <key>kind</key><string>event</string>
4467// CHECK-NEXT: <key>location</key>
4468// CHECK-NEXT: <dict>
4469// CHECK-NEXT: <key>line</key><integer>246</integer>
4470// CHECK-NEXT: <key>col</key><integer>20</integer>
4471// CHECK-NEXT: <key>file</key><integer>0</integer>
4472// CHECK-NEXT: </dict>
4473// CHECK-NEXT: <key>ranges</key>
4474// CHECK-NEXT: <array>
4475// CHECK-NEXT: <array>
4476// CHECK-NEXT: <dict>
4477// CHECK-NEXT: <key>line</key><integer>246</integer>
4478// CHECK-NEXT: <key>col</key><integer>20</integer>
4479// CHECK-NEXT: <key>file</key><integer>0</integer>
4480// CHECK-NEXT: </dict>
4481// CHECK-NEXT: <dict>
4482// CHECK-NEXT: <key>line</key><integer>246</integer>
4483// CHECK-NEXT: <key>col</key><integer>20</integer>
4484// CHECK-NEXT: <key>file</key><integer>0</integer>
4485// CHECK-NEXT: </dict>
4486// CHECK-NEXT: </array>
4487// CHECK-NEXT: </array>
4488// CHECK-NEXT: <key>depth</key><integer>0</integer>
4489// CHECK-NEXT: <key>extended_message</key>
4490// CHECK-NEXT: <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>
4491// CHECK-NEXT: <key>message</key>
4492// CHECK-NEXT: <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 Horvathefec1632015-10-22 11:53:04 +00004493// CHECK-NEXT: </dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00004494// CHECK-NEXT: <dict>
4495// CHECK-NEXT: <key>kind</key><string>control</string>
4496// CHECK-NEXT: <key>edges</key>
Gabor Horvathefec1632015-10-22 11:53:04 +00004497// CHECK-NEXT: <array>
4498// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00004499// CHECK-NEXT: <key>start</key>
4500// CHECK-NEXT: <array>
4501// CHECK-NEXT: <dict>
4502// CHECK-NEXT: <key>line</key><integer>246</integer>
4503// CHECK-NEXT: <key>col</key><integer>3</integer>
4504// CHECK-NEXT: <key>file</key><integer>0</integer>
4505// CHECK-NEXT: </dict>
4506// CHECK-NEXT: <dict>
4507// CHECK-NEXT: <key>line</key><integer>246</integer>
4508// CHECK-NEXT: <key>col</key><integer>18</integer>
4509// CHECK-NEXT: <key>file</key><integer>0</integer>
4510// CHECK-NEXT: </dict>
4511// CHECK-NEXT: </array>
4512// CHECK-NEXT: <key>end</key>
4513// CHECK-NEXT: <array>
4514// CHECK-NEXT: <dict>
4515// CHECK-NEXT: <key>line</key><integer>247</integer>
4516// CHECK-NEXT: <key>col</key><integer>3</integer>
4517// CHECK-NEXT: <key>file</key><integer>0</integer>
4518// CHECK-NEXT: </dict>
4519// CHECK-NEXT: <dict>
4520// CHECK-NEXT: <key>line</key><integer>247</integer>
4521// CHECK-NEXT: <key>col</key><integer>25</integer>
4522// CHECK-NEXT: <key>file</key><integer>0</integer>
4523// CHECK-NEXT: </dict>
4524// CHECK-NEXT: </array>
Gabor Horvathefec1632015-10-22 11:53:04 +00004525// CHECK-NEXT: </dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00004526// CHECK-NEXT: </array>
4527// CHECK-NEXT: </dict>
4528// CHECK-NEXT: <dict>
4529// CHECK-NEXT: <key>kind</key><string>control</string>
4530// CHECK-NEXT: <key>edges</key>
4531// CHECK-NEXT: <array>
Gabor Horvathefec1632015-10-22 11:53:04 +00004532// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00004533// CHECK-NEXT: <key>start</key>
4534// CHECK-NEXT: <array>
4535// CHECK-NEXT: <dict>
4536// CHECK-NEXT: <key>line</key><integer>247</integer>
4537// CHECK-NEXT: <key>col</key><integer>3</integer>
4538// CHECK-NEXT: <key>file</key><integer>0</integer>
4539// CHECK-NEXT: </dict>
4540// CHECK-NEXT: <dict>
4541// CHECK-NEXT: <key>line</key><integer>247</integer>
4542// CHECK-NEXT: <key>col</key><integer>25</integer>
4543// CHECK-NEXT: <key>file</key><integer>0</integer>
4544// CHECK-NEXT: </dict>
4545// CHECK-NEXT: </array>
4546// CHECK-NEXT: <key>end</key>
4547// CHECK-NEXT: <array>
4548// CHECK-NEXT: <dict>
4549// CHECK-NEXT: <key>line</key><integer>247</integer>
4550// CHECK-NEXT: <key>col</key><integer>27</integer>
4551// CHECK-NEXT: <key>file</key><integer>0</integer>
4552// CHECK-NEXT: </dict>
4553// CHECK-NEXT: <dict>
4554// CHECK-NEXT: <key>line</key><integer>247</integer>
4555// CHECK-NEXT: <key>col</key><integer>27</integer>
4556// CHECK-NEXT: <key>file</key><integer>0</integer>
4557// CHECK-NEXT: </dict>
4558// CHECK-NEXT: </array>
Gabor Horvathefec1632015-10-22 11:53:04 +00004559// CHECK-NEXT: </dict>
4560// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +00004561// CHECK-NEXT: </dict>
4562// CHECK-NEXT: <dict>
4563// CHECK-NEXT: <key>kind</key><string>event</string>
4564// CHECK-NEXT: <key>location</key>
4565// CHECK-NEXT: <dict>
4566// CHECK-NEXT: <key>line</key><integer>247</integer>
4567// CHECK-NEXT: <key>col</key><integer>27</integer>
4568// CHECK-NEXT: <key>file</key><integer>0</integer>
4569// CHECK-NEXT: </dict>
4570// CHECK-NEXT: <key>ranges</key>
Gabor Horvathefec1632015-10-22 11:53:04 +00004571// CHECK-NEXT: <array>
Devin Coughlinab139a92016-12-05 16:28:47 +00004572// CHECK-NEXT: <array>
4573// CHECK-NEXT: <dict>
4574// CHECK-NEXT: <key>line</key><integer>247</integer>
4575// CHECK-NEXT: <key>col</key><integer>27</integer>
4576// CHECK-NEXT: <key>file</key><integer>0</integer>
4577// CHECK-NEXT: </dict>
4578// CHECK-NEXT: <dict>
4579// CHECK-NEXT: <key>line</key><integer>247</integer>
4580// CHECK-NEXT: <key>col</key><integer>27</integer>
4581// CHECK-NEXT: <key>file</key><integer>0</integer>
4582// CHECK-NEXT: </dict>
4583// CHECK-NEXT: </array>
Gabor Horvathefec1632015-10-22 11:53:04 +00004584// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +00004585// CHECK-NEXT: <key>depth</key><integer>0</integer>
4586// CHECK-NEXT: <key>extended_message</key>
4587// CHECK-NEXT: <string>Conversion from value of type &apos;MutableArray&lt;NSString *&gt; *&apos; to incompatible type &apos;MutableArray&lt;NSMutableString *&gt; *&apos;</string>
4588// CHECK-NEXT: <key>message</key>
4589// CHECK-NEXT: <string>Conversion from value of type &apos;MutableArray&lt;NSString *&gt; *&apos; to incompatible type &apos;MutableArray&lt;NSMutableString *&gt; *&apos;</string>
4590// CHECK-NEXT: </dict>
4591// CHECK-NEXT: </array>
4592// CHECK-NEXT: <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>
4593// CHECK-NEXT: <key>category</key><string>Core Foundation/Objective-C</string>
4594// CHECK-NEXT: <key>type</key><string>Generics</string>
4595// CHECK-NEXT: <key>check_name</key><string>core.DynamicTypePropagation</string>
4596// CHECK-NEXT: <!-- This hash is experimental and going to change! -->
4597// CHECK-NEXT: <key>issue_hash_content_of_line_in_context</key><string>fb867af384c612fe5c09f821127eeaf0</string>
4598// CHECK-NEXT: <key>issue_context_kind</key><string>function</string>
4599// CHECK-NEXT: <key>issue_context</key><string>InferenceFromAPIWithBuggyTypes4</string>
4600// CHECK-NEXT: <key>issue_hash_function_offset</key><string>3</string>
4601// CHECK-NEXT: <key>location</key>
4602// CHECK-NEXT: <dict>
4603// CHECK-NEXT: <key>line</key><integer>247</integer>
4604// CHECK-NEXT: <key>col</key><integer>27</integer>
4605// CHECK-NEXT: <key>file</key><integer>0</integer>
4606// CHECK-NEXT: </dict>
4607// CHECK-NEXT: </dict>
4608// CHECK-NEXT: <dict>
4609// CHECK-NEXT: <key>path</key>
4610// CHECK-NEXT: <array>
Gabor Horvathefec1632015-10-22 11:53:04 +00004611// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00004612// CHECK-NEXT: <key>kind</key><string>control</string>
4613// CHECK-NEXT: <key>edges</key>
Gabor Horvathefec1632015-10-22 11:53:04 +00004614// CHECK-NEXT: <array>
4615// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00004616// CHECK-NEXT: <key>start</key>
4617// CHECK-NEXT: <array>
4618// CHECK-NEXT: <dict>
4619// CHECK-NEXT: <key>line</key><integer>259</integer>
4620// CHECK-NEXT: <key>col</key><integer>3</integer>
4621// CHECK-NEXT: <key>file</key><integer>0</integer>
4622// CHECK-NEXT: </dict>
4623// CHECK-NEXT: <dict>
4624// CHECK-NEXT: <key>line</key><integer>259</integer>
4625// CHECK-NEXT: <key>col</key><integer>9</integer>
4626// CHECK-NEXT: <key>file</key><integer>0</integer>
4627// CHECK-NEXT: </dict>
4628// CHECK-NEXT: </array>
4629// CHECK-NEXT: <key>end</key>
4630// CHECK-NEXT: <array>
4631// CHECK-NEXT: <dict>
4632// CHECK-NEXT: <key>line</key><integer>260</integer>
4633// CHECK-NEXT: <key>col</key><integer>3</integer>
4634// CHECK-NEXT: <key>file</key><integer>0</integer>
4635// CHECK-NEXT: </dict>
4636// CHECK-NEXT: <dict>
4637// CHECK-NEXT: <key>line</key><integer>260</integer>
4638// CHECK-NEXT: <key>col</key><integer>10</integer>
4639// CHECK-NEXT: <key>file</key><integer>0</integer>
4640// CHECK-NEXT: </dict>
4641// CHECK-NEXT: </array>
Gabor Horvathefec1632015-10-22 11:53:04 +00004642// CHECK-NEXT: </dict>
4643// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +00004644// CHECK-NEXT: </dict>
Gabor Horvathefec1632015-10-22 11:53:04 +00004645// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00004646// CHECK-NEXT: <key>kind</key><string>control</string>
4647// CHECK-NEXT: <key>edges</key>
Gabor Horvathefec1632015-10-22 11:53:04 +00004648// CHECK-NEXT: <array>
4649// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00004650// CHECK-NEXT: <key>start</key>
4651// CHECK-NEXT: <array>
4652// CHECK-NEXT: <dict>
4653// CHECK-NEXT: <key>line</key><integer>260</integer>
4654// CHECK-NEXT: <key>col</key><integer>3</integer>
4655// CHECK-NEXT: <key>file</key><integer>0</integer>
4656// CHECK-NEXT: </dict>
4657// CHECK-NEXT: <dict>
4658// CHECK-NEXT: <key>line</key><integer>260</integer>
4659// CHECK-NEXT: <key>col</key><integer>10</integer>
4660// CHECK-NEXT: <key>file</key><integer>0</integer>
4661// CHECK-NEXT: </dict>
4662// CHECK-NEXT: </array>
4663// CHECK-NEXT: <key>end</key>
4664// CHECK-NEXT: <array>
4665// CHECK-NEXT: <dict>
4666// CHECK-NEXT: <key>line</key><integer>260</integer>
4667// CHECK-NEXT: <key>col</key><integer>19</integer>
4668// CHECK-NEXT: <key>file</key><integer>0</integer>
4669// CHECK-NEXT: </dict>
4670// CHECK-NEXT: <dict>
4671// CHECK-NEXT: <key>line</key><integer>260</integer>
4672// CHECK-NEXT: <key>col</key><integer>19</integer>
4673// CHECK-NEXT: <key>file</key><integer>0</integer>
4674// CHECK-NEXT: </dict>
4675// CHECK-NEXT: </array>
Gabor Horvathefec1632015-10-22 11:53:04 +00004676// CHECK-NEXT: </dict>
4677// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +00004678// CHECK-NEXT: </dict>
4679// CHECK-NEXT: <dict>
4680// CHECK-NEXT: <key>kind</key><string>event</string>
4681// CHECK-NEXT: <key>location</key>
4682// CHECK-NEXT: <dict>
4683// CHECK-NEXT: <key>line</key><integer>260</integer>
4684// CHECK-NEXT: <key>col</key><integer>19</integer>
4685// CHECK-NEXT: <key>file</key><integer>0</integer>
4686// CHECK-NEXT: </dict>
4687// CHECK-NEXT: <key>ranges</key>
Gabor Horvathefec1632015-10-22 11:53:04 +00004688// CHECK-NEXT: <array>
Devin Coughlinab139a92016-12-05 16:28:47 +00004689// CHECK-NEXT: <array>
4690// CHECK-NEXT: <dict>
4691// CHECK-NEXT: <key>line</key><integer>260</integer>
4692// CHECK-NEXT: <key>col</key><integer>19</integer>
4693// CHECK-NEXT: <key>file</key><integer>0</integer>
4694// CHECK-NEXT: </dict>
4695// CHECK-NEXT: <dict>
4696// CHECK-NEXT: <key>line</key><integer>260</integer>
4697// CHECK-NEXT: <key>col</key><integer>38</integer>
4698// CHECK-NEXT: <key>file</key><integer>0</integer>
4699// CHECK-NEXT: </dict>
4700// CHECK-NEXT: </array>
Gabor Horvathefec1632015-10-22 11:53:04 +00004701// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +00004702// CHECK-NEXT: <key>depth</key><integer>0</integer>
4703// CHECK-NEXT: <key>extended_message</key>
4704// CHECK-NEXT: <string>Type &apos;NSNumber *&apos; is inferred from this context</string>
4705// CHECK-NEXT: <key>message</key>
4706// CHECK-NEXT: <string>Type &apos;NSNumber *&apos; is inferred from this context</string>
4707// CHECK-NEXT: </dict>
4708// CHECK-NEXT: <dict>
4709// CHECK-NEXT: <key>kind</key><string>event</string>
4710// CHECK-NEXT: <key>location</key>
4711// CHECK-NEXT: <dict>
4712// CHECK-NEXT: <key>line</key><integer>260</integer>
4713// CHECK-NEXT: <key>col</key><integer>19</integer>
4714// CHECK-NEXT: <key>file</key><integer>0</integer>
4715// CHECK-NEXT: </dict>
4716// CHECK-NEXT: <key>ranges</key>
Gabor Horvathefec1632015-10-22 11:53:04 +00004717// CHECK-NEXT: <array>
Devin Coughlinab139a92016-12-05 16:28:47 +00004718// CHECK-NEXT: <array>
4719// CHECK-NEXT: <dict>
4720// CHECK-NEXT: <key>line</key><integer>260</integer>
4721// CHECK-NEXT: <key>col</key><integer>19</integer>
4722// CHECK-NEXT: <key>file</key><integer>0</integer>
4723// CHECK-NEXT: </dict>
4724// CHECK-NEXT: <dict>
4725// CHECK-NEXT: <key>line</key><integer>260</integer>
4726// CHECK-NEXT: <key>col</key><integer>38</integer>
4727// CHECK-NEXT: <key>file</key><integer>0</integer>
4728// CHECK-NEXT: </dict>
4729// CHECK-NEXT: </array>
Gabor Horvathefec1632015-10-22 11:53:04 +00004730// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +00004731// CHECK-NEXT: <key>depth</key><integer>0</integer>
4732// CHECK-NEXT: <key>extended_message</key>
4733// CHECK-NEXT: <string>Object has a dynamic type &apos;NSNumber *&apos; which is incompatible with static type &apos;NSString *&apos;</string>
4734// CHECK-NEXT: <key>message</key>
4735// CHECK-NEXT: <string>Object has a dynamic type &apos;NSNumber *&apos; which is incompatible with static type &apos;NSString *&apos;</string>
4736// CHECK-NEXT: </dict>
4737// CHECK-NEXT: </array>
4738// CHECK-NEXT: <key>description</key><string>Object has a dynamic type &apos;NSNumber *&apos; which is incompatible with static type &apos;NSString *&apos;</string>
4739// CHECK-NEXT: <key>category</key><string>Type Error</string>
4740// CHECK-NEXT: <key>type</key><string>Dynamic and static type mismatch</string>
4741// CHECK-NEXT: <key>check_name</key><string>alpha.core.DynamicTypeChecker</string>
4742// CHECK-NEXT: <!-- This hash is experimental and going to change! -->
4743// CHECK-NEXT: <key>issue_hash_content_of_line_in_context</key><string>2e9f738345d9fa7dae2324ff7accd1ae</string>
4744// CHECK-NEXT: <key>issue_context_kind</key><string>function</string>
4745// CHECK-NEXT: <key>issue_context</key><string>workWithProperties</string>
4746// CHECK-NEXT: <key>issue_hash_function_offset</key><string>2</string>
4747// CHECK-NEXT: <key>location</key>
4748// CHECK-NEXT: <dict>
4749// CHECK-NEXT: <key>line</key><integer>260</integer>
4750// CHECK-NEXT: <key>col</key><integer>19</integer>
4751// CHECK-NEXT: <key>file</key><integer>0</integer>
4752// CHECK-NEXT: </dict>
4753// CHECK-NEXT: </dict>
4754// CHECK-NEXT: <dict>
4755// CHECK-NEXT: <key>path</key>
4756// CHECK-NEXT: <array>
Gabor Horvathefec1632015-10-22 11:53:04 +00004757// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00004758// CHECK-NEXT: <key>kind</key><string>control</string>
4759// CHECK-NEXT: <key>edges</key>
Gabor Horvathefec1632015-10-22 11:53:04 +00004760// CHECK-NEXT: <array>
4761// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00004762// CHECK-NEXT: <key>start</key>
4763// CHECK-NEXT: <array>
4764// CHECK-NEXT: <dict>
4765// CHECK-NEXT: <key>line</key><integer>259</integer>
4766// CHECK-NEXT: <key>col</key><integer>3</integer>
4767// CHECK-NEXT: <key>file</key><integer>0</integer>
4768// CHECK-NEXT: </dict>
4769// CHECK-NEXT: <dict>
4770// CHECK-NEXT: <key>line</key><integer>259</integer>
4771// CHECK-NEXT: <key>col</key><integer>9</integer>
4772// CHECK-NEXT: <key>file</key><integer>0</integer>
4773// CHECK-NEXT: </dict>
4774// CHECK-NEXT: </array>
4775// CHECK-NEXT: <key>end</key>
4776// CHECK-NEXT: <array>
4777// CHECK-NEXT: <dict>
4778// CHECK-NEXT: <key>line</key><integer>262</integer>
4779// CHECK-NEXT: <key>col</key><integer>3</integer>
4780// CHECK-NEXT: <key>file</key><integer>0</integer>
4781// CHECK-NEXT: </dict>
4782// CHECK-NEXT: <dict>
4783// CHECK-NEXT: <key>line</key><integer>262</integer>
4784// CHECK-NEXT: <key>col</key><integer>5</integer>
4785// CHECK-NEXT: <key>file</key><integer>0</integer>
4786// CHECK-NEXT: </dict>
4787// CHECK-NEXT: </array>
Gabor Horvathefec1632015-10-22 11:53:04 +00004788// CHECK-NEXT: </dict>
4789// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +00004790// CHECK-NEXT: </dict>
Gabor Horvathefec1632015-10-22 11:53:04 +00004791// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00004792// CHECK-NEXT: <key>kind</key><string>control</string>
4793// CHECK-NEXT: <key>edges</key>
Gabor Horvathefec1632015-10-22 11:53:04 +00004794// CHECK-NEXT: <array>
4795// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00004796// CHECK-NEXT: <key>start</key>
4797// CHECK-NEXT: <array>
4798// CHECK-NEXT: <dict>
4799// CHECK-NEXT: <key>line</key><integer>262</integer>
4800// CHECK-NEXT: <key>col</key><integer>3</integer>
4801// CHECK-NEXT: <key>file</key><integer>0</integer>
4802// CHECK-NEXT: </dict>
4803// CHECK-NEXT: <dict>
4804// CHECK-NEXT: <key>line</key><integer>262</integer>
4805// CHECK-NEXT: <key>col</key><integer>5</integer>
4806// CHECK-NEXT: <key>file</key><integer>0</integer>
4807// CHECK-NEXT: </dict>
4808// CHECK-NEXT: </array>
4809// CHECK-NEXT: <key>end</key>
4810// CHECK-NEXT: <array>
4811// CHECK-NEXT: <dict>
4812// CHECK-NEXT: <key>line</key><integer>262</integer>
4813// CHECK-NEXT: <key>col</key><integer>9</integer>
4814// CHECK-NEXT: <key>file</key><integer>0</integer>
4815// CHECK-NEXT: </dict>
4816// CHECK-NEXT: <dict>
4817// CHECK-NEXT: <key>line</key><integer>262</integer>
4818// CHECK-NEXT: <key>col</key><integer>9</integer>
4819// CHECK-NEXT: <key>file</key><integer>0</integer>
4820// CHECK-NEXT: </dict>
4821// CHECK-NEXT: </array>
Gabor Horvathefec1632015-10-22 11:53:04 +00004822// CHECK-NEXT: </dict>
4823// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +00004824// CHECK-NEXT: </dict>
4825// CHECK-NEXT: <dict>
4826// CHECK-NEXT: <key>kind</key><string>event</string>
4827// CHECK-NEXT: <key>location</key>
4828// CHECK-NEXT: <dict>
4829// CHECK-NEXT: <key>line</key><integer>262</integer>
4830// CHECK-NEXT: <key>col</key><integer>9</integer>
4831// CHECK-NEXT: <key>file</key><integer>0</integer>
4832// CHECK-NEXT: </dict>
4833// CHECK-NEXT: <key>ranges</key>
Gabor Horvathefec1632015-10-22 11:53:04 +00004834// CHECK-NEXT: <array>
Devin Coughlinab139a92016-12-05 16:28:47 +00004835// CHECK-NEXT: <array>
4836// CHECK-NEXT: <dict>
4837// CHECK-NEXT: <key>line</key><integer>262</integer>
4838// CHECK-NEXT: <key>col</key><integer>9</integer>
4839// CHECK-NEXT: <key>file</key><integer>0</integer>
4840// CHECK-NEXT: </dict>
4841// CHECK-NEXT: <dict>
4842// CHECK-NEXT: <key>line</key><integer>262</integer>
4843// CHECK-NEXT: <key>col</key><integer>23</integer>
4844// CHECK-NEXT: <key>file</key><integer>0</integer>
4845// CHECK-NEXT: </dict>
4846// CHECK-NEXT: </array>
Gabor Horvathefec1632015-10-22 11:53:04 +00004847// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +00004848// CHECK-NEXT: <key>depth</key><integer>0</integer>
4849// CHECK-NEXT: <key>extended_message</key>
4850// CHECK-NEXT: <string>Type &apos;NSNumber *&apos; is inferred from this context</string>
4851// CHECK-NEXT: <key>message</key>
4852// CHECK-NEXT: <string>Type &apos;NSNumber *&apos; is inferred from this context</string>
4853// CHECK-NEXT: </dict>
4854// CHECK-NEXT: <dict>
4855// CHECK-NEXT: <key>kind</key><string>event</string>
4856// CHECK-NEXT: <key>location</key>
4857// CHECK-NEXT: <dict>
4858// CHECK-NEXT: <key>line</key><integer>262</integer>
4859// CHECK-NEXT: <key>col</key><integer>9</integer>
4860// CHECK-NEXT: <key>file</key><integer>0</integer>
4861// CHECK-NEXT: </dict>
4862// CHECK-NEXT: <key>ranges</key>
Gabor Horvathefec1632015-10-22 11:53:04 +00004863// CHECK-NEXT: <array>
Devin Coughlinab139a92016-12-05 16:28:47 +00004864// CHECK-NEXT: <array>
4865// CHECK-NEXT: <dict>
4866// CHECK-NEXT: <key>line</key><integer>262</integer>
4867// CHECK-NEXT: <key>col</key><integer>9</integer>
4868// CHECK-NEXT: <key>file</key><integer>0</integer>
4869// CHECK-NEXT: </dict>
4870// CHECK-NEXT: <dict>
4871// CHECK-NEXT: <key>line</key><integer>262</integer>
4872// CHECK-NEXT: <key>col</key><integer>23</integer>
4873// CHECK-NEXT: <key>file</key><integer>0</integer>
4874// CHECK-NEXT: </dict>
4875// CHECK-NEXT: </array>
Gabor Horvathefec1632015-10-22 11:53:04 +00004876// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +00004877// CHECK-NEXT: <key>depth</key><integer>0</integer>
4878// CHECK-NEXT: <key>extended_message</key>
4879// CHECK-NEXT: <string>Object has a dynamic type &apos;NSNumber *&apos; which is incompatible with static type &apos;NSString *&apos;</string>
4880// CHECK-NEXT: <key>message</key>
4881// CHECK-NEXT: <string>Object has a dynamic type &apos;NSNumber *&apos; which is incompatible with static type &apos;NSString *&apos;</string>
4882// CHECK-NEXT: </dict>
4883// CHECK-NEXT: </array>
4884// CHECK-NEXT: <key>description</key><string>Object has a dynamic type &apos;NSNumber *&apos; which is incompatible with static type &apos;NSString *&apos;</string>
4885// CHECK-NEXT: <key>category</key><string>Type Error</string>
4886// CHECK-NEXT: <key>type</key><string>Dynamic and static type mismatch</string>
4887// CHECK-NEXT: <key>check_name</key><string>alpha.core.DynamicTypeChecker</string>
4888// CHECK-NEXT: <!-- This hash is experimental and going to change! -->
4889// CHECK-NEXT: <key>issue_hash_content_of_line_in_context</key><string>d85392b4efadf710b8da65a043a65e24</string>
4890// CHECK-NEXT: <key>issue_context_kind</key><string>function</string>
4891// CHECK-NEXT: <key>issue_context</key><string>workWithProperties</string>
4892// CHECK-NEXT: <key>issue_hash_function_offset</key><string>4</string>
4893// CHECK-NEXT: <key>location</key>
4894// CHECK-NEXT: <dict>
4895// CHECK-NEXT: <key>line</key><integer>262</integer>
4896// CHECK-NEXT: <key>col</key><integer>9</integer>
4897// CHECK-NEXT: <key>file</key><integer>0</integer>
4898// CHECK-NEXT: </dict>
4899// CHECK-NEXT: </dict>
4900// CHECK-NEXT: <dict>
4901// CHECK-NEXT: <key>path</key>
4902// CHECK-NEXT: <array>
Gabor Horvathefec1632015-10-22 11:53:04 +00004903// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00004904// CHECK-NEXT: <key>kind</key><string>control</string>
4905// CHECK-NEXT: <key>edges</key>
Gabor Horvathefec1632015-10-22 11:53:04 +00004906// CHECK-NEXT: <array>
4907// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00004908// CHECK-NEXT: <key>start</key>
4909// CHECK-NEXT: <array>
4910// CHECK-NEXT: <dict>
4911// CHECK-NEXT: <key>line</key><integer>259</integer>
4912// CHECK-NEXT: <key>col</key><integer>3</integer>
4913// CHECK-NEXT: <key>file</key><integer>0</integer>
4914// CHECK-NEXT: </dict>
4915// CHECK-NEXT: <dict>
4916// CHECK-NEXT: <key>line</key><integer>259</integer>
4917// CHECK-NEXT: <key>col</key><integer>9</integer>
4918// CHECK-NEXT: <key>file</key><integer>0</integer>
4919// CHECK-NEXT: </dict>
4920// CHECK-NEXT: </array>
4921// CHECK-NEXT: <key>end</key>
4922// CHECK-NEXT: <array>
4923// CHECK-NEXT: <dict>
4924// CHECK-NEXT: <key>line</key><integer>264</integer>
4925// CHECK-NEXT: <key>col</key><integer>3</integer>
4926// CHECK-NEXT: <key>file</key><integer>0</integer>
4927// CHECK-NEXT: </dict>
4928// CHECK-NEXT: <dict>
4929// CHECK-NEXT: <key>line</key><integer>264</integer>
4930// CHECK-NEXT: <key>col</key><integer>5</integer>
4931// CHECK-NEXT: <key>file</key><integer>0</integer>
4932// CHECK-NEXT: </dict>
4933// CHECK-NEXT: </array>
Gabor Horvathefec1632015-10-22 11:53:04 +00004934// CHECK-NEXT: </dict>
4935// CHECK-NEXT: </array>
Gabor Horvathefec1632015-10-22 11:53:04 +00004936// CHECK-NEXT: </dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00004937// CHECK-NEXT: <dict>
4938// CHECK-NEXT: <key>kind</key><string>control</string>
4939// CHECK-NEXT: <key>edges</key>
Gabor Horvathefec1632015-10-22 11:53:04 +00004940// CHECK-NEXT: <array>
4941// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00004942// CHECK-NEXT: <key>start</key>
4943// CHECK-NEXT: <array>
4944// CHECK-NEXT: <dict>
4945// CHECK-NEXT: <key>line</key><integer>264</integer>
4946// CHECK-NEXT: <key>col</key><integer>3</integer>
4947// CHECK-NEXT: <key>file</key><integer>0</integer>
4948// CHECK-NEXT: </dict>
4949// CHECK-NEXT: <dict>
4950// CHECK-NEXT: <key>line</key><integer>264</integer>
4951// CHECK-NEXT: <key>col</key><integer>5</integer>
4952// CHECK-NEXT: <key>file</key><integer>0</integer>
4953// CHECK-NEXT: </dict>
4954// CHECK-NEXT: </array>
4955// CHECK-NEXT: <key>end</key>
4956// CHECK-NEXT: <array>
4957// CHECK-NEXT: <dict>
4958// CHECK-NEXT: <key>line</key><integer>264</integer>
4959// CHECK-NEXT: <key>col</key><integer>11</integer>
4960// CHECK-NEXT: <key>file</key><integer>0</integer>
4961// CHECK-NEXT: </dict>
4962// CHECK-NEXT: <dict>
4963// CHECK-NEXT: <key>line</key><integer>264</integer>
4964// CHECK-NEXT: <key>col</key><integer>21</integer>
4965// CHECK-NEXT: <key>file</key><integer>0</integer>
4966// CHECK-NEXT: </dict>
4967// CHECK-NEXT: </array>
Gabor Horvathefec1632015-10-22 11:53:04 +00004968// CHECK-NEXT: </dict>
4969// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +00004970// CHECK-NEXT: </dict>
4971// CHECK-NEXT: <dict>
4972// CHECK-NEXT: <key>kind</key><string>event</string>
4973// CHECK-NEXT: <key>location</key>
4974// CHECK-NEXT: <dict>
4975// CHECK-NEXT: <key>line</key><integer>264</integer>
4976// CHECK-NEXT: <key>col</key><integer>11</integer>
4977// CHECK-NEXT: <key>file</key><integer>0</integer>
4978// CHECK-NEXT: </dict>
4979// CHECK-NEXT: <key>ranges</key>
Gabor Horvathefec1632015-10-22 11:53:04 +00004980// CHECK-NEXT: <array>
Devin Coughlinab139a92016-12-05 16:28:47 +00004981// CHECK-NEXT: <array>
4982// CHECK-NEXT: <dict>
4983// CHECK-NEXT: <key>line</key><integer>264</integer>
4984// CHECK-NEXT: <key>col</key><integer>11</integer>
4985// CHECK-NEXT: <key>file</key><integer>0</integer>
4986// CHECK-NEXT: </dict>
4987// CHECK-NEXT: <dict>
4988// CHECK-NEXT: <key>line</key><integer>264</integer>
4989// CHECK-NEXT: <key>col</key><integer>21</integer>
4990// CHECK-NEXT: <key>file</key><integer>0</integer>
4991// CHECK-NEXT: </dict>
4992// CHECK-NEXT: </array>
Gabor Horvathefec1632015-10-22 11:53:04 +00004993// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +00004994// CHECK-NEXT: <key>depth</key><integer>0</integer>
4995// CHECK-NEXT: <key>extended_message</key>
4996// CHECK-NEXT: <string>Type &apos;NSNumber *&apos; is inferred from this context</string>
4997// CHECK-NEXT: <key>message</key>
4998// CHECK-NEXT: <string>Type &apos;NSNumber *&apos; is inferred from this context</string>
4999// CHECK-NEXT: </dict>
5000// CHECK-NEXT: <dict>
5001// CHECK-NEXT: <key>kind</key><string>event</string>
5002// CHECK-NEXT: <key>location</key>
5003// CHECK-NEXT: <dict>
5004// CHECK-NEXT: <key>line</key><integer>264</integer>
5005// CHECK-NEXT: <key>col</key><integer>9</integer>
5006// CHECK-NEXT: <key>file</key><integer>0</integer>
5007// CHECK-NEXT: </dict>
5008// CHECK-NEXT: <key>ranges</key>
Gabor Horvathefec1632015-10-22 11:53:04 +00005009// CHECK-NEXT: <array>
Devin Coughlinab139a92016-12-05 16:28:47 +00005010// CHECK-NEXT: <array>
5011// CHECK-NEXT: <dict>
5012// CHECK-NEXT: <key>line</key><integer>264</integer>
5013// CHECK-NEXT: <key>col</key><integer>9</integer>
5014// CHECK-NEXT: <key>file</key><integer>0</integer>
5015// CHECK-NEXT: </dict>
5016// CHECK-NEXT: <dict>
5017// CHECK-NEXT: <key>line</key><integer>264</integer>
5018// CHECK-NEXT: <key>col</key><integer>21</integer>
5019// CHECK-NEXT: <key>file</key><integer>0</integer>
5020// CHECK-NEXT: </dict>
5021// CHECK-NEXT: </array>
Gabor Horvathefec1632015-10-22 11:53:04 +00005022// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +00005023// CHECK-NEXT: <key>depth</key><integer>0</integer>
5024// CHECK-NEXT: <key>extended_message</key>
5025// CHECK-NEXT: <string>Object has a dynamic type &apos;NSNumber *&apos; which is incompatible with static type &apos;NSString *&apos;</string>
5026// CHECK-NEXT: <key>message</key>
5027// CHECK-NEXT: <string>Object has a dynamic type &apos;NSNumber *&apos; which is incompatible with static type &apos;NSString *&apos;</string>
5028// CHECK-NEXT: </dict>
5029// CHECK-NEXT: </array>
5030// CHECK-NEXT: <key>description</key><string>Object has a dynamic type &apos;NSNumber *&apos; which is incompatible with static type &apos;NSString *&apos;</string>
5031// CHECK-NEXT: <key>category</key><string>Type Error</string>
5032// CHECK-NEXT: <key>type</key><string>Dynamic and static type mismatch</string>
5033// CHECK-NEXT: <key>check_name</key><string>alpha.core.DynamicTypeChecker</string>
5034// CHECK-NEXT: <!-- This hash is experimental and going to change! -->
5035// CHECK-NEXT: <key>issue_hash_content_of_line_in_context</key><string>456c6227549a5e577088c9dce4cea452</string>
5036// CHECK-NEXT: <key>issue_context_kind</key><string>function</string>
5037// CHECK-NEXT: <key>issue_context</key><string>workWithProperties</string>
5038// CHECK-NEXT: <key>issue_hash_function_offset</key><string>6</string>
5039// CHECK-NEXT: <key>location</key>
5040// CHECK-NEXT: <dict>
5041// CHECK-NEXT: <key>line</key><integer>264</integer>
5042// CHECK-NEXT: <key>col</key><integer>9</integer>
5043// CHECK-NEXT: <key>file</key><integer>0</integer>
5044// CHECK-NEXT: </dict>
5045// CHECK-NEXT: </dict>
5046// CHECK-NEXT: <dict>
5047// CHECK-NEXT: <key>path</key>
5048// CHECK-NEXT: <array>
Gabor Horvathefec1632015-10-22 11:53:04 +00005049// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00005050// CHECK-NEXT: <key>kind</key><string>control</string>
5051// CHECK-NEXT: <key>edges</key>
Gabor Horvathefec1632015-10-22 11:53:04 +00005052// CHECK-NEXT: <array>
5053// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00005054// CHECK-NEXT: <key>start</key>
5055// CHECK-NEXT: <array>
5056// CHECK-NEXT: <dict>
5057// CHECK-NEXT: <key>line</key><integer>259</integer>
5058// CHECK-NEXT: <key>col</key><integer>3</integer>
5059// CHECK-NEXT: <key>file</key><integer>0</integer>
5060// CHECK-NEXT: </dict>
5061// CHECK-NEXT: <dict>
5062// CHECK-NEXT: <key>line</key><integer>259</integer>
5063// CHECK-NEXT: <key>col</key><integer>9</integer>
5064// CHECK-NEXT: <key>file</key><integer>0</integer>
5065// CHECK-NEXT: </dict>
5066// CHECK-NEXT: </array>
5067// CHECK-NEXT: <key>end</key>
5068// CHECK-NEXT: <array>
5069// CHECK-NEXT: <dict>
5070// CHECK-NEXT: <key>line</key><integer>266</integer>
5071// CHECK-NEXT: <key>col</key><integer>3</integer>
5072// CHECK-NEXT: <key>file</key><integer>0</integer>
5073// CHECK-NEXT: </dict>
5074// CHECK-NEXT: <dict>
5075// CHECK-NEXT: <key>line</key><integer>266</integer>
5076// CHECK-NEXT: <key>col</key><integer>5</integer>
5077// CHECK-NEXT: <key>file</key><integer>0</integer>
5078// CHECK-NEXT: </dict>
5079// CHECK-NEXT: </array>
Gabor Horvathefec1632015-10-22 11:53:04 +00005080// CHECK-NEXT: </dict>
5081// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +00005082// CHECK-NEXT: </dict>
Gabor Horvathefec1632015-10-22 11:53:04 +00005083// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00005084// CHECK-NEXT: <key>kind</key><string>control</string>
5085// CHECK-NEXT: <key>edges</key>
Gabor Horvathefec1632015-10-22 11:53:04 +00005086// CHECK-NEXT: <array>
5087// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00005088// CHECK-NEXT: <key>start</key>
5089// CHECK-NEXT: <array>
5090// CHECK-NEXT: <dict>
5091// CHECK-NEXT: <key>line</key><integer>266</integer>
5092// CHECK-NEXT: <key>col</key><integer>3</integer>
5093// CHECK-NEXT: <key>file</key><integer>0</integer>
5094// CHECK-NEXT: </dict>
5095// CHECK-NEXT: <dict>
5096// CHECK-NEXT: <key>line</key><integer>266</integer>
5097// CHECK-NEXT: <key>col</key><integer>5</integer>
5098// CHECK-NEXT: <key>file</key><integer>0</integer>
5099// CHECK-NEXT: </dict>
5100// CHECK-NEXT: </array>
5101// CHECK-NEXT: <key>end</key>
5102// CHECK-NEXT: <array>
5103// CHECK-NEXT: <dict>
5104// CHECK-NEXT: <key>line</key><integer>266</integer>
5105// CHECK-NEXT: <key>col</key><integer>9</integer>
5106// CHECK-NEXT: <key>file</key><integer>0</integer>
5107// CHECK-NEXT: </dict>
5108// CHECK-NEXT: <dict>
5109// CHECK-NEXT: <key>line</key><integer>266</integer>
5110// CHECK-NEXT: <key>col</key><integer>9</integer>
5111// CHECK-NEXT: <key>file</key><integer>0</integer>
5112// CHECK-NEXT: </dict>
5113// CHECK-NEXT: </array>
Gabor Horvathefec1632015-10-22 11:53:04 +00005114// CHECK-NEXT: </dict>
5115// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +00005116// CHECK-NEXT: </dict>
5117// CHECK-NEXT: <dict>
5118// CHECK-NEXT: <key>kind</key><string>event</string>
5119// CHECK-NEXT: <key>location</key>
5120// CHECK-NEXT: <dict>
5121// CHECK-NEXT: <key>line</key><integer>266</integer>
5122// CHECK-NEXT: <key>col</key><integer>9</integer>
5123// CHECK-NEXT: <key>file</key><integer>0</integer>
5124// CHECK-NEXT: </dict>
5125// CHECK-NEXT: <key>ranges</key>
Gabor Horvathefec1632015-10-22 11:53:04 +00005126// CHECK-NEXT: <array>
Devin Coughlinab139a92016-12-05 16:28:47 +00005127// CHECK-NEXT: <array>
5128// CHECK-NEXT: <dict>
5129// CHECK-NEXT: <key>line</key><integer>266</integer>
5130// CHECK-NEXT: <key>col</key><integer>9</integer>
5131// CHECK-NEXT: <key>file</key><integer>0</integer>
5132// CHECK-NEXT: </dict>
5133// CHECK-NEXT: <dict>
5134// CHECK-NEXT: <key>line</key><integer>266</integer>
5135// CHECK-NEXT: <key>col</key><integer>9</integer>
5136// CHECK-NEXT: <key>file</key><integer>0</integer>
5137// CHECK-NEXT: </dict>
5138// CHECK-NEXT: </array>
Gabor Horvathefec1632015-10-22 11:53:04 +00005139// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +00005140// CHECK-NEXT: <key>depth</key><integer>0</integer>
5141// CHECK-NEXT: <key>extended_message</key>
5142// CHECK-NEXT: <string>Type &apos;NSNumber *&apos; is inferred from this context</string>
5143// CHECK-NEXT: <key>message</key>
5144// CHECK-NEXT: <string>Type &apos;NSNumber *&apos; is inferred from this context</string>
5145// CHECK-NEXT: </dict>
5146// CHECK-NEXT: <dict>
5147// CHECK-NEXT: <key>kind</key><string>event</string>
5148// CHECK-NEXT: <key>location</key>
5149// CHECK-NEXT: <dict>
5150// CHECK-NEXT: <key>line</key><integer>266</integer>
5151// CHECK-NEXT: <key>col</key><integer>9</integer>
5152// CHECK-NEXT: <key>file</key><integer>0</integer>
5153// CHECK-NEXT: </dict>
5154// CHECK-NEXT: <key>ranges</key>
Gabor Horvathefec1632015-10-22 11:53:04 +00005155// CHECK-NEXT: <array>
Devin Coughlinab139a92016-12-05 16:28:47 +00005156// CHECK-NEXT: <array>
5157// CHECK-NEXT: <dict>
5158// CHECK-NEXT: <key>line</key><integer>266</integer>
5159// CHECK-NEXT: <key>col</key><integer>9</integer>
5160// CHECK-NEXT: <key>file</key><integer>0</integer>
5161// CHECK-NEXT: </dict>
5162// CHECK-NEXT: <dict>
5163// CHECK-NEXT: <key>line</key><integer>266</integer>
5164// CHECK-NEXT: <key>col</key><integer>12</integer>
5165// CHECK-NEXT: <key>file</key><integer>0</integer>
5166// CHECK-NEXT: </dict>
5167// CHECK-NEXT: </array>
Gabor Horvathefec1632015-10-22 11:53:04 +00005168// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +00005169// CHECK-NEXT: <key>depth</key><integer>0</integer>
5170// CHECK-NEXT: <key>extended_message</key>
5171// CHECK-NEXT: <string>Object has a dynamic type &apos;NSNumber *&apos; which is incompatible with static type &apos;NSString *&apos;</string>
5172// CHECK-NEXT: <key>message</key>
5173// CHECK-NEXT: <string>Object has a dynamic type &apos;NSNumber *&apos; which is incompatible with static type &apos;NSString *&apos;</string>
5174// CHECK-NEXT: </dict>
5175// CHECK-NEXT: </array>
5176// CHECK-NEXT: <key>description</key><string>Object has a dynamic type &apos;NSNumber *&apos; which is incompatible with static type &apos;NSString *&apos;</string>
5177// CHECK-NEXT: <key>category</key><string>Type Error</string>
5178// CHECK-NEXT: <key>type</key><string>Dynamic and static type mismatch</string>
5179// CHECK-NEXT: <key>check_name</key><string>alpha.core.DynamicTypeChecker</string>
5180// CHECK-NEXT: <!-- This hash is experimental and going to change! -->
5181// CHECK-NEXT: <key>issue_hash_content_of_line_in_context</key><string>df7f090d2b72ac07bc2351177ed6552d</string>
5182// CHECK-NEXT: <key>issue_context_kind</key><string>function</string>
5183// CHECK-NEXT: <key>issue_context</key><string>workWithProperties</string>
5184// CHECK-NEXT: <key>issue_hash_function_offset</key><string>8</string>
5185// CHECK-NEXT: <key>location</key>
5186// CHECK-NEXT: <dict>
5187// CHECK-NEXT: <key>line</key><integer>266</integer>
5188// CHECK-NEXT: <key>col</key><integer>9</integer>
5189// CHECK-NEXT: <key>file</key><integer>0</integer>
5190// CHECK-NEXT: </dict>
5191// CHECK-NEXT: </dict>
5192// CHECK-NEXT: <dict>
5193// CHECK-NEXT: <key>path</key>
5194// CHECK-NEXT: <array>
Gabor Horvathefec1632015-10-22 11:53:04 +00005195// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00005196// CHECK-NEXT: <key>kind</key><string>event</string>
5197// CHECK-NEXT: <key>location</key>
5198// CHECK-NEXT: <dict>
5199// CHECK-NEXT: <key>line</key><integer>272</integer>
5200// CHECK-NEXT: <key>col</key><integer>7</integer>
5201// CHECK-NEXT: <key>file</key><integer>0</integer>
5202// CHECK-NEXT: </dict>
5203// CHECK-NEXT: <key>ranges</key>
5204// CHECK-NEXT: <array>
5205// CHECK-NEXT: <array>
5206// CHECK-NEXT: <dict>
5207// CHECK-NEXT: <key>line</key><integer>272</integer>
5208// CHECK-NEXT: <key>col</key><integer>7</integer>
5209// CHECK-NEXT: <key>file</key><integer>0</integer>
5210// CHECK-NEXT: </dict>
5211// CHECK-NEXT: <dict>
5212// CHECK-NEXT: <key>line</key><integer>272</integer>
5213// CHECK-NEXT: <key>col</key><integer>7</integer>
5214// CHECK-NEXT: <key>file</key><integer>0</integer>
5215// CHECK-NEXT: </dict>
5216// CHECK-NEXT: </array>
5217// CHECK-NEXT: </array>
5218// CHECK-NEXT: <key>depth</key><integer>0</integer>
5219// CHECK-NEXT: <key>extended_message</key>
5220// CHECK-NEXT: <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>
5221// CHECK-NEXT: <key>message</key>
5222// CHECK-NEXT: <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 Horvathefec1632015-10-22 11:53:04 +00005223// CHECK-NEXT: </dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00005224// CHECK-NEXT: <dict>
5225// CHECK-NEXT: <key>kind</key><string>control</string>
5226// CHECK-NEXT: <key>edges</key>
Gabor Horvathefec1632015-10-22 11:53:04 +00005227// CHECK-NEXT: <array>
5228// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00005229// CHECK-NEXT: <key>start</key>
5230// CHECK-NEXT: <array>
5231// CHECK-NEXT: <dict>
5232// CHECK-NEXT: <key>line</key><integer>272</integer>
5233// CHECK-NEXT: <key>col</key><integer>3</integer>
5234// CHECK-NEXT: <key>file</key><integer>0</integer>
5235// CHECK-NEXT: </dict>
5236// CHECK-NEXT: <dict>
5237// CHECK-NEXT: <key>line</key><integer>272</integer>
5238// CHECK-NEXT: <key>col</key><integer>3</integer>
5239// CHECK-NEXT: <key>file</key><integer>0</integer>
5240// CHECK-NEXT: </dict>
5241// CHECK-NEXT: </array>
5242// CHECK-NEXT: <key>end</key>
5243// CHECK-NEXT: <array>
5244// CHECK-NEXT: <dict>
5245// CHECK-NEXT: <key>line</key><integer>273</integer>
5246// CHECK-NEXT: <key>col</key><integer>3</integer>
5247// CHECK-NEXT: <key>file</key><integer>0</integer>
5248// CHECK-NEXT: </dict>
5249// CHECK-NEXT: <dict>
5250// CHECK-NEXT: <key>line</key><integer>273</integer>
5251// CHECK-NEXT: <key>col</key><integer>4</integer>
5252// CHECK-NEXT: <key>file</key><integer>0</integer>
5253// CHECK-NEXT: </dict>
5254// CHECK-NEXT: </array>
Gabor Horvathefec1632015-10-22 11:53:04 +00005255// CHECK-NEXT: </dict>
5256// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +00005257// CHECK-NEXT: </dict>
Gabor Horvathefec1632015-10-22 11:53:04 +00005258// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00005259// CHECK-NEXT: <key>kind</key><string>control</string>
5260// CHECK-NEXT: <key>edges</key>
Gabor Horvathefec1632015-10-22 11:53:04 +00005261// CHECK-NEXT: <array>
5262// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00005263// CHECK-NEXT: <key>start</key>
5264// CHECK-NEXT: <array>
5265// CHECK-NEXT: <dict>
5266// CHECK-NEXT: <key>line</key><integer>273</integer>
5267// CHECK-NEXT: <key>col</key><integer>3</integer>
5268// CHECK-NEXT: <key>file</key><integer>0</integer>
5269// CHECK-NEXT: </dict>
5270// CHECK-NEXT: <dict>
5271// CHECK-NEXT: <key>line</key><integer>273</integer>
5272// CHECK-NEXT: <key>col</key><integer>4</integer>
5273// CHECK-NEXT: <key>file</key><integer>0</integer>
5274// CHECK-NEXT: </dict>
5275// CHECK-NEXT: </array>
5276// CHECK-NEXT: <key>end</key>
5277// CHECK-NEXT: <array>
5278// CHECK-NEXT: <dict>
5279// CHECK-NEXT: <key>line</key><integer>273</integer>
5280// CHECK-NEXT: <key>col</key><integer>7</integer>
5281// CHECK-NEXT: <key>file</key><integer>0</integer>
5282// CHECK-NEXT: </dict>
5283// CHECK-NEXT: <dict>
5284// CHECK-NEXT: <key>line</key><integer>273</integer>
5285// CHECK-NEXT: <key>col</key><integer>16</integer>
5286// CHECK-NEXT: <key>file</key><integer>0</integer>
5287// CHECK-NEXT: </dict>
5288// CHECK-NEXT: </array>
Gabor Horvathefec1632015-10-22 11:53:04 +00005289// CHECK-NEXT: </dict>
5290// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +00005291// CHECK-NEXT: </dict>
Gabor Horvathefec1632015-10-22 11:53:04 +00005292// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00005293// CHECK-NEXT: <key>kind</key><string>event</string>
5294// CHECK-NEXT: <key>location</key>
5295// CHECK-NEXT: <dict>
5296// CHECK-NEXT: <key>line</key><integer>273</integer>
5297// CHECK-NEXT: <key>col</key><integer>7</integer>
5298// CHECK-NEXT: <key>file</key><integer>0</integer>
5299// CHECK-NEXT: </dict>
5300// CHECK-NEXT: <key>ranges</key>
5301// CHECK-NEXT: <array>
5302// CHECK-NEXT: <array>
5303// CHECK-NEXT: <dict>
5304// CHECK-NEXT: <key>line</key><integer>273</integer>
5305// CHECK-NEXT: <key>col</key><integer>7</integer>
5306// CHECK-NEXT: <key>file</key><integer>0</integer>
5307// CHECK-NEXT: </dict>
5308// CHECK-NEXT: <dict>
5309// CHECK-NEXT: <key>line</key><integer>273</integer>
5310// CHECK-NEXT: <key>col</key><integer>23</integer>
5311// CHECK-NEXT: <key>file</key><integer>0</integer>
5312// CHECK-NEXT: </dict>
5313// CHECK-NEXT: </array>
5314// CHECK-NEXT: </array>
5315// CHECK-NEXT: <key>depth</key><integer>0</integer>
5316// CHECK-NEXT: <key>extended_message</key>
5317// CHECK-NEXT: <string>Assuming the condition is true</string>
5318// CHECK-NEXT: <key>message</key>
5319// CHECK-NEXT: <string>Assuming the condition is true</string>
Gabor Horvathefec1632015-10-22 11:53:04 +00005320// CHECK-NEXT: </dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00005321// CHECK-NEXT: <dict>
5322// CHECK-NEXT: <key>kind</key><string>control</string>
5323// CHECK-NEXT: <key>edges</key>
Gabor Horvathefec1632015-10-22 11:53:04 +00005324// CHECK-NEXT: <array>
5325// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00005326// CHECK-NEXT: <key>start</key>
5327// CHECK-NEXT: <array>
5328// CHECK-NEXT: <dict>
5329// CHECK-NEXT: <key>line</key><integer>273</integer>
5330// CHECK-NEXT: <key>col</key><integer>7</integer>
5331// CHECK-NEXT: <key>file</key><integer>0</integer>
5332// CHECK-NEXT: </dict>
5333// CHECK-NEXT: <dict>
5334// CHECK-NEXT: <key>line</key><integer>273</integer>
5335// CHECK-NEXT: <key>col</key><integer>16</integer>
5336// CHECK-NEXT: <key>file</key><integer>0</integer>
5337// CHECK-NEXT: </dict>
5338// CHECK-NEXT: </array>
5339// CHECK-NEXT: <key>end</key>
5340// CHECK-NEXT: <array>
5341// CHECK-NEXT: <dict>
5342// CHECK-NEXT: <key>line</key><integer>274</integer>
5343// CHECK-NEXT: <key>col</key><integer>5</integer>
5344// CHECK-NEXT: <key>file</key><integer>0</integer>
5345// CHECK-NEXT: </dict>
5346// CHECK-NEXT: <dict>
5347// CHECK-NEXT: <key>line</key><integer>274</integer>
5348// CHECK-NEXT: <key>col</key><integer>5</integer>
5349// CHECK-NEXT: <key>file</key><integer>0</integer>
5350// CHECK-NEXT: </dict>
5351// CHECK-NEXT: </array>
Gabor Horvathefec1632015-10-22 11:53:04 +00005352// CHECK-NEXT: </dict>
5353// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +00005354// CHECK-NEXT: </dict>
Artem Dergachev0c334062016-10-05 08:19:49 +00005355// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00005356// CHECK-NEXT: <key>kind</key><string>control</string>
5357// CHECK-NEXT: <key>edges</key>
Artem Dergachev0c334062016-10-05 08:19:49 +00005358// CHECK-NEXT: <array>
5359// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00005360// CHECK-NEXT: <key>start</key>
5361// CHECK-NEXT: <array>
5362// CHECK-NEXT: <dict>
5363// CHECK-NEXT: <key>line</key><integer>274</integer>
5364// CHECK-NEXT: <key>col</key><integer>5</integer>
5365// CHECK-NEXT: <key>file</key><integer>0</integer>
5366// CHECK-NEXT: </dict>
5367// CHECK-NEXT: <dict>
5368// CHECK-NEXT: <key>line</key><integer>274</integer>
5369// CHECK-NEXT: <key>col</key><integer>5</integer>
5370// CHECK-NEXT: <key>file</key><integer>0</integer>
5371// CHECK-NEXT: </dict>
5372// CHECK-NEXT: </array>
5373// CHECK-NEXT: <key>end</key>
5374// CHECK-NEXT: <array>
5375// CHECK-NEXT: <dict>
5376// CHECK-NEXT: <key>line</key><integer>275</integer>
5377// CHECK-NEXT: <key>col</key><integer>5</integer>
5378// CHECK-NEXT: <key>file</key><integer>0</integer>
5379// CHECK-NEXT: </dict>
5380// CHECK-NEXT: <dict>
5381// CHECK-NEXT: <key>line</key><integer>275</integer>
5382// CHECK-NEXT: <key>col</key><integer>5</integer>
5383// CHECK-NEXT: <key>file</key><integer>0</integer>
5384// CHECK-NEXT: </dict>
5385// CHECK-NEXT: </array>
Artem Dergachev0c334062016-10-05 08:19:49 +00005386// CHECK-NEXT: </dict>
5387// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +00005388// CHECK-NEXT: </dict>
5389// CHECK-NEXT: <dict>
5390// CHECK-NEXT: <key>kind</key><string>event</string>
5391// CHECK-NEXT: <key>location</key>
5392// CHECK-NEXT: <dict>
5393// CHECK-NEXT: <key>line</key><integer>275</integer>
5394// CHECK-NEXT: <key>col</key><integer>5</integer>
5395// CHECK-NEXT: <key>file</key><integer>0</integer>
5396// CHECK-NEXT: </dict>
5397// CHECK-NEXT: <key>ranges</key>
Artem Dergachev0c334062016-10-05 08:19:49 +00005398// CHECK-NEXT: <array>
Devin Coughlinab139a92016-12-05 16:28:47 +00005399// CHECK-NEXT: <array>
5400// CHECK-NEXT: <dict>
5401// CHECK-NEXT: <key>line</key><integer>275</integer>
5402// CHECK-NEXT: <key>col</key><integer>19</integer>
5403// CHECK-NEXT: <key>file</key><integer>0</integer>
5404// CHECK-NEXT: </dict>
5405// CHECK-NEXT: <dict>
5406// CHECK-NEXT: <key>line</key><integer>275</integer>
5407// CHECK-NEXT: <key>col</key><integer>41</integer>
5408// CHECK-NEXT: <key>file</key><integer>0</integer>
5409// CHECK-NEXT: </dict>
5410// CHECK-NEXT: </array>
Gabor Horvathefec1632015-10-22 11:53:04 +00005411// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +00005412// CHECK-NEXT: <key>depth</key><integer>0</integer>
5413// CHECK-NEXT: <key>extended_message</key>
5414// CHECK-NEXT: <string>Conversion from value of type &apos;NSString *&apos; to incompatible type &apos;NSMutableString *&apos;</string>
5415// CHECK-NEXT: <key>message</key>
5416// CHECK-NEXT: <string>Conversion from value of type &apos;NSString *&apos; to incompatible type &apos;NSMutableString *&apos;</string>
5417// CHECK-NEXT: </dict>
5418// CHECK-NEXT: </array>
5419// CHECK-NEXT: <key>description</key><string>Conversion from value of type &apos;NSString *&apos; to incompatible type &apos;NSMutableString *&apos;</string>
5420// CHECK-NEXT: <key>category</key><string>Core Foundation/Objective-C</string>
5421// CHECK-NEXT: <key>type</key><string>Generics</string>
5422// CHECK-NEXT: <key>check_name</key><string>core.DynamicTypePropagation</string>
5423// CHECK-NEXT: <!-- This hash is experimental and going to change! -->
5424// CHECK-NEXT: <key>issue_hash_content_of_line_in_context</key><string>a0fa75143d7a7ac234292642a6d93360</string>
5425// CHECK-NEXT: <key>issue_context_kind</key><string>function</string>
5426// CHECK-NEXT: <key>issue_context</key><string>findMethodDeclInTrackedType</string>
5427// CHECK-NEXT: <key>issue_hash_function_offset</key><string>4</string>
5428// CHECK-NEXT: <key>location</key>
5429// CHECK-NEXT: <dict>
5430// CHECK-NEXT: <key>line</key><integer>275</integer>
5431// CHECK-NEXT: <key>col</key><integer>5</integer>
5432// CHECK-NEXT: <key>file</key><integer>0</integer>
5433// CHECK-NEXT: </dict>
5434// CHECK-NEXT: </dict>
5435// CHECK-NEXT: <dict>
5436// CHECK-NEXT: <key>path</key>
5437// CHECK-NEXT: <array>
5438// CHECK-NEXT: <dict>
5439// CHECK-NEXT: <key>kind</key><string>event</string>
5440// CHECK-NEXT: <key>location</key>
5441// CHECK-NEXT: <dict>
5442// CHECK-NEXT: <key>line</key><integer>284</integer>
5443// CHECK-NEXT: <key>col</key><integer>7</integer>
5444// CHECK-NEXT: <key>file</key><integer>0</integer>
5445// CHECK-NEXT: </dict>
5446// CHECK-NEXT: <key>ranges</key>
Gabor Horvathefec1632015-10-22 11:53:04 +00005447// CHECK-NEXT: <array>
Devin Coughlinab139a92016-12-05 16:28:47 +00005448// CHECK-NEXT: <array>
5449// CHECK-NEXT: <dict>
5450// CHECK-NEXT: <key>line</key><integer>284</integer>
5451// CHECK-NEXT: <key>col</key><integer>7</integer>
5452// CHECK-NEXT: <key>file</key><integer>0</integer>
5453// CHECK-NEXT: </dict>
5454// CHECK-NEXT: <dict>
5455// CHECK-NEXT: <key>line</key><integer>284</integer>
5456// CHECK-NEXT: <key>col</key><integer>7</integer>
5457// CHECK-NEXT: <key>file</key><integer>0</integer>
5458// CHECK-NEXT: </dict>
5459// CHECK-NEXT: </array>
Gabor Horvathefec1632015-10-22 11:53:04 +00005460// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +00005461// CHECK-NEXT: <key>depth</key><integer>0</integer>
5462// CHECK-NEXT: <key>extended_message</key>
5463// CHECK-NEXT: <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>
5464// CHECK-NEXT: <key>message</key>
5465// CHECK-NEXT: <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>
5466// CHECK-NEXT: </dict>
Gabor Horvathefec1632015-10-22 11:53:04 +00005467// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00005468// CHECK-NEXT: <key>kind</key><string>control</string>
5469// CHECK-NEXT: <key>edges</key>
Gabor Horvathefec1632015-10-22 11:53:04 +00005470// CHECK-NEXT: <array>
5471// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00005472// CHECK-NEXT: <key>start</key>
5473// CHECK-NEXT: <array>
5474// CHECK-NEXT: <dict>
5475// CHECK-NEXT: <key>line</key><integer>284</integer>
5476// CHECK-NEXT: <key>col</key><integer>3</integer>
5477// CHECK-NEXT: <key>file</key><integer>0</integer>
5478// CHECK-NEXT: </dict>
5479// CHECK-NEXT: <dict>
5480// CHECK-NEXT: <key>line</key><integer>284</integer>
5481// CHECK-NEXT: <key>col</key><integer>3</integer>
5482// CHECK-NEXT: <key>file</key><integer>0</integer>
5483// CHECK-NEXT: </dict>
5484// CHECK-NEXT: </array>
5485// CHECK-NEXT: <key>end</key>
5486// CHECK-NEXT: <array>
5487// CHECK-NEXT: <dict>
5488// CHECK-NEXT: <key>line</key><integer>285</integer>
5489// CHECK-NEXT: <key>col</key><integer>3</integer>
5490// CHECK-NEXT: <key>file</key><integer>0</integer>
5491// CHECK-NEXT: </dict>
5492// CHECK-NEXT: <dict>
5493// CHECK-NEXT: <key>line</key><integer>285</integer>
5494// CHECK-NEXT: <key>col</key><integer>4</integer>
5495// CHECK-NEXT: <key>file</key><integer>0</integer>
5496// CHECK-NEXT: </dict>
5497// CHECK-NEXT: </array>
Gabor Horvathefec1632015-10-22 11:53:04 +00005498// CHECK-NEXT: </dict>
5499// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +00005500// CHECK-NEXT: </dict>
Gabor Horvathefec1632015-10-22 11:53:04 +00005501// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00005502// CHECK-NEXT: <key>kind</key><string>control</string>
5503// CHECK-NEXT: <key>edges</key>
Gabor Horvathefec1632015-10-22 11:53:04 +00005504// CHECK-NEXT: <array>
5505// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00005506// CHECK-NEXT: <key>start</key>
5507// CHECK-NEXT: <array>
5508// CHECK-NEXT: <dict>
5509// CHECK-NEXT: <key>line</key><integer>285</integer>
5510// CHECK-NEXT: <key>col</key><integer>3</integer>
5511// CHECK-NEXT: <key>file</key><integer>0</integer>
5512// CHECK-NEXT: </dict>
5513// CHECK-NEXT: <dict>
5514// CHECK-NEXT: <key>line</key><integer>285</integer>
5515// CHECK-NEXT: <key>col</key><integer>4</integer>
5516// CHECK-NEXT: <key>file</key><integer>0</integer>
5517// CHECK-NEXT: </dict>
5518// CHECK-NEXT: </array>
5519// CHECK-NEXT: <key>end</key>
5520// CHECK-NEXT: <array>
5521// CHECK-NEXT: <dict>
5522// CHECK-NEXT: <key>line</key><integer>285</integer>
5523// CHECK-NEXT: <key>col</key><integer>7</integer>
5524// CHECK-NEXT: <key>file</key><integer>0</integer>
5525// CHECK-NEXT: </dict>
5526// CHECK-NEXT: <dict>
5527// CHECK-NEXT: <key>line</key><integer>285</integer>
5528// CHECK-NEXT: <key>col</key><integer>16</integer>
5529// CHECK-NEXT: <key>file</key><integer>0</integer>
5530// CHECK-NEXT: </dict>
5531// CHECK-NEXT: </array>
Gabor Horvathefec1632015-10-22 11:53:04 +00005532// CHECK-NEXT: </dict>
5533// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +00005534// CHECK-NEXT: </dict>
5535// CHECK-NEXT: <dict>
5536// CHECK-NEXT: <key>kind</key><string>event</string>
5537// CHECK-NEXT: <key>location</key>
5538// CHECK-NEXT: <dict>
5539// CHECK-NEXT: <key>line</key><integer>285</integer>
5540// CHECK-NEXT: <key>col</key><integer>7</integer>
5541// CHECK-NEXT: <key>file</key><integer>0</integer>
5542// CHECK-NEXT: </dict>
5543// CHECK-NEXT: <key>ranges</key>
Gabor Horvathefec1632015-10-22 11:53:04 +00005544// CHECK-NEXT: <array>
Devin Coughlinab139a92016-12-05 16:28:47 +00005545// CHECK-NEXT: <array>
5546// CHECK-NEXT: <dict>
5547// CHECK-NEXT: <key>line</key><integer>285</integer>
5548// CHECK-NEXT: <key>col</key><integer>7</integer>
5549// CHECK-NEXT: <key>file</key><integer>0</integer>
5550// CHECK-NEXT: </dict>
5551// CHECK-NEXT: <dict>
5552// CHECK-NEXT: <key>line</key><integer>285</integer>
5553// CHECK-NEXT: <key>col</key><integer>23</integer>
5554// CHECK-NEXT: <key>file</key><integer>0</integer>
5555// CHECK-NEXT: </dict>
5556// CHECK-NEXT: </array>
Artem Dergachev0c334062016-10-05 08:19:49 +00005557// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +00005558// CHECK-NEXT: <key>depth</key><integer>0</integer>
5559// CHECK-NEXT: <key>extended_message</key>
5560// CHECK-NEXT: <string>Assuming the condition is true</string>
5561// CHECK-NEXT: <key>message</key>
5562// CHECK-NEXT: <string>Assuming the condition is true</string>
5563// CHECK-NEXT: </dict>
Artem Dergachev0c334062016-10-05 08:19:49 +00005564// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00005565// CHECK-NEXT: <key>kind</key><string>control</string>
5566// CHECK-NEXT: <key>edges</key>
Artem Dergachev0c334062016-10-05 08:19:49 +00005567// CHECK-NEXT: <array>
5568// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00005569// CHECK-NEXT: <key>start</key>
5570// CHECK-NEXT: <array>
5571// CHECK-NEXT: <dict>
5572// CHECK-NEXT: <key>line</key><integer>285</integer>
5573// CHECK-NEXT: <key>col</key><integer>7</integer>
5574// CHECK-NEXT: <key>file</key><integer>0</integer>
5575// CHECK-NEXT: </dict>
5576// CHECK-NEXT: <dict>
5577// CHECK-NEXT: <key>line</key><integer>285</integer>
5578// CHECK-NEXT: <key>col</key><integer>16</integer>
5579// CHECK-NEXT: <key>file</key><integer>0</integer>
5580// CHECK-NEXT: </dict>
5581// CHECK-NEXT: </array>
5582// CHECK-NEXT: <key>end</key>
5583// CHECK-NEXT: <array>
5584// CHECK-NEXT: <dict>
5585// CHECK-NEXT: <key>line</key><integer>286</integer>
5586// CHECK-NEXT: <key>col</key><integer>5</integer>
5587// CHECK-NEXT: <key>file</key><integer>0</integer>
5588// CHECK-NEXT: </dict>
5589// CHECK-NEXT: <dict>
5590// CHECK-NEXT: <key>line</key><integer>286</integer>
5591// CHECK-NEXT: <key>col</key><integer>5</integer>
5592// CHECK-NEXT: <key>file</key><integer>0</integer>
5593// CHECK-NEXT: </dict>
5594// CHECK-NEXT: </array>
Artem Dergachev0c334062016-10-05 08:19:49 +00005595// CHECK-NEXT: </dict>
5596// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +00005597// CHECK-NEXT: </dict>
5598// CHECK-NEXT: <dict>
5599// CHECK-NEXT: <key>kind</key><string>event</string>
5600// CHECK-NEXT: <key>location</key>
5601// CHECK-NEXT: <dict>
5602// CHECK-NEXT: <key>line</key><integer>286</integer>
5603// CHECK-NEXT: <key>col</key><integer>5</integer>
5604// CHECK-NEXT: <key>file</key><integer>0</integer>
5605// CHECK-NEXT: </dict>
5606// CHECK-NEXT: <key>ranges</key>
Artem Dergachev0c334062016-10-05 08:19:49 +00005607// CHECK-NEXT: <array>
Devin Coughlinab139a92016-12-05 16:28:47 +00005608// CHECK-NEXT: <array>
5609// CHECK-NEXT: <dict>
5610// CHECK-NEXT: <key>line</key><integer>286</integer>
5611// CHECK-NEXT: <key>col</key><integer>19</integer>
5612// CHECK-NEXT: <key>file</key><integer>0</integer>
5613// CHECK-NEXT: </dict>
5614// CHECK-NEXT: <dict>
5615// CHECK-NEXT: <key>line</key><integer>286</integer>
5616// CHECK-NEXT: <key>col</key><integer>41</integer>
5617// CHECK-NEXT: <key>file</key><integer>0</integer>
5618// CHECK-NEXT: </dict>
5619// CHECK-NEXT: </array>
Gabor Horvathefec1632015-10-22 11:53:04 +00005620// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +00005621// CHECK-NEXT: <key>depth</key><integer>0</integer>
5622// CHECK-NEXT: <key>extended_message</key>
5623// CHECK-NEXT: <string>Conversion from value of type &apos;NSString *&apos; to incompatible type &apos;NSMutableString *&apos;</string>
5624// CHECK-NEXT: <key>message</key>
5625// CHECK-NEXT: <string>Conversion from value of type &apos;NSString *&apos; to incompatible type &apos;NSMutableString *&apos;</string>
5626// CHECK-NEXT: </dict>
5627// CHECK-NEXT: </array>
5628// CHECK-NEXT: <key>description</key><string>Conversion from value of type &apos;NSString *&apos; to incompatible type &apos;NSMutableString *&apos;</string>
5629// CHECK-NEXT: <key>category</key><string>Core Foundation/Objective-C</string>
5630// CHECK-NEXT: <key>type</key><string>Generics</string>
5631// CHECK-NEXT: <key>check_name</key><string>core.DynamicTypePropagation</string>
5632// CHECK-NEXT: <!-- This hash is experimental and going to change! -->
5633// CHECK-NEXT: <key>issue_hash_content_of_line_in_context</key><string>d0b99c8523e81ec43ba4ea80aeedef1b</string>
5634// CHECK-NEXT: <key>issue_context_kind</key><string>function</string>
5635// CHECK-NEXT: <key>issue_context</key><string>findMethodDeclInTrackedType2</string>
5636// CHECK-NEXT: <key>issue_hash_function_offset</key><string>3</string>
5637// CHECK-NEXT: <key>location</key>
5638// CHECK-NEXT: <dict>
5639// CHECK-NEXT: <key>line</key><integer>286</integer>
5640// CHECK-NEXT: <key>col</key><integer>5</integer>
5641// CHECK-NEXT: <key>file</key><integer>0</integer>
5642// CHECK-NEXT: </dict>
5643// CHECK-NEXT: </dict>
5644// CHECK-NEXT: <dict>
5645// CHECK-NEXT: <key>path</key>
5646// CHECK-NEXT: <array>
Gabor Horvathefec1632015-10-22 11:53:04 +00005647// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00005648// CHECK-NEXT: <key>kind</key><string>control</string>
5649// CHECK-NEXT: <key>edges</key>
Gabor Horvathefec1632015-10-22 11:53:04 +00005650// CHECK-NEXT: <array>
5651// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00005652// CHECK-NEXT: <key>start</key>
5653// CHECK-NEXT: <array>
5654// CHECK-NEXT: <dict>
5655// CHECK-NEXT: <key>line</key><integer>310</integer>
5656// CHECK-NEXT: <key>col</key><integer>3</integer>
5657// CHECK-NEXT: <key>file</key><integer>0</integer>
5658// CHECK-NEXT: </dict>
5659// CHECK-NEXT: <dict>
5660// CHECK-NEXT: <key>line</key><integer>310</integer>
5661// CHECK-NEXT: <key>col</key><integer>7</integer>
5662// CHECK-NEXT: <key>file</key><integer>0</integer>
5663// CHECK-NEXT: </dict>
5664// CHECK-NEXT: </array>
5665// CHECK-NEXT: <key>end</key>
5666// CHECK-NEXT: <array>
5667// CHECK-NEXT: <dict>
5668// CHECK-NEXT: <key>line</key><integer>311</integer>
5669// CHECK-NEXT: <key>col</key><integer>3</integer>
5670// CHECK-NEXT: <key>file</key><integer>0</integer>
5671// CHECK-NEXT: </dict>
5672// CHECK-NEXT: <dict>
5673// CHECK-NEXT: <key>line</key><integer>311</integer>
5674// CHECK-NEXT: <key>col</key><integer>9</integer>
5675// CHECK-NEXT: <key>file</key><integer>0</integer>
5676// CHECK-NEXT: </dict>
5677// CHECK-NEXT: </array>
Gabor Horvathefec1632015-10-22 11:53:04 +00005678// CHECK-NEXT: </dict>
5679// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +00005680// CHECK-NEXT: </dict>
Gabor Horvathefec1632015-10-22 11:53:04 +00005681// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00005682// CHECK-NEXT: <key>kind</key><string>control</string>
5683// CHECK-NEXT: <key>edges</key>
Gabor Horvathefec1632015-10-22 11:53:04 +00005684// CHECK-NEXT: <array>
5685// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00005686// CHECK-NEXT: <key>start</key>
5687// CHECK-NEXT: <array>
5688// CHECK-NEXT: <dict>
5689// CHECK-NEXT: <key>line</key><integer>311</integer>
5690// CHECK-NEXT: <key>col</key><integer>3</integer>
5691// CHECK-NEXT: <key>file</key><integer>0</integer>
5692// CHECK-NEXT: </dict>
5693// CHECK-NEXT: <dict>
5694// CHECK-NEXT: <key>line</key><integer>311</integer>
5695// CHECK-NEXT: <key>col</key><integer>9</integer>
5696// CHECK-NEXT: <key>file</key><integer>0</integer>
5697// CHECK-NEXT: </dict>
5698// CHECK-NEXT: </array>
5699// CHECK-NEXT: <key>end</key>
5700// CHECK-NEXT: <array>
5701// CHECK-NEXT: <dict>
5702// CHECK-NEXT: <key>line</key><integer>311</integer>
5703// CHECK-NEXT: <key>col</key><integer>28</integer>
5704// CHECK-NEXT: <key>file</key><integer>0</integer>
5705// CHECK-NEXT: </dict>
5706// CHECK-NEXT: <dict>
5707// CHECK-NEXT: <key>line</key><integer>311</integer>
5708// CHECK-NEXT: <key>col</key><integer>28</integer>
5709// CHECK-NEXT: <key>file</key><integer>0</integer>
5710// CHECK-NEXT: </dict>
5711// CHECK-NEXT: </array>
Gabor Horvathefec1632015-10-22 11:53:04 +00005712// CHECK-NEXT: </dict>
5713// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +00005714// CHECK-NEXT: </dict>
5715// CHECK-NEXT: <dict>
5716// CHECK-NEXT: <key>kind</key><string>event</string>
5717// CHECK-NEXT: <key>location</key>
5718// CHECK-NEXT: <dict>
5719// CHECK-NEXT: <key>line</key><integer>311</integer>
5720// CHECK-NEXT: <key>col</key><integer>28</integer>
5721// CHECK-NEXT: <key>file</key><integer>0</integer>
5722// CHECK-NEXT: </dict>
5723// CHECK-NEXT: <key>ranges</key>
Gabor Horvathefec1632015-10-22 11:53:04 +00005724// CHECK-NEXT: <array>
Devin Coughlinab139a92016-12-05 16:28:47 +00005725// CHECK-NEXT: <array>
5726// CHECK-NEXT: <dict>
5727// CHECK-NEXT: <key>line</key><integer>311</integer>
5728// CHECK-NEXT: <key>col</key><integer>28</integer>
5729// CHECK-NEXT: <key>file</key><integer>0</integer>
5730// CHECK-NEXT: </dict>
5731// CHECK-NEXT: <dict>
5732// CHECK-NEXT: <key>line</key><integer>311</integer>
5733// CHECK-NEXT: <key>col</key><integer>39</integer>
5734// CHECK-NEXT: <key>file</key><integer>0</integer>
5735// CHECK-NEXT: </dict>
5736// CHECK-NEXT: </array>
Gabor Horvathefec1632015-10-22 11:53:04 +00005737// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +00005738// CHECK-NEXT: <key>depth</key><integer>0</integer>
5739// CHECK-NEXT: <key>extended_message</key>
5740// CHECK-NEXT: <string>Type &apos;NSArray&lt;NSString *&gt; *&apos; is inferred from this context</string>
5741// CHECK-NEXT: <key>message</key>
5742// CHECK-NEXT: <string>Type &apos;NSArray&lt;NSString *&gt; *&apos; is inferred from this context</string>
5743// CHECK-NEXT: </dict>
Gabor Horvathefec1632015-10-22 11:53:04 +00005744// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00005745// CHECK-NEXT: <key>kind</key><string>event</string>
5746// CHECK-NEXT: <key>location</key>
5747// CHECK-NEXT: <dict>
5748// CHECK-NEXT: <key>line</key><integer>311</integer>
5749// CHECK-NEXT: <key>col</key><integer>28</integer>
5750// CHECK-NEXT: <key>file</key><integer>0</integer>
5751// CHECK-NEXT: </dict>
5752// CHECK-NEXT: <key>ranges</key>
5753// CHECK-NEXT: <array>
5754// CHECK-NEXT: <array>
5755// CHECK-NEXT: <dict>
5756// CHECK-NEXT: <key>line</key><integer>311</integer>
5757// CHECK-NEXT: <key>col</key><integer>28</integer>
5758// CHECK-NEXT: <key>file</key><integer>0</integer>
5759// CHECK-NEXT: </dict>
5760// CHECK-NEXT: <dict>
5761// CHECK-NEXT: <key>line</key><integer>311</integer>
5762// CHECK-NEXT: <key>col</key><integer>39</integer>
5763// CHECK-NEXT: <key>file</key><integer>0</integer>
5764// CHECK-NEXT: </dict>
5765// CHECK-NEXT: </array>
5766// CHECK-NEXT: </array>
5767// CHECK-NEXT: <key>depth</key><integer>0</integer>
5768// CHECK-NEXT: <key>extended_message</key>
5769// CHECK-NEXT: <string>Conversion from value of type &apos;NSArray&lt;NSString *&gt; *&apos; to incompatible type &apos;NSArray&lt;NSNumber *&gt; *&apos;</string>
5770// CHECK-NEXT: <key>message</key>
5771// CHECK-NEXT: <string>Conversion from value of type &apos;NSArray&lt;NSString *&gt; *&apos; to incompatible type &apos;NSArray&lt;NSNumber *&gt; *&apos;</string>
Gabor Horvathefec1632015-10-22 11:53:04 +00005772// CHECK-NEXT: </dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00005773// CHECK-NEXT: </array>
5774// CHECK-NEXT: <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>
5775// CHECK-NEXT: <key>category</key><string>Core Foundation/Objective-C</string>
5776// CHECK-NEXT: <key>type</key><string>Generics</string>
5777// CHECK-NEXT: <key>check_name</key><string>core.DynamicTypePropagation</string>
5778// CHECK-NEXT: <!-- This hash is experimental and going to change! -->
5779// CHECK-NEXT: <key>issue_hash_content_of_line_in_context</key><string>46aa94b866747bcbe1ded581da7a2633</string>
5780// CHECK-NEXT: <key>issue_context_kind</key><string>function</string>
5781// CHECK-NEXT: <key>issue_context</key><string>trackedClassVariables</string>
5782// CHECK-NEXT: <key>issue_hash_function_offset</key><string>2</string>
5783// CHECK-NEXT: <key>location</key>
5784// CHECK-NEXT: <dict>
5785// CHECK-NEXT: <key>line</key><integer>311</integer>
5786// CHECK-NEXT: <key>col</key><integer>28</integer>
5787// CHECK-NEXT: <key>file</key><integer>0</integer>
5788// CHECK-NEXT: </dict>
5789// CHECK-NEXT: </dict>
5790// CHECK-NEXT: <dict>
5791// CHECK-NEXT: <key>path</key>
5792// CHECK-NEXT: <array>
5793// CHECK-NEXT: <dict>
5794// CHECK-NEXT: <key>kind</key><string>control</string>
5795// CHECK-NEXT: <key>edges</key>
Gabor Horvathefec1632015-10-22 11:53:04 +00005796// CHECK-NEXT: <array>
5797// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00005798// CHECK-NEXT: <key>start</key>
5799// CHECK-NEXT: <array>
5800// CHECK-NEXT: <dict>
5801// CHECK-NEXT: <key>line</key><integer>310</integer>
5802// CHECK-NEXT: <key>col</key><integer>3</integer>
5803// CHECK-NEXT: <key>file</key><integer>0</integer>
5804// CHECK-NEXT: </dict>
5805// CHECK-NEXT: <dict>
5806// CHECK-NEXT: <key>line</key><integer>310</integer>
5807// CHECK-NEXT: <key>col</key><integer>7</integer>
5808// CHECK-NEXT: <key>file</key><integer>0</integer>
5809// CHECK-NEXT: </dict>
5810// CHECK-NEXT: </array>
5811// CHECK-NEXT: <key>end</key>
5812// CHECK-NEXT: <array>
5813// CHECK-NEXT: <dict>
5814// CHECK-NEXT: <key>line</key><integer>312</integer>
5815// CHECK-NEXT: <key>col</key><integer>3</integer>
5816// CHECK-NEXT: <key>file</key><integer>0</integer>
5817// CHECK-NEXT: </dict>
5818// CHECK-NEXT: <dict>
5819// CHECK-NEXT: <key>line</key><integer>312</integer>
5820// CHECK-NEXT: <key>col</key><integer>3</integer>
5821// CHECK-NEXT: <key>file</key><integer>0</integer>
5822// CHECK-NEXT: </dict>
5823// CHECK-NEXT: </array>
Gabor Horvathefec1632015-10-22 11:53:04 +00005824// CHECK-NEXT: </dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00005825// CHECK-NEXT: </array>
5826// CHECK-NEXT: </dict>
5827// CHECK-NEXT: <dict>
5828// CHECK-NEXT: <key>kind</key><string>control</string>
5829// CHECK-NEXT: <key>edges</key>
5830// CHECK-NEXT: <array>
Gabor Horvathefec1632015-10-22 11:53:04 +00005831// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00005832// CHECK-NEXT: <key>start</key>
5833// CHECK-NEXT: <array>
5834// CHECK-NEXT: <dict>
5835// CHECK-NEXT: <key>line</key><integer>312</integer>
5836// CHECK-NEXT: <key>col</key><integer>3</integer>
5837// CHECK-NEXT: <key>file</key><integer>0</integer>
5838// CHECK-NEXT: </dict>
5839// CHECK-NEXT: <dict>
5840// CHECK-NEXT: <key>line</key><integer>312</integer>
5841// CHECK-NEXT: <key>col</key><integer>3</integer>
5842// CHECK-NEXT: <key>file</key><integer>0</integer>
5843// CHECK-NEXT: </dict>
5844// CHECK-NEXT: </array>
5845// CHECK-NEXT: <key>end</key>
5846// CHECK-NEXT: <array>
5847// CHECK-NEXT: <dict>
5848// CHECK-NEXT: <key>line</key><integer>312</integer>
5849// CHECK-NEXT: <key>col</key><integer>7</integer>
5850// CHECK-NEXT: <key>file</key><integer>0</integer>
5851// CHECK-NEXT: </dict>
5852// CHECK-NEXT: <dict>
5853// CHECK-NEXT: <key>line</key><integer>312</integer>
5854// CHECK-NEXT: <key>col</key><integer>7</integer>
5855// CHECK-NEXT: <key>file</key><integer>0</integer>
5856// CHECK-NEXT: </dict>
5857// CHECK-NEXT: </array>
Gabor Horvathefec1632015-10-22 11:53:04 +00005858// CHECK-NEXT: </dict>
5859// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +00005860// CHECK-NEXT: </dict>
5861// CHECK-NEXT: <dict>
5862// CHECK-NEXT: <key>kind</key><string>event</string>
5863// CHECK-NEXT: <key>location</key>
5864// CHECK-NEXT: <dict>
5865// CHECK-NEXT: <key>line</key><integer>312</integer>
5866// CHECK-NEXT: <key>col</key><integer>7</integer>
5867// CHECK-NEXT: <key>file</key><integer>0</integer>
5868// CHECK-NEXT: </dict>
5869// CHECK-NEXT: <key>ranges</key>
Gabor Horvathefec1632015-10-22 11:53:04 +00005870// CHECK-NEXT: <array>
Devin Coughlinab139a92016-12-05 16:28:47 +00005871// CHECK-NEXT: <array>
5872// CHECK-NEXT: <dict>
5873// CHECK-NEXT: <key>line</key><integer>312</integer>
5874// CHECK-NEXT: <key>col</key><integer>7</integer>
5875// CHECK-NEXT: <key>file</key><integer>0</integer>
5876// CHECK-NEXT: </dict>
5877// CHECK-NEXT: <dict>
5878// CHECK-NEXT: <key>line</key><integer>312</integer>
5879// CHECK-NEXT: <key>col</key><integer>19</integer>
5880// CHECK-NEXT: <key>file</key><integer>0</integer>
5881// CHECK-NEXT: </dict>
5882// CHECK-NEXT: </array>
Gabor Horvathefec1632015-10-22 11:53:04 +00005883// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +00005884// CHECK-NEXT: <key>depth</key><integer>0</integer>
5885// CHECK-NEXT: <key>extended_message</key>
5886// CHECK-NEXT: <string>Type &apos;NSArray&lt;NSString *&gt; *&apos; is inferred from this context</string>
5887// CHECK-NEXT: <key>message</key>
5888// CHECK-NEXT: <string>Type &apos;NSArray&lt;NSString *&gt; *&apos; is inferred from this context</string>
5889// CHECK-NEXT: </dict>
5890// CHECK-NEXT: <dict>
5891// CHECK-NEXT: <key>kind</key><string>event</string>
5892// CHECK-NEXT: <key>location</key>
5893// CHECK-NEXT: <dict>
5894// CHECK-NEXT: <key>line</key><integer>312</integer>
5895// CHECK-NEXT: <key>col</key><integer>7</integer>
5896// CHECK-NEXT: <key>file</key><integer>0</integer>
5897// CHECK-NEXT: </dict>
5898// CHECK-NEXT: <key>ranges</key>
Gabor Horvathefec1632015-10-22 11:53:04 +00005899// CHECK-NEXT: <array>
Devin Coughlinab139a92016-12-05 16:28:47 +00005900// CHECK-NEXT: <array>
5901// CHECK-NEXT: <dict>
5902// CHECK-NEXT: <key>line</key><integer>312</integer>
5903// CHECK-NEXT: <key>col</key><integer>7</integer>
5904// CHECK-NEXT: <key>file</key><integer>0</integer>
5905// CHECK-NEXT: </dict>
5906// CHECK-NEXT: <dict>
5907// CHECK-NEXT: <key>line</key><integer>312</integer>
5908// CHECK-NEXT: <key>col</key><integer>19</integer>
5909// CHECK-NEXT: <key>file</key><integer>0</integer>
5910// CHECK-NEXT: </dict>
5911// CHECK-NEXT: </array>
Gabor Horvathefec1632015-10-22 11:53:04 +00005912// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +00005913// CHECK-NEXT: <key>depth</key><integer>0</integer>
5914// CHECK-NEXT: <key>extended_message</key>
5915// CHECK-NEXT: <string>Conversion from value of type &apos;NSArray&lt;NSString *&gt; *&apos; to incompatible type &apos;NSArray&lt;NSNumber *&gt; *&apos;</string>
5916// CHECK-NEXT: <key>message</key>
5917// CHECK-NEXT: <string>Conversion from value of type &apos;NSArray&lt;NSString *&gt; *&apos; to incompatible type &apos;NSArray&lt;NSNumber *&gt; *&apos;</string>
5918// CHECK-NEXT: </dict>
5919// CHECK-NEXT: </array>
5920// CHECK-NEXT: <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>
5921// CHECK-NEXT: <key>category</key><string>Core Foundation/Objective-C</string>
5922// CHECK-NEXT: <key>type</key><string>Generics</string>
5923// CHECK-NEXT: <key>check_name</key><string>core.DynamicTypePropagation</string>
5924// CHECK-NEXT: <!-- This hash is experimental and going to change! -->
5925// CHECK-NEXT: <key>issue_hash_content_of_line_in_context</key><string>a759006d1ce88e15fcd6de6a29e2579c</string>
5926// CHECK-NEXT: <key>issue_context_kind</key><string>function</string>
5927// CHECK-NEXT: <key>issue_context</key><string>trackedClassVariables</string>
5928// CHECK-NEXT: <key>issue_hash_function_offset</key><string>3</string>
5929// CHECK-NEXT: <key>location</key>
5930// CHECK-NEXT: <dict>
5931// CHECK-NEXT: <key>line</key><integer>312</integer>
5932// CHECK-NEXT: <key>col</key><integer>7</integer>
5933// CHECK-NEXT: <key>file</key><integer>0</integer>
5934// CHECK-NEXT: </dict>
5935// CHECK-NEXT: </dict>
5936// CHECK-NEXT: <dict>
5937// CHECK-NEXT: <key>path</key>
5938// CHECK-NEXT: <array>
Gabor Horvathefec1632015-10-22 11:53:04 +00005939// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00005940// CHECK-NEXT: <key>kind</key><string>event</string>
5941// CHECK-NEXT: <key>location</key>
5942// CHECK-NEXT: <dict>
5943// CHECK-NEXT: <key>line</key><integer>316</integer>
5944// CHECK-NEXT: <key>col</key><integer>13</integer>
5945// CHECK-NEXT: <key>file</key><integer>0</integer>
5946// CHECK-NEXT: </dict>
5947// CHECK-NEXT: <key>ranges</key>
5948// CHECK-NEXT: <array>
5949// CHECK-NEXT: <array>
5950// CHECK-NEXT: <dict>
5951// CHECK-NEXT: <key>line</key><integer>316</integer>
5952// CHECK-NEXT: <key>col</key><integer>13</integer>
5953// CHECK-NEXT: <key>file</key><integer>0</integer>
5954// CHECK-NEXT: </dict>
5955// CHECK-NEXT: <dict>
5956// CHECK-NEXT: <key>line</key><integer>316</integer>
5957// CHECK-NEXT: <key>col</key><integer>15</integer>
5958// CHECK-NEXT: <key>file</key><integer>0</integer>
5959// CHECK-NEXT: </dict>
5960// CHECK-NEXT: </array>
5961// CHECK-NEXT: </array>
5962// CHECK-NEXT: <key>depth</key><integer>0</integer>
5963// CHECK-NEXT: <key>extended_message</key>
5964// CHECK-NEXT: <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>
5965// CHECK-NEXT: <key>message</key>
5966// CHECK-NEXT: <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 Horvathefec1632015-10-22 11:53:04 +00005967// CHECK-NEXT: </dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00005968// CHECK-NEXT: <dict>
5969// CHECK-NEXT: <key>kind</key><string>control</string>
5970// CHECK-NEXT: <key>edges</key>
Gabor Horvathefec1632015-10-22 11:53:04 +00005971// CHECK-NEXT: <array>
5972// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00005973// CHECK-NEXT: <key>start</key>
5974// CHECK-NEXT: <array>
5975// CHECK-NEXT: <dict>
5976// CHECK-NEXT: <key>line</key><integer>316</integer>
5977// CHECK-NEXT: <key>col</key><integer>3</integer>
5978// CHECK-NEXT: <key>file</key><integer>0</integer>
5979// CHECK-NEXT: </dict>
5980// CHECK-NEXT: <dict>
5981// CHECK-NEXT: <key>line</key><integer>316</integer>
5982// CHECK-NEXT: <key>col</key><integer>4</integer>
5983// CHECK-NEXT: <key>file</key><integer>0</integer>
5984// CHECK-NEXT: </dict>
5985// CHECK-NEXT: </array>
5986// CHECK-NEXT: <key>end</key>
5987// CHECK-NEXT: <array>
5988// CHECK-NEXT: <dict>
5989// CHECK-NEXT: <key>line</key><integer>317</integer>
5990// CHECK-NEXT: <key>col</key><integer>3</integer>
5991// CHECK-NEXT: <key>file</key><integer>0</integer>
5992// CHECK-NEXT: </dict>
5993// CHECK-NEXT: <dict>
5994// CHECK-NEXT: <key>line</key><integer>317</integer>
5995// CHECK-NEXT: <key>col</key><integer>3</integer>
5996// CHECK-NEXT: <key>file</key><integer>0</integer>
5997// CHECK-NEXT: </dict>
5998// CHECK-NEXT: </array>
Gabor Horvathefec1632015-10-22 11:53:04 +00005999// CHECK-NEXT: </dict>
6000// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +00006001// CHECK-NEXT: </dict>
Gabor Horvathefec1632015-10-22 11:53:04 +00006002// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00006003// CHECK-NEXT: <key>kind</key><string>control</string>
6004// CHECK-NEXT: <key>edges</key>
Gabor Horvathefec1632015-10-22 11:53:04 +00006005// CHECK-NEXT: <array>
6006// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00006007// CHECK-NEXT: <key>start</key>
6008// CHECK-NEXT: <array>
6009// CHECK-NEXT: <dict>
6010// CHECK-NEXT: <key>line</key><integer>317</integer>
6011// CHECK-NEXT: <key>col</key><integer>3</integer>
6012// CHECK-NEXT: <key>file</key><integer>0</integer>
6013// CHECK-NEXT: </dict>
6014// CHECK-NEXT: <dict>
6015// CHECK-NEXT: <key>line</key><integer>317</integer>
6016// CHECK-NEXT: <key>col</key><integer>3</integer>
6017// CHECK-NEXT: <key>file</key><integer>0</integer>
6018// CHECK-NEXT: </dict>
6019// CHECK-NEXT: </array>
6020// CHECK-NEXT: <key>end</key>
6021// CHECK-NEXT: <array>
6022// CHECK-NEXT: <dict>
6023// CHECK-NEXT: <key>line</key><integer>317</integer>
6024// CHECK-NEXT: <key>col</key><integer>18</integer>
6025// CHECK-NEXT: <key>file</key><integer>0</integer>
6026// CHECK-NEXT: </dict>
6027// CHECK-NEXT: <dict>
6028// CHECK-NEXT: <key>line</key><integer>317</integer>
6029// CHECK-NEXT: <key>col</key><integer>21</integer>
6030// CHECK-NEXT: <key>file</key><integer>0</integer>
6031// CHECK-NEXT: </dict>
6032// CHECK-NEXT: </array>
Gabor Horvathefec1632015-10-22 11:53:04 +00006033// CHECK-NEXT: </dict>
6034// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +00006035// CHECK-NEXT: </dict>
6036// CHECK-NEXT: <dict>
6037// CHECK-NEXT: <key>kind</key><string>event</string>
6038// CHECK-NEXT: <key>location</key>
6039// CHECK-NEXT: <dict>
6040// CHECK-NEXT: <key>line</key><integer>317</integer>
6041// CHECK-NEXT: <key>col</key><integer>18</integer>
6042// CHECK-NEXT: <key>file</key><integer>0</integer>
6043// CHECK-NEXT: </dict>
6044// CHECK-NEXT: <key>ranges</key>
Gabor Horvathefec1632015-10-22 11:53:04 +00006045// CHECK-NEXT: <array>
Devin Coughlinab139a92016-12-05 16:28:47 +00006046// CHECK-NEXT: <array>
6047// CHECK-NEXT: <dict>
6048// CHECK-NEXT: <key>line</key><integer>317</integer>
6049// CHECK-NEXT: <key>col</key><integer>18</integer>
6050// CHECK-NEXT: <key>file</key><integer>0</integer>
6051// CHECK-NEXT: </dict>
6052// CHECK-NEXT: <dict>
6053// CHECK-NEXT: <key>line</key><integer>317</integer>
6054// CHECK-NEXT: <key>col</key><integer>21</integer>
6055// CHECK-NEXT: <key>file</key><integer>0</integer>
6056// CHECK-NEXT: </dict>
6057// CHECK-NEXT: </array>
Gabor Horvathefec1632015-10-22 11:53:04 +00006058// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +00006059// CHECK-NEXT: <key>depth</key><integer>0</integer>
6060// CHECK-NEXT: <key>extended_message</key>
6061// CHECK-NEXT: <string>Conversion from value of type &apos;NSArray&lt;NSString *&gt; *&apos; to incompatible type &apos;NSArray&lt;NSNumber *&gt; *&apos;</string>
6062// CHECK-NEXT: <key>message</key>
6063// CHECK-NEXT: <string>Conversion from value of type &apos;NSArray&lt;NSString *&gt; *&apos; to incompatible type &apos;NSArray&lt;NSNumber *&gt; *&apos;</string>
6064// CHECK-NEXT: </dict>
6065// CHECK-NEXT: </array>
6066// CHECK-NEXT: <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>
6067// CHECK-NEXT: <key>category</key><string>Core Foundation/Objective-C</string>
6068// CHECK-NEXT: <key>type</key><string>Generics</string>
6069// CHECK-NEXT: <key>check_name</key><string>core.DynamicTypePropagation</string>
6070// CHECK-NEXT: <!-- This hash is experimental and going to change! -->
6071// CHECK-NEXT: <key>issue_hash_content_of_line_in_context</key><string>4bb1729ff86647750b458e6f8d883f08</string>
6072// CHECK-NEXT: <key>issue_context_kind</key><string>function</string>
6073// CHECK-NEXT: <key>issue_context</key><string>nestedCollections</string>
6074// CHECK-NEXT: <key>issue_hash_function_offset</key><string>2</string>
6075// CHECK-NEXT: <key>location</key>
6076// CHECK-NEXT: <dict>
6077// CHECK-NEXT: <key>line</key><integer>317</integer>
6078// CHECK-NEXT: <key>col</key><integer>18</integer>
6079// CHECK-NEXT: <key>file</key><integer>0</integer>
6080// CHECK-NEXT: </dict>
6081// CHECK-NEXT: </dict>
6082// CHECK-NEXT: <dict>
6083// CHECK-NEXT: <key>path</key>
6084// CHECK-NEXT: <array>
Gabor Horvathefec1632015-10-22 11:53:04 +00006085// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00006086// CHECK-NEXT: <key>kind</key><string>control</string>
6087// CHECK-NEXT: <key>edges</key>
Gabor Horvathefec1632015-10-22 11:53:04 +00006088// CHECK-NEXT: <array>
6089// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00006090// CHECK-NEXT: <key>start</key>
6091// CHECK-NEXT: <array>
6092// CHECK-NEXT: <dict>
6093// CHECK-NEXT: <key>line</key><integer>329</integer>
6094// CHECK-NEXT: <key>col</key><integer>3</integer>
6095// CHECK-NEXT: <key>file</key><integer>0</integer>
6096// CHECK-NEXT: </dict>
6097// CHECK-NEXT: <dict>
6098// CHECK-NEXT: <key>line</key><integer>329</integer>
6099// CHECK-NEXT: <key>col</key><integer>9</integer>
6100// CHECK-NEXT: <key>file</key><integer>0</integer>
6101// CHECK-NEXT: </dict>
6102// CHECK-NEXT: </array>
6103// CHECK-NEXT: <key>end</key>
6104// CHECK-NEXT: <array>
6105// CHECK-NEXT: <dict>
6106// CHECK-NEXT: <key>line</key><integer>330</integer>
6107// CHECK-NEXT: <key>col</key><integer>3</integer>
6108// CHECK-NEXT: <key>file</key><integer>0</integer>
6109// CHECK-NEXT: </dict>
6110// CHECK-NEXT: <dict>
6111// CHECK-NEXT: <key>line</key><integer>330</integer>
6112// CHECK-NEXT: <key>col</key><integer>4</integer>
6113// CHECK-NEXT: <key>file</key><integer>0</integer>
6114// CHECK-NEXT: </dict>
6115// CHECK-NEXT: </array>
Gabor Horvathefec1632015-10-22 11:53:04 +00006116// CHECK-NEXT: </dict>
6117// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +00006118// CHECK-NEXT: </dict>
Gabor Horvathefec1632015-10-22 11:53:04 +00006119// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00006120// CHECK-NEXT: <key>kind</key><string>event</string>
6121// CHECK-NEXT: <key>location</key>
6122// CHECK-NEXT: <dict>
6123// CHECK-NEXT: <key>line</key><integer>330</integer>
6124// CHECK-NEXT: <key>col</key><integer>10</integer>
6125// CHECK-NEXT: <key>file</key><integer>0</integer>
6126// CHECK-NEXT: </dict>
6127// CHECK-NEXT: <key>ranges</key>
6128// CHECK-NEXT: <array>
6129// CHECK-NEXT: <array>
6130// CHECK-NEXT: <dict>
6131// CHECK-NEXT: <key>line</key><integer>330</integer>
6132// CHECK-NEXT: <key>col</key><integer>10</integer>
6133// CHECK-NEXT: <key>file</key><integer>0</integer>
6134// CHECK-NEXT: </dict>
6135// CHECK-NEXT: <dict>
6136// CHECK-NEXT: <key>line</key><integer>330</integer>
6137// CHECK-NEXT: <key>col</key><integer>29</integer>
6138// CHECK-NEXT: <key>file</key><integer>0</integer>
6139// CHECK-NEXT: </dict>
6140// CHECK-NEXT: </array>
6141// CHECK-NEXT: </array>
6142// CHECK-NEXT: <key>depth</key><integer>0</integer>
6143// CHECK-NEXT: <key>extended_message</key>
6144// CHECK-NEXT: <string>Type &apos;NSArray&lt;NSString *&gt; *&apos; is inferred from this context</string>
6145// CHECK-NEXT: <key>message</key>
6146// CHECK-NEXT: <string>Type &apos;NSArray&lt;NSString *&gt; *&apos; is inferred from this context</string>
Gabor Horvathefec1632015-10-22 11:53:04 +00006147// CHECK-NEXT: </dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00006148// CHECK-NEXT: <dict>
6149// CHECK-NEXT: <key>kind</key><string>control</string>
6150// CHECK-NEXT: <key>edges</key>
Gabor Horvathefec1632015-10-22 11:53:04 +00006151// CHECK-NEXT: <array>
6152// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00006153// CHECK-NEXT: <key>start</key>
6154// CHECK-NEXT: <array>
6155// CHECK-NEXT: <dict>
6156// CHECK-NEXT: <key>line</key><integer>330</integer>
6157// CHECK-NEXT: <key>col</key><integer>3</integer>
6158// CHECK-NEXT: <key>file</key><integer>0</integer>
6159// CHECK-NEXT: </dict>
6160// CHECK-NEXT: <dict>
6161// CHECK-NEXT: <key>line</key><integer>330</integer>
6162// CHECK-NEXT: <key>col</key><integer>4</integer>
6163// CHECK-NEXT: <key>file</key><integer>0</integer>
6164// CHECK-NEXT: </dict>
6165// CHECK-NEXT: </array>
6166// CHECK-NEXT: <key>end</key>
6167// CHECK-NEXT: <array>
6168// CHECK-NEXT: <dict>
6169// CHECK-NEXT: <key>line</key><integer>331</integer>
6170// CHECK-NEXT: <key>col</key><integer>3</integer>
6171// CHECK-NEXT: <key>file</key><integer>0</integer>
6172// CHECK-NEXT: </dict>
6173// CHECK-NEXT: <dict>
6174// CHECK-NEXT: <key>line</key><integer>331</integer>
6175// CHECK-NEXT: <key>col</key><integer>9</integer>
6176// CHECK-NEXT: <key>file</key><integer>0</integer>
6177// CHECK-NEXT: </dict>
6178// CHECK-NEXT: </array>
Gabor Horvathefec1632015-10-22 11:53:04 +00006179// CHECK-NEXT: </dict>
6180// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +00006181// CHECK-NEXT: </dict>
Gabor Horvathefec1632015-10-22 11:53:04 +00006182// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00006183// CHECK-NEXT: <key>kind</key><string>control</string>
6184// CHECK-NEXT: <key>edges</key>
Gabor Horvathefec1632015-10-22 11:53:04 +00006185// CHECK-NEXT: <array>
6186// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00006187// CHECK-NEXT: <key>start</key>
6188// CHECK-NEXT: <array>
6189// CHECK-NEXT: <dict>
6190// CHECK-NEXT: <key>line</key><integer>331</integer>
6191// CHECK-NEXT: <key>col</key><integer>3</integer>
6192// CHECK-NEXT: <key>file</key><integer>0</integer>
6193// CHECK-NEXT: </dict>
6194// CHECK-NEXT: <dict>
6195// CHECK-NEXT: <key>line</key><integer>331</integer>
6196// CHECK-NEXT: <key>col</key><integer>9</integer>
6197// CHECK-NEXT: <key>file</key><integer>0</integer>
6198// CHECK-NEXT: </dict>
6199// CHECK-NEXT: </array>
6200// CHECK-NEXT: <key>end</key>
6201// CHECK-NEXT: <array>
6202// CHECK-NEXT: <dict>
6203// CHECK-NEXT: <key>line</key><integer>331</integer>
6204// CHECK-NEXT: <key>col</key><integer>30</integer>
6205// CHECK-NEXT: <key>file</key><integer>0</integer>
6206// CHECK-NEXT: </dict>
6207// CHECK-NEXT: <dict>
6208// CHECK-NEXT: <key>line</key><integer>331</integer>
6209// CHECK-NEXT: <key>col</key><integer>30</integer>
6210// CHECK-NEXT: <key>file</key><integer>0</integer>
6211// CHECK-NEXT: </dict>
6212// CHECK-NEXT: </array>
Gabor Horvathefec1632015-10-22 11:53:04 +00006213// CHECK-NEXT: </dict>
6214// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +00006215// CHECK-NEXT: </dict>
6216// CHECK-NEXT: <dict>
6217// CHECK-NEXT: <key>kind</key><string>event</string>
6218// CHECK-NEXT: <key>location</key>
6219// CHECK-NEXT: <dict>
6220// CHECK-NEXT: <key>line</key><integer>331</integer>
6221// CHECK-NEXT: <key>col</key><integer>30</integer>
6222// CHECK-NEXT: <key>file</key><integer>0</integer>
6223// CHECK-NEXT: </dict>
6224// CHECK-NEXT: <key>ranges</key>
Gabor Horvathefec1632015-10-22 11:53:04 +00006225// CHECK-NEXT: <array>
Devin Coughlinab139a92016-12-05 16:28:47 +00006226// CHECK-NEXT: <array>
6227// CHECK-NEXT: <dict>
6228// CHECK-NEXT: <key>line</key><integer>331</integer>
6229// CHECK-NEXT: <key>col</key><integer>30</integer>
6230// CHECK-NEXT: <key>file</key><integer>0</integer>
6231// CHECK-NEXT: </dict>
6232// CHECK-NEXT: <dict>
6233// CHECK-NEXT: <key>line</key><integer>331</integer>
6234// CHECK-NEXT: <key>col</key><integer>30</integer>
6235// CHECK-NEXT: <key>file</key><integer>0</integer>
6236// CHECK-NEXT: </dict>
6237// CHECK-NEXT: </array>
Gabor Horvathefec1632015-10-22 11:53:04 +00006238// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +00006239// CHECK-NEXT: <key>depth</key><integer>0</integer>
6240// CHECK-NEXT: <key>extended_message</key>
6241// CHECK-NEXT: <string>Conversion from value of type &apos;NSArray&lt;NSString *&gt; *&apos; to incompatible type &apos;NSArray&lt;NSNumber *&gt; *&apos;</string>
6242// CHECK-NEXT: <key>message</key>
6243// CHECK-NEXT: <string>Conversion from value of type &apos;NSArray&lt;NSString *&gt; *&apos; to incompatible type &apos;NSArray&lt;NSNumber *&gt; *&apos;</string>
6244// CHECK-NEXT: </dict>
6245// CHECK-NEXT: </array>
6246// CHECK-NEXT: <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>
6247// CHECK-NEXT: <key>category</key><string>Core Foundation/Objective-C</string>
6248// CHECK-NEXT: <key>type</key><string>Generics</string>
6249// CHECK-NEXT: <key>check_name</key><string>core.DynamicTypePropagation</string>
6250// CHECK-NEXT: <!-- This hash is experimental and going to change! -->
6251// CHECK-NEXT: <key>issue_hash_content_of_line_in_context</key><string>38831553eaecfb6c02b51e71d21ec6ea</string>
6252// CHECK-NEXT: <key>issue_context_kind</key><string>function</string>
6253// CHECK-NEXT: <key>issue_context</key><string>returnCollectionToIdVariable</string>
6254// CHECK-NEXT: <key>issue_hash_function_offset</key><string>3</string>
6255// CHECK-NEXT: <key>location</key>
6256// CHECK-NEXT: <dict>
6257// CHECK-NEXT: <key>line</key><integer>331</integer>
6258// CHECK-NEXT: <key>col</key><integer>30</integer>
6259// CHECK-NEXT: <key>file</key><integer>0</integer>
6260// CHECK-NEXT: </dict>
6261// CHECK-NEXT: </dict>
6262// CHECK-NEXT: <dict>
6263// CHECK-NEXT: <key>path</key>
6264// CHECK-NEXT: <array>
Gabor Horvathefec1632015-10-22 11:53:04 +00006265// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00006266// CHECK-NEXT: <key>kind</key><string>control</string>
6267// CHECK-NEXT: <key>edges</key>
Gabor Horvathefec1632015-10-22 11:53:04 +00006268// CHECK-NEXT: <array>
6269// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00006270// CHECK-NEXT: <key>start</key>
6271// CHECK-NEXT: <array>
6272// CHECK-NEXT: <dict>
6273// CHECK-NEXT: <key>line</key><integer>335</integer>
6274// CHECK-NEXT: <key>col</key><integer>3</integer>
6275// CHECK-NEXT: <key>file</key><integer>0</integer>
6276// CHECK-NEXT: </dict>
6277// CHECK-NEXT: <dict>
6278// CHECK-NEXT: <key>line</key><integer>335</integer>
6279// CHECK-NEXT: <key>col</key><integer>9</integer>
6280// CHECK-NEXT: <key>file</key><integer>0</integer>
6281// CHECK-NEXT: </dict>
6282// CHECK-NEXT: </array>
6283// CHECK-NEXT: <key>end</key>
6284// CHECK-NEXT: <array>
6285// CHECK-NEXT: <dict>
6286// CHECK-NEXT: <key>line</key><integer>336</integer>
6287// CHECK-NEXT: <key>col</key><integer>3</integer>
6288// CHECK-NEXT: <key>file</key><integer>0</integer>
6289// CHECK-NEXT: </dict>
6290// CHECK-NEXT: <dict>
6291// CHECK-NEXT: <key>line</key><integer>336</integer>
6292// CHECK-NEXT: <key>col</key><integer>9</integer>
6293// CHECK-NEXT: <key>file</key><integer>0</integer>
6294// CHECK-NEXT: </dict>
6295// CHECK-NEXT: </array>
Gabor Horvathefec1632015-10-22 11:53:04 +00006296// CHECK-NEXT: </dict>
6297// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +00006298// CHECK-NEXT: </dict>
6299// CHECK-NEXT: <dict>
6300// CHECK-NEXT: <key>kind</key><string>event</string>
6301// CHECK-NEXT: <key>location</key>
6302// CHECK-NEXT: <dict>
6303// CHECK-NEXT: <key>line</key><integer>336</integer>
6304// CHECK-NEXT: <key>col</key><integer>16</integer>
6305// CHECK-NEXT: <key>file</key><integer>0</integer>
6306// CHECK-NEXT: </dict>
6307// CHECK-NEXT: <key>ranges</key>
Gabor Horvathefec1632015-10-22 11:53:04 +00006308// CHECK-NEXT: <array>
Devin Coughlinab139a92016-12-05 16:28:47 +00006309// CHECK-NEXT: <array>
6310// CHECK-NEXT: <dict>
6311// CHECK-NEXT: <key>line</key><integer>336</integer>
6312// CHECK-NEXT: <key>col</key><integer>16</integer>
6313// CHECK-NEXT: <key>file</key><integer>0</integer>
6314// CHECK-NEXT: </dict>
6315// CHECK-NEXT: <dict>
6316// CHECK-NEXT: <key>line</key><integer>336</integer>
6317// CHECK-NEXT: <key>col</key><integer>35</integer>
6318// CHECK-NEXT: <key>file</key><integer>0</integer>
6319// CHECK-NEXT: </dict>
6320// CHECK-NEXT: </array>
Gabor Horvathefec1632015-10-22 11:53:04 +00006321// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +00006322// CHECK-NEXT: <key>depth</key><integer>0</integer>
6323// CHECK-NEXT: <key>extended_message</key>
6324// CHECK-NEXT: <string>Type &apos;NSArray&lt;NSString *&gt; *&apos; is inferred from this context</string>
6325// CHECK-NEXT: <key>message</key>
6326// CHECK-NEXT: <string>Type &apos;NSArray&lt;NSString *&gt; *&apos; is inferred from this context</string>
6327// CHECK-NEXT: </dict>
Gabor Horvathefec1632015-10-22 11:53:04 +00006328// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00006329// CHECK-NEXT: <key>kind</key><string>control</string>
6330// CHECK-NEXT: <key>edges</key>
Gabor Horvathefec1632015-10-22 11:53:04 +00006331// CHECK-NEXT: <array>
6332// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00006333// CHECK-NEXT: <key>start</key>
6334// CHECK-NEXT: <array>
6335// CHECK-NEXT: <dict>
6336// CHECK-NEXT: <key>line</key><integer>336</integer>
6337// CHECK-NEXT: <key>col</key><integer>3</integer>
6338// CHECK-NEXT: <key>file</key><integer>0</integer>
6339// CHECK-NEXT: </dict>
6340// CHECK-NEXT: <dict>
6341// CHECK-NEXT: <key>line</key><integer>336</integer>
6342// CHECK-NEXT: <key>col</key><integer>9</integer>
6343// CHECK-NEXT: <key>file</key><integer>0</integer>
6344// CHECK-NEXT: </dict>
6345// CHECK-NEXT: </array>
6346// CHECK-NEXT: <key>end</key>
6347// CHECK-NEXT: <array>
6348// CHECK-NEXT: <dict>
6349// CHECK-NEXT: <key>line</key><integer>337</integer>
6350// CHECK-NEXT: <key>col</key><integer>3</integer>
6351// CHECK-NEXT: <key>file</key><integer>0</integer>
6352// CHECK-NEXT: </dict>
6353// CHECK-NEXT: <dict>
6354// CHECK-NEXT: <key>line</key><integer>337</integer>
6355// CHECK-NEXT: <key>col</key><integer>9</integer>
6356// CHECK-NEXT: <key>file</key><integer>0</integer>
6357// CHECK-NEXT: </dict>
6358// CHECK-NEXT: </array>
Gabor Horvathefec1632015-10-22 11:53:04 +00006359// CHECK-NEXT: </dict>
6360// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +00006361// CHECK-NEXT: </dict>
Gabor Horvathefec1632015-10-22 11:53:04 +00006362// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00006363// CHECK-NEXT: <key>kind</key><string>control</string>
6364// CHECK-NEXT: <key>edges</key>
Gabor Horvathefec1632015-10-22 11:53:04 +00006365// CHECK-NEXT: <array>
6366// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00006367// CHECK-NEXT: <key>start</key>
6368// CHECK-NEXT: <array>
6369// CHECK-NEXT: <dict>
6370// CHECK-NEXT: <key>line</key><integer>337</integer>
6371// CHECK-NEXT: <key>col</key><integer>3</integer>
6372// CHECK-NEXT: <key>file</key><integer>0</integer>
6373// CHECK-NEXT: </dict>
6374// CHECK-NEXT: <dict>
6375// CHECK-NEXT: <key>line</key><integer>337</integer>
6376// CHECK-NEXT: <key>col</key><integer>9</integer>
6377// CHECK-NEXT: <key>file</key><integer>0</integer>
6378// CHECK-NEXT: </dict>
6379// CHECK-NEXT: </array>
6380// CHECK-NEXT: <key>end</key>
6381// CHECK-NEXT: <array>
6382// CHECK-NEXT: <dict>
6383// CHECK-NEXT: <key>line</key><integer>337</integer>
6384// CHECK-NEXT: <key>col</key><integer>30</integer>
6385// CHECK-NEXT: <key>file</key><integer>0</integer>
6386// CHECK-NEXT: </dict>
6387// CHECK-NEXT: <dict>
6388// CHECK-NEXT: <key>line</key><integer>337</integer>
6389// CHECK-NEXT: <key>col</key><integer>30</integer>
6390// CHECK-NEXT: <key>file</key><integer>0</integer>
6391// CHECK-NEXT: </dict>
6392// CHECK-NEXT: </array>
Gabor Horvathefec1632015-10-22 11:53:04 +00006393// CHECK-NEXT: </dict>
6394// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +00006395// CHECK-NEXT: </dict>
6396// CHECK-NEXT: <dict>
6397// CHECK-NEXT: <key>kind</key><string>event</string>
6398// CHECK-NEXT: <key>location</key>
6399// CHECK-NEXT: <dict>
6400// CHECK-NEXT: <key>line</key><integer>337</integer>
6401// CHECK-NEXT: <key>col</key><integer>30</integer>
6402// CHECK-NEXT: <key>file</key><integer>0</integer>
6403// CHECK-NEXT: </dict>
6404// CHECK-NEXT: <key>ranges</key>
Gabor Horvathefec1632015-10-22 11:53:04 +00006405// CHECK-NEXT: <array>
Devin Coughlinab139a92016-12-05 16:28:47 +00006406// CHECK-NEXT: <array>
6407// CHECK-NEXT: <dict>
6408// CHECK-NEXT: <key>line</key><integer>337</integer>
6409// CHECK-NEXT: <key>col</key><integer>30</integer>
6410// CHECK-NEXT: <key>file</key><integer>0</integer>
6411// CHECK-NEXT: </dict>
6412// CHECK-NEXT: <dict>
6413// CHECK-NEXT: <key>line</key><integer>337</integer>
6414// CHECK-NEXT: <key>col</key><integer>30</integer>
6415// CHECK-NEXT: <key>file</key><integer>0</integer>
6416// CHECK-NEXT: </dict>
6417// CHECK-NEXT: </array>
Gabor Horvathefec1632015-10-22 11:53:04 +00006418// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +00006419// CHECK-NEXT: <key>depth</key><integer>0</integer>
6420// CHECK-NEXT: <key>extended_message</key>
6421// CHECK-NEXT: <string>Conversion from value of type &apos;NSArray&lt;NSString *&gt; *&apos; to incompatible type &apos;NSArray&lt;NSNumber *&gt; *&apos;</string>
6422// CHECK-NEXT: <key>message</key>
6423// CHECK-NEXT: <string>Conversion from value of type &apos;NSArray&lt;NSString *&gt; *&apos; to incompatible type &apos;NSArray&lt;NSNumber *&gt; *&apos;</string>
6424// CHECK-NEXT: </dict>
6425// CHECK-NEXT: </array>
6426// CHECK-NEXT: <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>
6427// CHECK-NEXT: <key>category</key><string>Core Foundation/Objective-C</string>
6428// CHECK-NEXT: <key>type</key><string>Generics</string>
6429// CHECK-NEXT: <key>check_name</key><string>core.DynamicTypePropagation</string>
6430// CHECK-NEXT: <!-- This hash is experimental and going to change! -->
6431// CHECK-NEXT: <key>issue_hash_content_of_line_in_context</key><string>9fcbd4dcf212f004877292aa5085322b</string>
6432// CHECK-NEXT: <key>issue_context_kind</key><string>function</string>
6433// CHECK-NEXT: <key>issue_context</key><string>eraseSpecialization</string>
6434// CHECK-NEXT: <key>issue_hash_function_offset</key><string>3</string>
6435// CHECK-NEXT: <key>location</key>
6436// CHECK-NEXT: <dict>
6437// CHECK-NEXT: <key>line</key><integer>337</integer>
6438// CHECK-NEXT: <key>col</key><integer>30</integer>
6439// CHECK-NEXT: <key>file</key><integer>0</integer>
6440// CHECK-NEXT: </dict>
6441// CHECK-NEXT: </dict>
6442// CHECK-NEXT: <dict>
6443// CHECK-NEXT: <key>path</key>
6444// CHECK-NEXT: <array>
Gabor Horvathefec1632015-10-22 11:53:04 +00006445// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00006446// CHECK-NEXT: <key>kind</key><string>control</string>
6447// CHECK-NEXT: <key>edges</key>
Gabor Horvathefec1632015-10-22 11:53:04 +00006448// CHECK-NEXT: <array>
6449// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00006450// CHECK-NEXT: <key>start</key>
6451// CHECK-NEXT: <array>
6452// CHECK-NEXT: <dict>
6453// CHECK-NEXT: <key>line</key><integer>341</integer>
6454// CHECK-NEXT: <key>col</key><integer>3</integer>
6455// CHECK-NEXT: <key>file</key><integer>0</integer>
6456// CHECK-NEXT: </dict>
6457// CHECK-NEXT: <dict>
6458// CHECK-NEXT: <key>line</key><integer>341</integer>
6459// CHECK-NEXT: <key>col</key><integer>9</integer>
6460// CHECK-NEXT: <key>file</key><integer>0</integer>
6461// CHECK-NEXT: </dict>
6462// CHECK-NEXT: </array>
6463// CHECK-NEXT: <key>end</key>
6464// CHECK-NEXT: <array>
6465// CHECK-NEXT: <dict>
6466// CHECK-NEXT: <key>line</key><integer>342</integer>
6467// CHECK-NEXT: <key>col</key><integer>3</integer>
6468// CHECK-NEXT: <key>file</key><integer>0</integer>
6469// CHECK-NEXT: </dict>
6470// CHECK-NEXT: <dict>
6471// CHECK-NEXT: <key>line</key><integer>342</integer>
6472// CHECK-NEXT: <key>col</key><integer>7</integer>
6473// CHECK-NEXT: <key>file</key><integer>0</integer>
6474// CHECK-NEXT: </dict>
6475// CHECK-NEXT: </array>
Gabor Horvathefec1632015-10-22 11:53:04 +00006476// CHECK-NEXT: </dict>
6477// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +00006478// CHECK-NEXT: </dict>
Gabor Horvathefec1632015-10-22 11:53:04 +00006479// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00006480// CHECK-NEXT: <key>kind</key><string>control</string>
6481// CHECK-NEXT: <key>edges</key>
Gabor Horvathefec1632015-10-22 11:53:04 +00006482// CHECK-NEXT: <array>
6483// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00006484// CHECK-NEXT: <key>start</key>
6485// CHECK-NEXT: <array>
6486// CHECK-NEXT: <dict>
6487// CHECK-NEXT: <key>line</key><integer>342</integer>
6488// CHECK-NEXT: <key>col</key><integer>3</integer>
6489// CHECK-NEXT: <key>file</key><integer>0</integer>
6490// CHECK-NEXT: </dict>
6491// CHECK-NEXT: <dict>
6492// CHECK-NEXT: <key>line</key><integer>342</integer>
6493// CHECK-NEXT: <key>col</key><integer>7</integer>
6494// CHECK-NEXT: <key>file</key><integer>0</integer>
6495// CHECK-NEXT: </dict>
6496// CHECK-NEXT: </array>
6497// CHECK-NEXT: <key>end</key>
6498// CHECK-NEXT: <array>
6499// CHECK-NEXT: <dict>
6500// CHECK-NEXT: <key>line</key><integer>342</integer>
6501// CHECK-NEXT: <key>col</key><integer>14</integer>
6502// CHECK-NEXT: <key>file</key><integer>0</integer>
6503// CHECK-NEXT: </dict>
6504// CHECK-NEXT: <dict>
6505// CHECK-NEXT: <key>line</key><integer>342</integer>
6506// CHECK-NEXT: <key>col</key><integer>14</integer>
6507// CHECK-NEXT: <key>file</key><integer>0</integer>
6508// CHECK-NEXT: </dict>
6509// CHECK-NEXT: </array>
Gabor Horvathefec1632015-10-22 11:53:04 +00006510// CHECK-NEXT: </dict>
6511// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +00006512// CHECK-NEXT: </dict>
6513// CHECK-NEXT: <dict>
6514// CHECK-NEXT: <key>kind</key><string>event</string>
6515// CHECK-NEXT: <key>location</key>
6516// CHECK-NEXT: <dict>
6517// CHECK-NEXT: <key>line</key><integer>342</integer>
6518// CHECK-NEXT: <key>col</key><integer>14</integer>
6519// CHECK-NEXT: <key>file</key><integer>0</integer>
6520// CHECK-NEXT: </dict>
6521// CHECK-NEXT: <key>ranges</key>
Gabor Horvathefec1632015-10-22 11:53:04 +00006522// CHECK-NEXT: <array>
Devin Coughlinab139a92016-12-05 16:28:47 +00006523// CHECK-NEXT: <array>
6524// CHECK-NEXT: <dict>
6525// CHECK-NEXT: <key>line</key><integer>342</integer>
6526// CHECK-NEXT: <key>col</key><integer>14</integer>
6527// CHECK-NEXT: <key>file</key><integer>0</integer>
6528// CHECK-NEXT: </dict>
6529// CHECK-NEXT: <dict>
6530// CHECK-NEXT: <key>line</key><integer>342</integer>
6531// CHECK-NEXT: <key>col</key><integer>33</integer>
6532// CHECK-NEXT: <key>file</key><integer>0</integer>
6533// CHECK-NEXT: </dict>
6534// CHECK-NEXT: </array>
Gabor Horvathefec1632015-10-22 11:53:04 +00006535// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +00006536// CHECK-NEXT: <key>depth</key><integer>0</integer>
6537// CHECK-NEXT: <key>extended_message</key>
6538// CHECK-NEXT: <string>Type &apos;NSArray&lt;NSString *&gt; *&apos; is inferred from this context</string>
6539// CHECK-NEXT: <key>message</key>
6540// CHECK-NEXT: <string>Type &apos;NSArray&lt;NSString *&gt; *&apos; is inferred from this context</string>
6541// CHECK-NEXT: </dict>
6542// CHECK-NEXT: <dict>
6543// CHECK-NEXT: <key>kind</key><string>event</string>
6544// CHECK-NEXT: <key>location</key>
6545// CHECK-NEXT: <dict>
6546// CHECK-NEXT: <key>line</key><integer>342</integer>
6547// CHECK-NEXT: <key>col</key><integer>14</integer>
6548// CHECK-NEXT: <key>file</key><integer>0</integer>
6549// CHECK-NEXT: </dict>
6550// CHECK-NEXT: <key>ranges</key>
Gabor Horvathefec1632015-10-22 11:53:04 +00006551// CHECK-NEXT: <array>
Devin Coughlinab139a92016-12-05 16:28:47 +00006552// CHECK-NEXT: <array>
6553// CHECK-NEXT: <dict>
6554// CHECK-NEXT: <key>line</key><integer>342</integer>
6555// CHECK-NEXT: <key>col</key><integer>14</integer>
6556// CHECK-NEXT: <key>file</key><integer>0</integer>
6557// CHECK-NEXT: </dict>
6558// CHECK-NEXT: <dict>
6559// CHECK-NEXT: <key>line</key><integer>342</integer>
6560// CHECK-NEXT: <key>col</key><integer>33</integer>
6561// CHECK-NEXT: <key>file</key><integer>0</integer>
6562// CHECK-NEXT: </dict>
6563// CHECK-NEXT: </array>
Gabor Horvathefec1632015-10-22 11:53:04 +00006564// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +00006565// CHECK-NEXT: <key>depth</key><integer>0</integer>
6566// CHECK-NEXT: <key>extended_message</key>
6567// CHECK-NEXT: <string>Object has a dynamic type &apos;NSArray&lt;NSString *&gt; *&apos; which is incompatible with static type &apos;NSSet *&apos;</string>
6568// CHECK-NEXT: <key>message</key>
6569// CHECK-NEXT: <string>Object has a dynamic type &apos;NSArray&lt;NSString *&gt; *&apos; which is incompatible with static type &apos;NSSet *&apos;</string>
6570// CHECK-NEXT: </dict>
6571// CHECK-NEXT: </array>
6572// CHECK-NEXT: <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>
6573// CHECK-NEXT: <key>category</key><string>Type Error</string>
6574// CHECK-NEXT: <key>type</key><string>Dynamic and static type mismatch</string>
6575// CHECK-NEXT: <key>check_name</key><string>alpha.core.DynamicTypeChecker</string>
6576// CHECK-NEXT: <!-- This hash is experimental and going to change! -->
6577// CHECK-NEXT: <key>issue_hash_content_of_line_in_context</key><string>be6714fed24af6e7ac522b87a5098de0</string>
6578// CHECK-NEXT: <key>issue_context_kind</key><string>function</string>
6579// CHECK-NEXT: <key>issue_context</key><string>returnToUnrelatedType</string>
6580// CHECK-NEXT: <key>issue_hash_function_offset</key><string>2</string>
6581// CHECK-NEXT: <key>location</key>
6582// CHECK-NEXT: <dict>
6583// CHECK-NEXT: <key>line</key><integer>342</integer>
6584// CHECK-NEXT: <key>col</key><integer>14</integer>
6585// CHECK-NEXT: <key>file</key><integer>0</integer>
6586// CHECK-NEXT: </dict>
6587// CHECK-NEXT: </dict>
6588// CHECK-NEXT: <dict>
6589// CHECK-NEXT: <key>path</key>
6590// CHECK-NEXT: <array>
Gabor Horvathefec1632015-10-22 11:53:04 +00006591// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00006592// CHECK-NEXT: <key>kind</key><string>control</string>
6593// CHECK-NEXT: <key>edges</key>
Gabor Horvathefec1632015-10-22 11:53:04 +00006594// CHECK-NEXT: <array>
6595// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00006596// CHECK-NEXT: <key>start</key>
6597// CHECK-NEXT: <array>
6598// CHECK-NEXT: <dict>
6599// CHECK-NEXT: <key>line</key><integer>347</integer>
6600// CHECK-NEXT: <key>col</key><integer>3</integer>
6601// CHECK-NEXT: <key>file</key><integer>0</integer>
6602// CHECK-NEXT: </dict>
6603// CHECK-NEXT: <dict>
6604// CHECK-NEXT: <key>line</key><integer>347</integer>
6605// CHECK-NEXT: <key>col</key><integer>9</integer>
6606// CHECK-NEXT: <key>file</key><integer>0</integer>
6607// CHECK-NEXT: </dict>
6608// CHECK-NEXT: </array>
6609// CHECK-NEXT: <key>end</key>
6610// CHECK-NEXT: <array>
6611// CHECK-NEXT: <dict>
6612// CHECK-NEXT: <key>line</key><integer>348</integer>
6613// CHECK-NEXT: <key>col</key><integer>3</integer>
6614// CHECK-NEXT: <key>file</key><integer>0</integer>
6615// CHECK-NEXT: </dict>
6616// CHECK-NEXT: <dict>
6617// CHECK-NEXT: <key>line</key><integer>348</integer>
6618// CHECK-NEXT: <key>col</key><integer>4</integer>
6619// CHECK-NEXT: <key>file</key><integer>0</integer>
6620// CHECK-NEXT: </dict>
6621// CHECK-NEXT: </array>
Gabor Horvathefec1632015-10-22 11:53:04 +00006622// CHECK-NEXT: </dict>
6623// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +00006624// CHECK-NEXT: </dict>
Gabor Horvathefec1632015-10-22 11:53:04 +00006625// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00006626// CHECK-NEXT: <key>kind</key><string>event</string>
6627// CHECK-NEXT: <key>location</key>
6628// CHECK-NEXT: <dict>
6629// CHECK-NEXT: <key>line</key><integer>348</integer>
6630// CHECK-NEXT: <key>col</key><integer>10</integer>
6631// CHECK-NEXT: <key>file</key><integer>0</integer>
6632// CHECK-NEXT: </dict>
6633// CHECK-NEXT: <key>ranges</key>
6634// CHECK-NEXT: <array>
6635// CHECK-NEXT: <array>
6636// CHECK-NEXT: <dict>
6637// CHECK-NEXT: <key>line</key><integer>348</integer>
6638// CHECK-NEXT: <key>col</key><integer>10</integer>
6639// CHECK-NEXT: <key>file</key><integer>0</integer>
6640// CHECK-NEXT: </dict>
6641// CHECK-NEXT: <dict>
6642// CHECK-NEXT: <key>line</key><integer>348</integer>
6643// CHECK-NEXT: <key>col</key><integer>29</integer>
6644// CHECK-NEXT: <key>file</key><integer>0</integer>
6645// CHECK-NEXT: </dict>
6646// CHECK-NEXT: </array>
6647// CHECK-NEXT: </array>
6648// CHECK-NEXT: <key>depth</key><integer>0</integer>
6649// CHECK-NEXT: <key>extended_message</key>
6650// CHECK-NEXT: <string>Type &apos;NSString *&apos; is inferred from this context</string>
6651// CHECK-NEXT: <key>message</key>
6652// CHECK-NEXT: <string>Type &apos;NSString *&apos; is inferred from this context</string>
Gabor Horvathefec1632015-10-22 11:53:04 +00006653// CHECK-NEXT: </dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00006654// CHECK-NEXT: <dict>
6655// CHECK-NEXT: <key>kind</key><string>control</string>
6656// CHECK-NEXT: <key>edges</key>
Gabor Horvathefec1632015-10-22 11:53:04 +00006657// CHECK-NEXT: <array>
6658// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00006659// CHECK-NEXT: <key>start</key>
6660// CHECK-NEXT: <array>
6661// CHECK-NEXT: <dict>
6662// CHECK-NEXT: <key>line</key><integer>348</integer>
6663// CHECK-NEXT: <key>col</key><integer>3</integer>
6664// CHECK-NEXT: <key>file</key><integer>0</integer>
6665// CHECK-NEXT: </dict>
6666// CHECK-NEXT: <dict>
6667// CHECK-NEXT: <key>line</key><integer>348</integer>
6668// CHECK-NEXT: <key>col</key><integer>4</integer>
6669// CHECK-NEXT: <key>file</key><integer>0</integer>
6670// CHECK-NEXT: </dict>
6671// CHECK-NEXT: </array>
6672// CHECK-NEXT: <key>end</key>
6673// CHECK-NEXT: <array>
6674// CHECK-NEXT: <dict>
6675// CHECK-NEXT: <key>line</key><integer>349</integer>
6676// CHECK-NEXT: <key>col</key><integer>3</integer>
6677// CHECK-NEXT: <key>file</key><integer>0</integer>
6678// CHECK-NEXT: </dict>
6679// CHECK-NEXT: <dict>
6680// CHECK-NEXT: <key>line</key><integer>349</integer>
6681// CHECK-NEXT: <key>col</key><integer>10</integer>
6682// CHECK-NEXT: <key>file</key><integer>0</integer>
6683// CHECK-NEXT: </dict>
6684// CHECK-NEXT: </array>
Gabor Horvathefec1632015-10-22 11:53:04 +00006685// CHECK-NEXT: </dict>
6686// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +00006687// CHECK-NEXT: </dict>
Gabor Horvathefec1632015-10-22 11:53:04 +00006688// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00006689// CHECK-NEXT: <key>kind</key><string>control</string>
6690// CHECK-NEXT: <key>edges</key>
Gabor Horvathefec1632015-10-22 11:53:04 +00006691// CHECK-NEXT: <array>
6692// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00006693// CHECK-NEXT: <key>start</key>
6694// CHECK-NEXT: <array>
6695// CHECK-NEXT: <dict>
6696// CHECK-NEXT: <key>line</key><integer>349</integer>
6697// CHECK-NEXT: <key>col</key><integer>3</integer>
6698// CHECK-NEXT: <key>file</key><integer>0</integer>
6699// CHECK-NEXT: </dict>
6700// CHECK-NEXT: <dict>
6701// CHECK-NEXT: <key>line</key><integer>349</integer>
6702// CHECK-NEXT: <key>col</key><integer>10</integer>
6703// CHECK-NEXT: <key>file</key><integer>0</integer>
6704// CHECK-NEXT: </dict>
6705// CHECK-NEXT: </array>
6706// CHECK-NEXT: <key>end</key>
6707// CHECK-NEXT: <array>
6708// CHECK-NEXT: <dict>
6709// CHECK-NEXT: <key>line</key><integer>349</integer>
6710// CHECK-NEXT: <key>col</key><integer>19</integer>
6711// CHECK-NEXT: <key>file</key><integer>0</integer>
6712// CHECK-NEXT: </dict>
6713// CHECK-NEXT: <dict>
6714// CHECK-NEXT: <key>line</key><integer>349</integer>
6715// CHECK-NEXT: <key>col</key><integer>19</integer>
6716// CHECK-NEXT: <key>file</key><integer>0</integer>
6717// CHECK-NEXT: </dict>
6718// CHECK-NEXT: </array>
Gabor Horvathefec1632015-10-22 11:53:04 +00006719// CHECK-NEXT: </dict>
6720// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +00006721// CHECK-NEXT: </dict>
6722// CHECK-NEXT: <dict>
6723// CHECK-NEXT: <key>kind</key><string>event</string>
6724// CHECK-NEXT: <key>location</key>
6725// CHECK-NEXT: <dict>
6726// CHECK-NEXT: <key>line</key><integer>349</integer>
6727// CHECK-NEXT: <key>col</key><integer>19</integer>
6728// CHECK-NEXT: <key>file</key><integer>0</integer>
6729// CHECK-NEXT: </dict>
6730// CHECK-NEXT: <key>ranges</key>
Gabor Horvathefec1632015-10-22 11:53:04 +00006731// CHECK-NEXT: <array>
Devin Coughlinab139a92016-12-05 16:28:47 +00006732// CHECK-NEXT: <array>
6733// CHECK-NEXT: <dict>
6734// CHECK-NEXT: <key>line</key><integer>349</integer>
6735// CHECK-NEXT: <key>col</key><integer>19</integer>
6736// CHECK-NEXT: <key>file</key><integer>0</integer>
6737// CHECK-NEXT: </dict>
6738// CHECK-NEXT: <dict>
6739// CHECK-NEXT: <key>line</key><integer>349</integer>
6740// CHECK-NEXT: <key>col</key><integer>19</integer>
6741// CHECK-NEXT: <key>file</key><integer>0</integer>
6742// CHECK-NEXT: </dict>
6743// CHECK-NEXT: </array>
Gabor Horvathefec1632015-10-22 11:53:04 +00006744// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +00006745// CHECK-NEXT: <key>depth</key><integer>0</integer>
6746// CHECK-NEXT: <key>extended_message</key>
6747// CHECK-NEXT: <string>Object has a dynamic type &apos;NSString *&apos; which is incompatible with static type &apos;NSNumber *&apos;</string>
6748// CHECK-NEXT: <key>message</key>
6749// CHECK-NEXT: <string>Object has a dynamic type &apos;NSString *&apos; which is incompatible with static type &apos;NSNumber *&apos;</string>
6750// CHECK-NEXT: </dict>
6751// CHECK-NEXT: </array>
6752// CHECK-NEXT: <key>description</key><string>Object has a dynamic type &apos;NSString *&apos; which is incompatible with static type &apos;NSNumber *&apos;</string>
6753// CHECK-NEXT: <key>category</key><string>Type Error</string>
6754// CHECK-NEXT: <key>type</key><string>Dynamic and static type mismatch</string>
6755// CHECK-NEXT: <key>check_name</key><string>alpha.core.DynamicTypeChecker</string>
6756// CHECK-NEXT: <!-- This hash is experimental and going to change! -->
6757// CHECK-NEXT: <key>issue_hash_content_of_line_in_context</key><string>5e96ef711c8f115bc64f69baa3f6ea7a</string>
6758// CHECK-NEXT: <key>issue_context_kind</key><string>function</string>
6759// CHECK-NEXT: <key>issue_context</key><string>returnToIdVariable</string>
6760// CHECK-NEXT: <key>issue_hash_function_offset</key><string>3</string>
6761// CHECK-NEXT: <key>location</key>
6762// CHECK-NEXT: <dict>
6763// CHECK-NEXT: <key>line</key><integer>349</integer>
6764// CHECK-NEXT: <key>col</key><integer>19</integer>
6765// CHECK-NEXT: <key>file</key><integer>0</integer>
6766// CHECK-NEXT: </dict>
6767// CHECK-NEXT: </dict>
6768// CHECK-NEXT: <dict>
6769// CHECK-NEXT: <key>path</key>
6770// CHECK-NEXT: <array>
6771// CHECK-NEXT: <dict>
6772// CHECK-NEXT: <key>kind</key><string>event</string>
6773// CHECK-NEXT: <key>location</key>
6774// CHECK-NEXT: <dict>
6775// CHECK-NEXT: <key>line</key><integer>358</integer>
6776// CHECK-NEXT: <key>col</key><integer>12</integer>
6777// CHECK-NEXT: <key>file</key><integer>0</integer>
6778// CHECK-NEXT: </dict>
6779// CHECK-NEXT: <key>ranges</key>
Gabor Horvathefec1632015-10-22 11:53:04 +00006780// CHECK-NEXT: <array>
Devin Coughlinab139a92016-12-05 16:28:47 +00006781// CHECK-NEXT: <array>
6782// CHECK-NEXT: <dict>
6783// CHECK-NEXT: <key>line</key><integer>358</integer>
6784// CHECK-NEXT: <key>col</key><integer>12</integer>
6785// CHECK-NEXT: <key>file</key><integer>0</integer>
6786// CHECK-NEXT: </dict>
6787// CHECK-NEXT: <dict>
6788// CHECK-NEXT: <key>line</key><integer>358</integer>
6789// CHECK-NEXT: <key>col</key><integer>12</integer>
6790// CHECK-NEXT: <key>file</key><integer>0</integer>
6791// CHECK-NEXT: </dict>
6792// CHECK-NEXT: </array>
Gabor Horvathefec1632015-10-22 11:53:04 +00006793// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +00006794// CHECK-NEXT: <key>depth</key><integer>0</integer>
6795// CHECK-NEXT: <key>extended_message</key>
6796// CHECK-NEXT: <string>Type &apos;UnrelatedTypeGeneric&lt;NSString *&gt; *&apos; is inferred from implicit cast (from &apos;UnrelatedTypeGeneric&lt;NSString *&gt; *&apos; to &apos;id&apos;)</string>
6797// CHECK-NEXT: <key>message</key>
6798// CHECK-NEXT: <string>Type &apos;UnrelatedTypeGeneric&lt;NSString *&gt; *&apos; is inferred from implicit cast (from &apos;UnrelatedTypeGeneric&lt;NSString *&gt; *&apos; to &apos;id&apos;)</string>
6799// CHECK-NEXT: </dict>
Gabor Horvathefec1632015-10-22 11:53:04 +00006800// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00006801// CHECK-NEXT: <key>kind</key><string>control</string>
6802// CHECK-NEXT: <key>edges</key>
Gabor Horvathefec1632015-10-22 11:53:04 +00006803// CHECK-NEXT: <array>
6804// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00006805// CHECK-NEXT: <key>start</key>
6806// CHECK-NEXT: <array>
6807// CHECK-NEXT: <dict>
6808// CHECK-NEXT: <key>line</key><integer>358</integer>
6809// CHECK-NEXT: <key>col</key><integer>3</integer>
6810// CHECK-NEXT: <key>file</key><integer>0</integer>
6811// CHECK-NEXT: </dict>
6812// CHECK-NEXT: <dict>
6813// CHECK-NEXT: <key>line</key><integer>358</integer>
6814// CHECK-NEXT: <key>col</key><integer>4</integer>
6815// CHECK-NEXT: <key>file</key><integer>0</integer>
6816// CHECK-NEXT: </dict>
6817// CHECK-NEXT: </array>
6818// CHECK-NEXT: <key>end</key>
6819// CHECK-NEXT: <array>
6820// CHECK-NEXT: <dict>
6821// CHECK-NEXT: <key>line</key><integer>359</integer>
6822// CHECK-NEXT: <key>col</key><integer>3</integer>
6823// CHECK-NEXT: <key>file</key><integer>0</integer>
6824// CHECK-NEXT: </dict>
6825// CHECK-NEXT: <dict>
6826// CHECK-NEXT: <key>line</key><integer>359</integer>
6827// CHECK-NEXT: <key>col</key><integer>3</integer>
6828// CHECK-NEXT: <key>file</key><integer>0</integer>
6829// CHECK-NEXT: </dict>
6830// CHECK-NEXT: </array>
Gabor Horvathefec1632015-10-22 11:53:04 +00006831// CHECK-NEXT: </dict>
6832// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +00006833// CHECK-NEXT: </dict>
Devin Coughlinc1bfafd2016-05-11 20:28:41 +00006834// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00006835// CHECK-NEXT: <key>kind</key><string>control</string>
6836// CHECK-NEXT: <key>edges</key>
Devin Coughlinc1bfafd2016-05-11 20:28:41 +00006837// CHECK-NEXT: <array>
6838// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00006839// CHECK-NEXT: <key>start</key>
6840// CHECK-NEXT: <array>
6841// CHECK-NEXT: <dict>
6842// CHECK-NEXT: <key>line</key><integer>359</integer>
6843// CHECK-NEXT: <key>col</key><integer>3</integer>
6844// CHECK-NEXT: <key>file</key><integer>0</integer>
6845// CHECK-NEXT: </dict>
6846// CHECK-NEXT: <dict>
6847// CHECK-NEXT: <key>line</key><integer>359</integer>
6848// CHECK-NEXT: <key>col</key><integer>3</integer>
6849// CHECK-NEXT: <key>file</key><integer>0</integer>
6850// CHECK-NEXT: </dict>
6851// CHECK-NEXT: </array>
6852// CHECK-NEXT: <key>end</key>
6853// CHECK-NEXT: <array>
6854// CHECK-NEXT: <dict>
6855// CHECK-NEXT: <key>line</key><integer>359</integer>
6856// CHECK-NEXT: <key>col</key><integer>7</integer>
6857// CHECK-NEXT: <key>file</key><integer>0</integer>
6858// CHECK-NEXT: </dict>
6859// CHECK-NEXT: <dict>
6860// CHECK-NEXT: <key>line</key><integer>359</integer>
6861// CHECK-NEXT: <key>col</key><integer>9</integer>
6862// CHECK-NEXT: <key>file</key><integer>0</integer>
6863// CHECK-NEXT: </dict>
6864// CHECK-NEXT: </array>
Devin Coughlinc1bfafd2016-05-11 20:28:41 +00006865// CHECK-NEXT: </dict>
6866// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +00006867// CHECK-NEXT: </dict>
6868// CHECK-NEXT: <dict>
6869// CHECK-NEXT: <key>kind</key><string>event</string>
6870// CHECK-NEXT: <key>location</key>
6871// CHECK-NEXT: <dict>
6872// CHECK-NEXT: <key>line</key><integer>359</integer>
6873// CHECK-NEXT: <key>col</key><integer>7</integer>
6874// CHECK-NEXT: <key>file</key><integer>0</integer>
6875// CHECK-NEXT: </dict>
6876// CHECK-NEXT: <key>ranges</key>
Devin Coughlinc1bfafd2016-05-11 20:28:41 +00006877// CHECK-NEXT: <array>
Devin Coughlinab139a92016-12-05 16:28:47 +00006878// CHECK-NEXT: <array>
6879// CHECK-NEXT: <dict>
6880// CHECK-NEXT: <key>line</key><integer>359</integer>
6881// CHECK-NEXT: <key>col</key><integer>7</integer>
6882// CHECK-NEXT: <key>file</key><integer>0</integer>
6883// CHECK-NEXT: </dict>
6884// CHECK-NEXT: <dict>
6885// CHECK-NEXT: <key>line</key><integer>359</integer>
6886// CHECK-NEXT: <key>col</key><integer>9</integer>
6887// CHECK-NEXT: <key>file</key><integer>0</integer>
6888// CHECK-NEXT: </dict>
6889// CHECK-NEXT: </array>
Devin Coughlinc1bfafd2016-05-11 20:28:41 +00006890// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +00006891// CHECK-NEXT: <key>depth</key><integer>0</integer>
6892// CHECK-NEXT: <key>extended_message</key>
6893// CHECK-NEXT: <string>Conversion from value of type &apos;UnrelatedTypeGeneric&lt;NSString *&gt; *&apos; to incompatible type &apos;NSArray&lt;NSString *&gt; *&apos;</string>
6894// CHECK-NEXT: <key>message</key>
6895// CHECK-NEXT: <string>Conversion from value of type &apos;UnrelatedTypeGeneric&lt;NSString *&gt; *&apos; to incompatible type &apos;NSArray&lt;NSString *&gt; *&apos;</string>
6896// CHECK-NEXT: </dict>
6897// CHECK-NEXT: </array>
6898// CHECK-NEXT: <key>description</key><string>Conversion from value of type &apos;UnrelatedTypeGeneric&lt;NSString *&gt; *&apos; to incompatible type &apos;NSArray&lt;NSString *&gt; *&apos;</string>
6899// CHECK-NEXT: <key>category</key><string>Core Foundation/Objective-C</string>
6900// CHECK-NEXT: <key>type</key><string>Generics</string>
6901// CHECK-NEXT: <key>check_name</key><string>core.DynamicTypePropagation</string>
6902// CHECK-NEXT: <!-- This hash is experimental and going to change! -->
6903// CHECK-NEXT: <key>issue_hash_content_of_line_in_context</key><string>8347f65fb51a85ccd462d75ffd761078</string>
6904// CHECK-NEXT: <key>issue_context_kind</key><string>function</string>
6905// CHECK-NEXT: <key>issue_context</key><string>testGetMostInformativeDerivedForId</string>
6906// CHECK-NEXT: <key>issue_hash_function_offset</key><string>2</string>
6907// CHECK-NEXT: <key>location</key>
6908// CHECK-NEXT: <dict>
6909// CHECK-NEXT: <key>line</key><integer>359</integer>
6910// CHECK-NEXT: <key>col</key><integer>7</integer>
6911// CHECK-NEXT: <key>file</key><integer>0</integer>
6912// CHECK-NEXT: </dict>
6913// CHECK-NEXT: </dict>
6914// CHECK-NEXT: <dict>
6915// CHECK-NEXT: <key>path</key>
6916// CHECK-NEXT: <array>
6917// CHECK-NEXT: <dict>
6918// CHECK-NEXT: <key>kind</key><string>event</string>
6919// CHECK-NEXT: <key>location</key>
6920// CHECK-NEXT: <dict>
6921// CHECK-NEXT: <key>line</key><integer>358</integer>
6922// CHECK-NEXT: <key>col</key><integer>12</integer>
6923// CHECK-NEXT: <key>file</key><integer>0</integer>
6924// CHECK-NEXT: </dict>
6925// CHECK-NEXT: <key>ranges</key>
Devin Coughlinc1bfafd2016-05-11 20:28:41 +00006926// CHECK-NEXT: <array>
Devin Coughlinab139a92016-12-05 16:28:47 +00006927// CHECK-NEXT: <array>
6928// CHECK-NEXT: <dict>
6929// CHECK-NEXT: <key>line</key><integer>358</integer>
6930// CHECK-NEXT: <key>col</key><integer>12</integer>
6931// CHECK-NEXT: <key>file</key><integer>0</integer>
6932// CHECK-NEXT: </dict>
6933// CHECK-NEXT: <dict>
6934// CHECK-NEXT: <key>line</key><integer>358</integer>
6935// CHECK-NEXT: <key>col</key><integer>12</integer>
6936// CHECK-NEXT: <key>file</key><integer>0</integer>
6937// CHECK-NEXT: </dict>
6938// CHECK-NEXT: </array>
Devin Coughlinc1bfafd2016-05-11 20:28:41 +00006939// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +00006940// CHECK-NEXT: <key>depth</key><integer>0</integer>
6941// CHECK-NEXT: <key>extended_message</key>
6942// CHECK-NEXT: <string>Type &apos;UnrelatedTypeGeneric&lt;NSString *&gt; *&apos; is inferred from implicit cast (from &apos;UnrelatedTypeGeneric&lt;NSString *&gt; *&apos; to &apos;id&apos;)</string>
6943// CHECK-NEXT: <key>message</key>
6944// CHECK-NEXT: <string>Type &apos;UnrelatedTypeGeneric&lt;NSString *&gt; *&apos; is inferred from implicit cast (from &apos;UnrelatedTypeGeneric&lt;NSString *&gt; *&apos; to &apos;id&apos;)</string>
6945// CHECK-NEXT: </dict>
Devin Coughlinc1bfafd2016-05-11 20:28:41 +00006946// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00006947// CHECK-NEXT: <key>kind</key><string>control</string>
6948// CHECK-NEXT: <key>edges</key>
Devin Coughlinc1bfafd2016-05-11 20:28:41 +00006949// CHECK-NEXT: <array>
6950// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00006951// CHECK-NEXT: <key>start</key>
6952// CHECK-NEXT: <array>
6953// CHECK-NEXT: <dict>
6954// CHECK-NEXT: <key>line</key><integer>358</integer>
6955// CHECK-NEXT: <key>col</key><integer>3</integer>
6956// CHECK-NEXT: <key>file</key><integer>0</integer>
6957// CHECK-NEXT: </dict>
6958// CHECK-NEXT: <dict>
6959// CHECK-NEXT: <key>line</key><integer>358</integer>
6960// CHECK-NEXT: <key>col</key><integer>4</integer>
6961// CHECK-NEXT: <key>file</key><integer>0</integer>
6962// CHECK-NEXT: </dict>
6963// CHECK-NEXT: </array>
6964// CHECK-NEXT: <key>end</key>
6965// CHECK-NEXT: <array>
6966// CHECK-NEXT: <dict>
6967// CHECK-NEXT: <key>line</key><integer>364</integer>
6968// CHECK-NEXT: <key>col</key><integer>3</integer>
6969// CHECK-NEXT: <key>file</key><integer>0</integer>
6970// CHECK-NEXT: </dict>
6971// CHECK-NEXT: <dict>
6972// CHECK-NEXT: <key>line</key><integer>364</integer>
6973// CHECK-NEXT: <key>col</key><integer>3</integer>
6974// CHECK-NEXT: <key>file</key><integer>0</integer>
6975// CHECK-NEXT: </dict>
6976// CHECK-NEXT: </array>
Devin Coughlinc1bfafd2016-05-11 20:28:41 +00006977// CHECK-NEXT: </dict>
6978// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +00006979// CHECK-NEXT: </dict>
Devin Coughlinc1bfafd2016-05-11 20:28:41 +00006980// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00006981// CHECK-NEXT: <key>kind</key><string>event</string>
6982// CHECK-NEXT: <key>location</key>
6983// CHECK-NEXT: <dict>
6984// CHECK-NEXT: <key>line</key><integer>364</integer>
6985// CHECK-NEXT: <key>col</key><integer>3</integer>
6986// CHECK-NEXT: <key>file</key><integer>0</integer>
6987// CHECK-NEXT: </dict>
6988// CHECK-NEXT: <key>ranges</key>
6989// CHECK-NEXT: <array>
6990// CHECK-NEXT: <array>
6991// CHECK-NEXT: <dict>
6992// CHECK-NEXT: <key>line</key><integer>364</integer>
6993// CHECK-NEXT: <key>col</key><integer>16</integer>
6994// CHECK-NEXT: <key>file</key><integer>0</integer>
6995// CHECK-NEXT: </dict>
6996// CHECK-NEXT: <dict>
6997// CHECK-NEXT: <key>line</key><integer>364</integer>
6998// CHECK-NEXT: <key>col</key><integer>38</integer>
6999// CHECK-NEXT: <key>file</key><integer>0</integer>
7000// CHECK-NEXT: </dict>
7001// CHECK-NEXT: </array>
7002// CHECK-NEXT: </array>
7003// CHECK-NEXT: <key>depth</key><integer>0</integer>
7004// CHECK-NEXT: <key>extended_message</key>
7005// CHECK-NEXT: <string>Conversion from value of type &apos;NSNumber *&apos; to incompatible type &apos;NSString *&apos;</string>
7006// CHECK-NEXT: <key>message</key>
7007// CHECK-NEXT: <string>Conversion from value of type &apos;NSNumber *&apos; to incompatible type &apos;NSString *&apos;</string>
Devin Coughlinc1bfafd2016-05-11 20:28:41 +00007008// CHECK-NEXT: </dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00007009// CHECK-NEXT: </array>
7010// CHECK-NEXT: <key>description</key><string>Conversion from value of type &apos;NSNumber *&apos; to incompatible type &apos;NSString *&apos;</string>
7011// CHECK-NEXT: <key>category</key><string>Core Foundation/Objective-C</string>
7012// CHECK-NEXT: <key>type</key><string>Generics</string>
7013// CHECK-NEXT: <key>check_name</key><string>core.DynamicTypePropagation</string>
7014// CHECK-NEXT: <!-- This hash is experimental and going to change! -->
7015// CHECK-NEXT: <key>issue_hash_content_of_line_in_context</key><string>6528db66f562ac0c2a94933f3ca5f6a8</string>
7016// CHECK-NEXT: <key>issue_context_kind</key><string>function</string>
7017// CHECK-NEXT: <key>issue_context</key><string>testGetMostInformativeDerivedForId</string>
7018// CHECK-NEXT: <key>issue_hash_function_offset</key><string>7</string>
7019// CHECK-NEXT: <key>location</key>
7020// CHECK-NEXT: <dict>
7021// CHECK-NEXT: <key>line</key><integer>364</integer>
7022// CHECK-NEXT: <key>col</key><integer>3</integer>
7023// CHECK-NEXT: <key>file</key><integer>0</integer>
7024// CHECK-NEXT: </dict>
7025// CHECK-NEXT: </dict>
7026// CHECK-NEXT: <dict>
7027// CHECK-NEXT: <key>path</key>
7028// CHECK-NEXT: <array>
7029// CHECK-NEXT: <dict>
7030// CHECK-NEXT: <key>kind</key><string>control</string>
7031// CHECK-NEXT: <key>edges</key>
Devin Coughlinc1bfafd2016-05-11 20:28:41 +00007032// CHECK-NEXT: <array>
7033// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00007034// CHECK-NEXT: <key>start</key>
7035// CHECK-NEXT: <array>
7036// CHECK-NEXT: <dict>
7037// CHECK-NEXT: <key>line</key><integer>373</integer>
7038// CHECK-NEXT: <key>col</key><integer>3</integer>
7039// CHECK-NEXT: <key>file</key><integer>0</integer>
7040// CHECK-NEXT: </dict>
7041// CHECK-NEXT: <dict>
7042// CHECK-NEXT: <key>line</key><integer>373</integer>
7043// CHECK-NEXT: <key>col</key><integer>9</integer>
7044// CHECK-NEXT: <key>file</key><integer>0</integer>
7045// CHECK-NEXT: </dict>
7046// CHECK-NEXT: </array>
7047// CHECK-NEXT: <key>end</key>
7048// CHECK-NEXT: <array>
7049// CHECK-NEXT: <dict>
7050// CHECK-NEXT: <key>line</key><integer>375</integer>
7051// CHECK-NEXT: <key>col</key><integer>3</integer>
7052// CHECK-NEXT: <key>file</key><integer>0</integer>
7053// CHECK-NEXT: </dict>
7054// CHECK-NEXT: <dict>
7055// CHECK-NEXT: <key>line</key><integer>375</integer>
7056// CHECK-NEXT: <key>col</key><integer>9</integer>
7057// CHECK-NEXT: <key>file</key><integer>0</integer>
7058// CHECK-NEXT: </dict>
7059// CHECK-NEXT: </array>
Devin Coughlinc1bfafd2016-05-11 20:28:41 +00007060// CHECK-NEXT: </dict>
7061// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +00007062// CHECK-NEXT: </dict>
Devin Coughlinc1bfafd2016-05-11 20:28:41 +00007063// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00007064// CHECK-NEXT: <key>kind</key><string>control</string>
7065// CHECK-NEXT: <key>edges</key>
Devin Coughlinc1bfafd2016-05-11 20:28:41 +00007066// CHECK-NEXT: <array>
7067// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00007068// CHECK-NEXT: <key>start</key>
7069// CHECK-NEXT: <array>
7070// CHECK-NEXT: <dict>
7071// CHECK-NEXT: <key>line</key><integer>375</integer>
7072// CHECK-NEXT: <key>col</key><integer>3</integer>
7073// CHECK-NEXT: <key>file</key><integer>0</integer>
7074// CHECK-NEXT: </dict>
7075// CHECK-NEXT: <dict>
7076// CHECK-NEXT: <key>line</key><integer>375</integer>
7077// CHECK-NEXT: <key>col</key><integer>9</integer>
7078// CHECK-NEXT: <key>file</key><integer>0</integer>
7079// CHECK-NEXT: </dict>
7080// CHECK-NEXT: </array>
7081// CHECK-NEXT: <key>end</key>
7082// CHECK-NEXT: <array>
7083// CHECK-NEXT: <dict>
7084// CHECK-NEXT: <key>line</key><integer>375</integer>
7085// CHECK-NEXT: <key>col</key><integer>70</integer>
7086// CHECK-NEXT: <key>file</key><integer>0</integer>
7087// CHECK-NEXT: </dict>
7088// CHECK-NEXT: <dict>
7089// CHECK-NEXT: <key>line</key><integer>375</integer>
7090// CHECK-NEXT: <key>col</key><integer>79</integer>
7091// CHECK-NEXT: <key>file</key><integer>0</integer>
7092// CHECK-NEXT: </dict>
7093// CHECK-NEXT: </array>
Devin Coughlinc1bfafd2016-05-11 20:28:41 +00007094// CHECK-NEXT: </dict>
7095// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +00007096// CHECK-NEXT: </dict>
7097// CHECK-NEXT: <dict>
7098// CHECK-NEXT: <key>kind</key><string>event</string>
7099// CHECK-NEXT: <key>location</key>
7100// CHECK-NEXT: <dict>
7101// CHECK-NEXT: <key>line</key><integer>375</integer>
7102// CHECK-NEXT: <key>col</key><integer>70</integer>
7103// CHECK-NEXT: <key>file</key><integer>0</integer>
7104// CHECK-NEXT: </dict>
7105// CHECK-NEXT: <key>ranges</key>
7106// CHECK-NEXT: <array>
7107// CHECK-NEXT: <array>
7108// CHECK-NEXT: <dict>
7109// CHECK-NEXT: <key>line</key><integer>375</integer>
7110// CHECK-NEXT: <key>col</key><integer>70</integer>
7111// CHECK-NEXT: <key>file</key><integer>0</integer>
7112// CHECK-NEXT: </dict>
7113// CHECK-NEXT: <dict>
7114// CHECK-NEXT: <key>line</key><integer>375</integer>
7115// CHECK-NEXT: <key>col</key><integer>79</integer>
7116// CHECK-NEXT: <key>file</key><integer>0</integer>
7117// CHECK-NEXT: </dict>
7118// CHECK-NEXT: </array>
7119// CHECK-NEXT: </array>
7120// CHECK-NEXT: <key>depth</key><integer>0</integer>
7121// CHECK-NEXT: <key>extended_message</key>
7122// CHECK-NEXT: <string>Object has a dynamic type &apos;NSNumber *&apos; which is incompatible with static type &apos;NSString *&apos;</string>
7123// CHECK-NEXT: <key>message</key>
7124// CHECK-NEXT: <string>Object has a dynamic type &apos;NSNumber *&apos; which is incompatible with static type &apos;NSString *&apos;</string>
7125// CHECK-NEXT: </dict>
7126// CHECK-NEXT: </array>
7127// CHECK-NEXT: <key>description</key><string>Object has a dynamic type &apos;NSNumber *&apos; which is incompatible with static type &apos;NSString *&apos;</string>
7128// CHECK-NEXT: <key>category</key><string>Type Error</string>
7129// CHECK-NEXT: <key>type</key><string>Dynamic and static type mismatch</string>
7130// CHECK-NEXT: <key>check_name</key><string>alpha.core.DynamicTypeChecker</string>
7131// CHECK-NEXT: <!-- This hash is experimental and going to change! -->
7132// CHECK-NEXT: <key>issue_hash_content_of_line_in_context</key><string>56326e7b73d049256717eba7005ccc4d</string>
7133// CHECK-NEXT: <key>issue_context_kind</key><string>function</string>
7134// CHECK-NEXT: <key>issue_context</key><string>testArgumentAfterUpcastWithCovariantTypeParameter</string>
7135// CHECK-NEXT: <key>issue_hash_function_offset</key><string>3</string>
7136// CHECK-NEXT: <key>location</key>
7137// CHECK-NEXT: <dict>
7138// CHECK-NEXT: <key>line</key><integer>375</integer>
7139// CHECK-NEXT: <key>col</key><integer>70</integer>
7140// CHECK-NEXT: <key>file</key><integer>0</integer>
7141// CHECK-NEXT: </dict>
7142// CHECK-NEXT: </dict>
7143// CHECK-NEXT: </array>