blob: e506e89bdf515c0a2e159523b17fb1093b863324 [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
Devin Coughlin5df6b942017-11-13 17:35:29 +0000162void dontInferFromExplicitCastsOnUnspecialized(MutableArray *a,
Gabor Horvath717b51c2015-08-21 00:18:28 +0000163 MutableArray<NSMutableString *> *b) {
164 b = (MutableArray<NSMutableString *> *)a;
Devin Coughlin5df6b942017-11-13 17:35:29 +0000165 [a addObject: [[NSString alloc] init]]; // no-warning
166}
167
168void dontWarnOnExplicitCastsAfterInference(MutableArray *a) {
169 withMutArrString(a);
170 withMutArrMutableString((MutableArray<NSMutableString *> *)a); // no-warning
171}
172
173void dontDiagnoseOnExplicitCrossCasts(MutableArray<NSSet *> *a,
174 MutableArray<NSMutableString *> *b) {
175 // Treat an explicit cast to a specialized type as an indication that
176 // Objective-C's type system is not expressive enough to represent a
177 // the invariant the programmer wanted. After an explicit cast, do not
178 // warn about potential generics shenanigans.
179 b = (MutableArray<NSMutableString *> *)a; // no-warning
180 [a addObject: [[NSSet alloc] init]]; // no-warning
181 [b addObject: [[NSMutableString alloc] init]]; //no-warning
Gabor Horvath717b51c2015-08-21 00:18:28 +0000182}
183
184void subtypeOfGeneric(id d, MyMutableStringArray *a,
185 MutableArray<NSString *> *b,
186 MutableArray<NSNumber *> *c) {
187 d = a;
188 b = d;
Gabor Horvath1cbf4352015-09-08 21:04:14 +0000189 c = d; // expected-warning {{Conversion}}
Gabor Horvath717b51c2015-08-21 00:18:28 +0000190}
191
192void genericSubtypeOfGeneric(id d, ExceptionalArray<NSString *> *a,
193 MutableArray<NSString *> *b,
194 MutableArray<NSNumber *> *c) {
195 d = a;
196 [d contains: [[NSString alloc] init]];
Devin Coughlinab139a92016-12-05 16:28:47 +0000197 [d contains: [[NSNumber alloc] init]];
Gabor Horvath717b51c2015-08-21 00:18:28 +0000198 b = d;
Gabor Horvath1cbf4352015-09-08 21:04:14 +0000199 c = d; // expected-warning {{Conversion}}
Devin Coughlinab139a92016-12-05 16:28:47 +0000200
201 [d addObject: [[NSNumber alloc] init]]; // expected-warning {{Conversion from value of type 'NSNumber *' to incompatible type 'NSString *'}}
Gabor Horvath717b51c2015-08-21 00:18:28 +0000202}
203
204void genericSubtypeOfGenericReverse(id d, ExceptionalArray<NSString *> *a,
205 MutableArray<NSString *> *b,
206 MutableArray<NSNumber *> *c) {
207 a = d;
208 [d contains: [[NSString alloc] init]];
Devin Coughlinab139a92016-12-05 16:28:47 +0000209 [d contains: [[NSNumber alloc] init]];
Gabor Horvath717b51c2015-08-21 00:18:28 +0000210 b = d;
Gabor Horvath1cbf4352015-09-08 21:04:14 +0000211 c = d; // expected-warning {{Conversion}}
Devin Coughlinab139a92016-12-05 16:28:47 +0000212
213 [d addObject: [[NSNumber alloc] init]]; // expected-warning {{Conversion from value of type 'NSNumber *' to incompatible type 'NSString *'}}
Gabor Horvath717b51c2015-08-21 00:18:28 +0000214}
215
216void inferenceFromAPI(id a) {
217 // Here the type parameter is invariant. There should be a warning every time
218 // when the type parameter changes during the conversions.
219 withMutArrString(a);
Gabor Horvath1cbf4352015-09-08 21:04:14 +0000220 withMutArrMutableString(a); // expected-warning {{Conversion}}
Gabor Horvath717b51c2015-08-21 00:18:28 +0000221}
222
223void inferenceFromAPI2(id a) {
224 withMutArrMutableString(a);
Gabor Horvath1cbf4352015-09-08 21:04:14 +0000225 withMutArrString(a); // expected-warning {{Conversion}}
Gabor Horvath717b51c2015-08-21 00:18:28 +0000226}
227
228void inferenceFromAPIWithLegacyTypes(LegacyMutableArray *a) {
229 withMutArrMutableString(a);
Gabor Horvath1cbf4352015-09-08 21:04:14 +0000230 withMutArrString(a); // expected-warning {{Conversion}}
Gabor Horvath717b51c2015-08-21 00:18:28 +0000231}
232
233void inferenceFromAPIWithLegacyTypes2(LegacySpecialMutableArray *a) {
234 withMutArrString(a);
Gabor Horvath1cbf4352015-09-08 21:04:14 +0000235 withMutArrMutableString(a); // expected-warning {{Conversion}}
236}
237
238void inferenceFromAPIWithLegacyTypes3(__kindof NSArray<NSString *> *a) {
239 LegacyMutableArray *b = a;
240 withMutArrString(b);
241 withMutArrMutableString(b); // expected-warning {{Conversion}}
Gabor Horvath717b51c2015-08-21 00:18:28 +0000242}
243
244void inferenceFromAPIWithBuggyTypes(BuggyMutableArray<NSMutableString *> *a) {
245 withMutArrString(a);
Gabor Horvath1cbf4352015-09-08 21:04:14 +0000246 withMutArrMutableString(a); // expected-warning {{Conversion}}
Gabor Horvath717b51c2015-08-21 00:18:28 +0000247}
248
249void InferenceFromAPIWithBuggyTypes2(BuggySpecialMutableArray<NSMutableString *> *a) {
250 withMutArrMutableString(a);
Gabor Horvath1cbf4352015-09-08 21:04:14 +0000251 withMutArrString(a); // expected-warning {{Conversion}}
252}
253
254void InferenceFromAPIWithBuggyTypes3(MutableArray<NSMutableString *> *a) {
255 id b = a;
256 withMutArrMutableString((BuggyMutableArray<NSMutableString *> *)b);
257 withMutArrString(b); // expected-warning {{Conversion}}
258}
259
260void InferenceFromAPIWithBuggyTypes4(__kindof NSArray<NSString *> *a) {
261 BuggyMutableArray<NSMutableString *> *b = a;
262 withMutArrString(b);
263 withMutArrMutableString(b); // expected-warning {{Conversion}}
Gabor Horvath717b51c2015-08-21 00:18:28 +0000264}
265
266NSArray<NSString *> *getStrings();
267void enforceDynamicRulesInsteadOfStatic(NSArray<NSNumber *> *a) {
268 NSArray *b = a;
269 // Valid uses of NSArray of NSNumbers.
270 b = getStrings();
271 // Valid uses of NSArray of NSStrings.
272}
273
274void workWithProperties(NSArray<NSNumber *> *a) {
275 NSArray *b = a;
Gabor Horvathdce40c52015-09-18 21:15:37 +0000276 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 +0000277 NSNumber *num = [b getObjAtIndex: 0];
Gabor Horvathdce40c52015-09-18 21:15:37 +0000278 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 +0000279 num = [b firstObject];
Gabor Horvathdce40c52015-09-18 21:15:37 +0000280 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 +0000281 num = b.firstObject;
Gabor Horvathdce40c52015-09-18 21:15:37 +0000282 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 +0000283 num = b[0];
284}
285
286void findMethodDeclInTrackedType(id m, NSArray<NSMutableString *> *a,
287 MutableArray<NSMutableString *> *b) {
288 a = b;
289 if (getUnknown() == 5) {
290 m = a;
Gabor Horvath1cbf4352015-09-08 21:04:14 +0000291 [m addObject: [[NSString alloc] init]]; // expected-warning {{Conversion}}
Gabor Horvath717b51c2015-08-21 00:18:28 +0000292 } else {
293 m = b;
294 [m addObject: [[NSMutableString alloc] init]];
295 }
296}
297
298void findMethodDeclInTrackedType2(__kindof NSArray<NSString *> *a,
299 MutableArray<NSMutableString *> *b) {
300 a = b;
301 if (getUnknown() == 5) {
Gabor Horvath1cbf4352015-09-08 21:04:14 +0000302 [a addObject: [[NSString alloc] init]]; // expected-warning {{Conversion}}
Gabor Horvath717b51c2015-08-21 00:18:28 +0000303 } else {
304 [a addObject: [[NSMutableString alloc] init]];
305 }
306}
307
308void testUnannotatedLiterals() {
309 // ObjCArrayLiterals are not specialized in the AST.
310 NSArray *arr = @[@"A", @"B"];
311 [arr contains: [[NSNumber alloc] init]];
312}
313
314void testAnnotatedLiterals() {
315 NSArray<NSString *> *arr = @[@"A", @"B"];
316 NSArray *arr2 = arr;
Devin Coughlinab139a92016-12-05 16:28:47 +0000317 [arr2 contains: [[NSNumber alloc] init]];
Gabor Horvath717b51c2015-08-21 00:18:28 +0000318}
319
320void nonExistentMethodDoesNotCrash(id a, MutableArray<NSMutableString *> *b) {
321 a = b;
322 [a nonExistentMethod];
323}
324
325void trackedClassVariables() {
326 Class c = [NSArray<NSString *> class];
Gabor Horvath1cbf4352015-09-08 21:04:14 +0000327 NSArray<NSNumber *> *a = [c getEmpty]; // expected-warning {{Conversion}}
328 a = [c getEmpty2]; // expected-warning {{Conversion}}
Gabor Horvath717b51c2015-08-21 00:18:28 +0000329}
330
331void nestedCollections(NSArray<NSArray<NSNumber *> *> *mat, NSArray<NSString *> *row) {
332 id temp = row;
Gabor Horvath1cbf4352015-09-08 21:04:14 +0000333 [mat contains: temp]; // expected-warning {{Conversion}}
Gabor Horvath717b51c2015-08-21 00:18:28 +0000334}
335
336void testMistmatchedTypeCast(MutableArray<NSMutableString *> *a) {
337 MutableArray *b = (MutableArray<NSNumber *> *)a;
338 [b addObject: [[NSNumber alloc] init]];
339 id c = (UnrelatedType *)a;
340 [c addObject: [[NSNumber alloc] init]];
341 [c addObject: [[NSString alloc] init]];
342}
343
Gabor Horvath3ef9ef22015-09-16 22:44:36 +0000344void returnCollectionToIdVariable(NSArray<NSArray<NSString *> *> *arr) {
345 NSArray *erased = arr;
346 id a = [erased firstObject];
347 NSArray<NSNumber *> *res = a; // expected-warning {{Conversion}}
348}
349
350void eraseSpecialization(NSArray<NSArray<NSString *> *> *arr) {
351 NSArray *erased = arr;
352 NSArray* a = [erased firstObject];
353 NSArray<NSNumber *> *res = a; // expected-warning {{Conversion}}
354}
355
356void returnToUnrelatedType(NSArray<NSArray<NSString *> *> *arr) {
357 NSArray *erased = arr;
Gabor Horvathdce40c52015-09-18 21:15:37 +0000358 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 +0000359 (void)a;
360}
361
362void returnToIdVariable(NSArray<NSString *> *arr) {
363 NSArray *erased = arr;
364 id a = [erased firstObject];
Gabor Horvathdce40c52015-09-18 21:15:37 +0000365 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 +0000366}
367
Devin Coughlinc1bfafd2016-05-11 20:28:41 +0000368@interface UnrelatedTypeGeneric<T> : NSObject<NSCopying>
369- (void)takesType:(T)v;
370@end
371
372void testGetMostInformativeDerivedForId(NSArray<NSString *> *a,
373 UnrelatedTypeGeneric<NSString *> *b) {
374 id idB = b;
375 a = idB; // expected-warning {{Conversion from value of type 'UnrelatedTypeGeneric<NSString *> *' to incompatible type 'NSArray<NSString *> *'}}
376
377 // rdar://problem/26086914 crash here caused by symbolic type being unrelated
378 // to compile-time source type of cast.
379 id x = a; // Compile-time type is NSArray<>, Symbolic type is UnrelatedTypeGeneric<>.
380 [x takesType:[[NSNumber alloc] init]]; // expected-warning {{Conversion from value of type 'NSNumber *' to incompatible type 'NSString *'}}
381}
382
Devin Coughlinab139a92016-12-05 16:28:47 +0000383void testArgumentAfterUpcastToRootWithCovariantTypeParameter(NSArray<NSString *> *allStrings, NSNumber *number) {
384 NSArray<NSObject *> *allObjects = allStrings; // no-warning
385 NSArray<NSObject *> *moreObjects = [allObjects arrayByAddingObject:number]; // no-warning
386}
387
388void testArgumentAfterUpcastWithCovariantTypeParameter(NSArray<NSMutableString *> *allMutableStrings, NSNumber *number) {
389 NSArray<NSString *> *allStrings = allMutableStrings; // no-warning
390 id numberAsId = number;
391 NSArray<NSString *> *moreStrings = [allStrings arrayByAddingObject:numberAsId]; // Sema: expected-warning {{Object has a dynamic type 'NSNumber *' which is incompatible with static type 'NSString *'}}
392}
393
394void testArgumentAfterCastToUnspecializedWithCovariantTypeParameter(NSArray<NSMutableString *> *allMutableStrings, NSNumber *number) {
395 NSArray *allStrings = allMutableStrings; // no-warning
396 id numberAsId = number;
397
398 NSArray *moreStringsUnspecialized = [allStrings arrayByAddingObject:numberAsId]; // no-warning
399
400 // Ideally the analyzer would warn here.
401 NSArray<NSString *> *moreStringsSpecialized = [allStrings arrayByAddingObject:numberAsId];
402}
403
404void testCallToMethodWithCovariantParameterOnInstanceOfSubclassWithInvariantParameter(NSMutableArray<NSMutableString *> *mutableArrayOfMutableStrings, NSString *someString) {
405 NSArray<NSString *> *arrayOfStrings = mutableArrayOfMutableStrings;
406 [arrayOfStrings containsObject:someString]; // no-warning
407}
408
409// CHECK: <key>diagnostics</key>
410// CHECK-NEXT: <array>
411// CHECK-NEXT: <dict>
412// CHECK-NEXT: <key>path</key>
413// CHECK-NEXT: <array>
Gabor Horvathefec1632015-10-22 11:53:04 +0000414// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +0000415// CHECK-NEXT: <key>kind</key><string>event</string>
416// CHECK-NEXT: <key>location</key>
417// CHECK-NEXT: <dict>
418// CHECK-NEXT: <key>line</key><integer>100</integer>
419// CHECK-NEXT: <key>col</key><integer>7</integer>
420// CHECK-NEXT: <key>file</key><integer>0</integer>
421// CHECK-NEXT: </dict>
422// CHECK-NEXT: <key>ranges</key>
423// CHECK-NEXT: <array>
424// CHECK-NEXT: <array>
425// CHECK-NEXT: <dict>
426// CHECK-NEXT: <key>line</key><integer>100</integer>
427// CHECK-NEXT: <key>col</key><integer>7</integer>
428// CHECK-NEXT: <key>file</key><integer>0</integer>
429// CHECK-NEXT: </dict>
430// CHECK-NEXT: <dict>
431// CHECK-NEXT: <key>line</key><integer>100</integer>
432// CHECK-NEXT: <key>col</key><integer>7</integer>
433// CHECK-NEXT: <key>file</key><integer>0</integer>
434// CHECK-NEXT: </dict>
435// CHECK-NEXT: </array>
436// CHECK-NEXT: </array>
437// CHECK-NEXT: <key>depth</key><integer>0</integer>
438// CHECK-NEXT: <key>extended_message</key>
439// 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>
440// CHECK-NEXT: <key>message</key>
441// 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 +0000442// CHECK-NEXT: </dict>
Devin Coughlinab139a92016-12-05 16:28:47 +0000443// CHECK-NEXT: <dict>
444// CHECK-NEXT: <key>kind</key><string>control</string>
445// CHECK-NEXT: <key>edges</key>
Gabor Horvathefec1632015-10-22 11:53:04 +0000446// CHECK-NEXT: <array>
447// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +0000448// CHECK-NEXT: <key>start</key>
449// CHECK-NEXT: <array>
450// CHECK-NEXT: <dict>
451// CHECK-NEXT: <key>line</key><integer>100</integer>
452// CHECK-NEXT: <key>col</key><integer>3</integer>
453// CHECK-NEXT: <key>file</key><integer>0</integer>
454// CHECK-NEXT: </dict>
455// CHECK-NEXT: <dict>
456// CHECK-NEXT: <key>line</key><integer>100</integer>
457// CHECK-NEXT: <key>col</key><integer>3</integer>
458// CHECK-NEXT: <key>file</key><integer>0</integer>
459// CHECK-NEXT: </dict>
460// CHECK-NEXT: </array>
461// CHECK-NEXT: <key>end</key>
462// CHECK-NEXT: <array>
463// CHECK-NEXT: <dict>
464// CHECK-NEXT: <key>line</key><integer>101</integer>
465// CHECK-NEXT: <key>col</key><integer>3</integer>
466// CHECK-NEXT: <key>file</key><integer>0</integer>
467// CHECK-NEXT: </dict>
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: </array>
Gabor Horvathefec1632015-10-22 11:53:04 +0000474// CHECK-NEXT: </dict>
Devin Coughlinab139a92016-12-05 16:28:47 +0000475// CHECK-NEXT: </array>
476// CHECK-NEXT: </dict>
477// CHECK-NEXT: <dict>
478// CHECK-NEXT: <key>kind</key><string>control</string>
479// CHECK-NEXT: <key>edges</key>
480// CHECK-NEXT: <array>
Gabor Horvathefec1632015-10-22 11:53:04 +0000481// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +0000482// CHECK-NEXT: <key>start</key>
483// CHECK-NEXT: <array>
484// CHECK-NEXT: <dict>
485// CHECK-NEXT: <key>line</key><integer>101</integer>
486// CHECK-NEXT: <key>col</key><integer>3</integer>
487// CHECK-NEXT: <key>file</key><integer>0</integer>
488// CHECK-NEXT: </dict>
489// CHECK-NEXT: <dict>
490// CHECK-NEXT: <key>line</key><integer>101</integer>
491// CHECK-NEXT: <key>col</key><integer>3</integer>
492// CHECK-NEXT: <key>file</key><integer>0</integer>
493// CHECK-NEXT: </dict>
494// CHECK-NEXT: </array>
495// CHECK-NEXT: <key>end</key>
496// CHECK-NEXT: <array>
497// CHECK-NEXT: <dict>
498// CHECK-NEXT: <key>line</key><integer>101</integer>
499// CHECK-NEXT: <key>col</key><integer>7</integer>
500// CHECK-NEXT: <key>file</key><integer>0</integer>
501// CHECK-NEXT: </dict>
502// CHECK-NEXT: <dict>
503// CHECK-NEXT: <key>line</key><integer>101</integer>
504// CHECK-NEXT: <key>col</key><integer>7</integer>
505// CHECK-NEXT: <key>file</key><integer>0</integer>
506// CHECK-NEXT: </dict>
507// CHECK-NEXT: </array>
Gabor Horvathefec1632015-10-22 11:53:04 +0000508// CHECK-NEXT: </dict>
509// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +0000510// CHECK-NEXT: </dict>
511// CHECK-NEXT: <dict>
512// CHECK-NEXT: <key>kind</key><string>event</string>
513// CHECK-NEXT: <key>location</key>
514// CHECK-NEXT: <dict>
515// CHECK-NEXT: <key>line</key><integer>101</integer>
516// CHECK-NEXT: <key>col</key><integer>7</integer>
517// CHECK-NEXT: <key>file</key><integer>0</integer>
518// CHECK-NEXT: </dict>
519// CHECK-NEXT: <key>ranges</key>
Gabor Horvathefec1632015-10-22 11:53:04 +0000520// CHECK-NEXT: <array>
Devin Coughlinab139a92016-12-05 16:28:47 +0000521// CHECK-NEXT: <array>
522// CHECK-NEXT: <dict>
523// CHECK-NEXT: <key>line</key><integer>101</integer>
524// CHECK-NEXT: <key>col</key><integer>7</integer>
525// CHECK-NEXT: <key>file</key><integer>0</integer>
526// CHECK-NEXT: </dict>
527// CHECK-NEXT: <dict>
528// CHECK-NEXT: <key>line</key><integer>101</integer>
529// CHECK-NEXT: <key>col</key><integer>7</integer>
530// CHECK-NEXT: <key>file</key><integer>0</integer>
531// CHECK-NEXT: </dict>
532// CHECK-NEXT: </array>
Gabor Horvathefec1632015-10-22 11:53:04 +0000533// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +0000534// CHECK-NEXT: <key>depth</key><integer>0</integer>
535// CHECK-NEXT: <key>extended_message</key>
536// CHECK-NEXT: <string>Conversion from value of type &apos;NSMutableArray&lt;NSString *&gt; *&apos; to incompatible type &apos;NSArray&lt;NSNumber *&gt; *&apos;</string>
537// CHECK-NEXT: <key>message</key>
538// CHECK-NEXT: <string>Conversion from value of type &apos;NSMutableArray&lt;NSString *&gt; *&apos; to incompatible type &apos;NSArray&lt;NSNumber *&gt; *&apos;</string>
539// CHECK-NEXT: </dict>
540// CHECK-NEXT: </array>
541// 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>
542// CHECK-NEXT: <key>category</key><string>Core Foundation/Objective-C</string>
543// CHECK-NEXT: <key>type</key><string>Generics</string>
544// CHECK-NEXT: <key>check_name</key><string>core.DynamicTypePropagation</string>
545// CHECK-NEXT: <!-- This hash is experimental and going to change! -->
546// CHECK-NEXT: <key>issue_hash_content_of_line_in_context</key><string>33d4584e2bf66b029ab9d152cc9cd8f7</string>
547// CHECK-NEXT: <key>issue_context_kind</key><string>function</string>
548// CHECK-NEXT: <key>issue_context</key><string>incompatibleTypesErased</string>
549// CHECK-NEXT: <key>issue_hash_function_offset</key><string>2</string>
550// CHECK-NEXT: <key>location</key>
551// CHECK-NEXT: <dict>
552// CHECK-NEXT: <key>line</key><integer>101</integer>
553// CHECK-NEXT: <key>col</key><integer>7</integer>
554// CHECK-NEXT: <key>file</key><integer>0</integer>
555// CHECK-NEXT: </dict>
556// CHECK-NEXT: </dict>
557// CHECK-NEXT: <dict>
558// CHECK-NEXT: <key>path</key>
559// CHECK-NEXT: <array>
560// CHECK-NEXT: <dict>
561// CHECK-NEXT: <key>kind</key><string>event</string>
562// CHECK-NEXT: <key>location</key>
563// CHECK-NEXT: <dict>
564// CHECK-NEXT: <key>line</key><integer>100</integer>
565// CHECK-NEXT: <key>col</key><integer>7</integer>
566// CHECK-NEXT: <key>file</key><integer>0</integer>
567// CHECK-NEXT: </dict>
568// CHECK-NEXT: <key>ranges</key>
Gabor Horvathefec1632015-10-22 11:53:04 +0000569// CHECK-NEXT: <array>
Devin Coughlinab139a92016-12-05 16:28:47 +0000570// CHECK-NEXT: <array>
571// CHECK-NEXT: <dict>
572// CHECK-NEXT: <key>line</key><integer>100</integer>
573// CHECK-NEXT: <key>col</key><integer>7</integer>
574// CHECK-NEXT: <key>file</key><integer>0</integer>
575// CHECK-NEXT: </dict>
576// CHECK-NEXT: <dict>
577// CHECK-NEXT: <key>line</key><integer>100</integer>
578// CHECK-NEXT: <key>col</key><integer>7</integer>
579// CHECK-NEXT: <key>file</key><integer>0</integer>
580// CHECK-NEXT: </dict>
581// CHECK-NEXT: </array>
Gabor Horvathefec1632015-10-22 11:53:04 +0000582// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +0000583// CHECK-NEXT: <key>depth</key><integer>0</integer>
584// CHECK-NEXT: <key>extended_message</key>
585// 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>
586// CHECK-NEXT: <key>message</key>
587// 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>
588// CHECK-NEXT: </dict>
Gabor Horvathefec1632015-10-22 11:53:04 +0000589// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +0000590// CHECK-NEXT: <key>kind</key><string>control</string>
591// CHECK-NEXT: <key>edges</key>
Gabor Horvathefec1632015-10-22 11:53:04 +0000592// CHECK-NEXT: <array>
593// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +0000594// CHECK-NEXT: <key>start</key>
595// CHECK-NEXT: <array>
596// CHECK-NEXT: <dict>
597// CHECK-NEXT: <key>line</key><integer>100</integer>
598// CHECK-NEXT: <key>col</key><integer>3</integer>
599// CHECK-NEXT: <key>file</key><integer>0</integer>
600// CHECK-NEXT: </dict>
601// CHECK-NEXT: <dict>
602// CHECK-NEXT: <key>line</key><integer>100</integer>
603// CHECK-NEXT: <key>col</key><integer>3</integer>
604// CHECK-NEXT: <key>file</key><integer>0</integer>
605// CHECK-NEXT: </dict>
606// CHECK-NEXT: </array>
607// CHECK-NEXT: <key>end</key>
608// CHECK-NEXT: <array>
609// CHECK-NEXT: <dict>
610// CHECK-NEXT: <key>line</key><integer>104</integer>
611// CHECK-NEXT: <key>col</key><integer>3</integer>
612// CHECK-NEXT: <key>file</key><integer>0</integer>
613// CHECK-NEXT: </dict>
614// CHECK-NEXT: <dict>
615// CHECK-NEXT: <key>line</key><integer>104</integer>
616// CHECK-NEXT: <key>col</key><integer>9</integer>
617// CHECK-NEXT: <key>file</key><integer>0</integer>
618// CHECK-NEXT: </dict>
619// CHECK-NEXT: </array>
Gabor Horvathefec1632015-10-22 11:53:04 +0000620// CHECK-NEXT: </dict>
621// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +0000622// CHECK-NEXT: </dict>
Gabor Horvathefec1632015-10-22 11:53:04 +0000623// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +0000624// CHECK-NEXT: <key>kind</key><string>control</string>
625// CHECK-NEXT: <key>edges</key>
Gabor Horvathefec1632015-10-22 11:53:04 +0000626// CHECK-NEXT: <array>
627// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +0000628// CHECK-NEXT: <key>start</key>
629// CHECK-NEXT: <array>
630// CHECK-NEXT: <dict>
631// CHECK-NEXT: <key>line</key><integer>104</integer>
632// CHECK-NEXT: <key>col</key><integer>3</integer>
633// CHECK-NEXT: <key>file</key><integer>0</integer>
634// CHECK-NEXT: </dict>
635// CHECK-NEXT: <dict>
636// CHECK-NEXT: <key>line</key><integer>104</integer>
637// CHECK-NEXT: <key>col</key><integer>9</integer>
638// CHECK-NEXT: <key>file</key><integer>0</integer>
639// CHECK-NEXT: </dict>
640// CHECK-NEXT: </array>
641// CHECK-NEXT: <key>end</key>
642// CHECK-NEXT: <array>
643// CHECK-NEXT: <dict>
644// CHECK-NEXT: <key>line</key><integer>104</integer>
645// CHECK-NEXT: <key>col</key><integer>11</integer>
646// CHECK-NEXT: <key>file</key><integer>0</integer>
647// CHECK-NEXT: </dict>
648// CHECK-NEXT: <dict>
649// CHECK-NEXT: <key>line</key><integer>104</integer>
650// CHECK-NEXT: <key>col</key><integer>11</integer>
651// CHECK-NEXT: <key>file</key><integer>0</integer>
652// CHECK-NEXT: </dict>
653// CHECK-NEXT: </array>
Gabor Horvathefec1632015-10-22 11:53:04 +0000654// CHECK-NEXT: </dict>
655// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +0000656// CHECK-NEXT: </dict>
657// CHECK-NEXT: <dict>
658// CHECK-NEXT: <key>kind</key><string>event</string>
659// CHECK-NEXT: <key>location</key>
660// CHECK-NEXT: <dict>
661// CHECK-NEXT: <key>line</key><integer>104</integer>
662// CHECK-NEXT: <key>col</key><integer>11</integer>
663// CHECK-NEXT: <key>file</key><integer>0</integer>
664// CHECK-NEXT: </dict>
665// CHECK-NEXT: <key>ranges</key>
Gabor Horvathefec1632015-10-22 11:53:04 +0000666// CHECK-NEXT: <array>
Devin Coughlinab139a92016-12-05 16:28:47 +0000667// CHECK-NEXT: <array>
668// CHECK-NEXT: <dict>
669// CHECK-NEXT: <key>line</key><integer>104</integer>
670// CHECK-NEXT: <key>col</key><integer>11</integer>
671// CHECK-NEXT: <key>file</key><integer>0</integer>
672// CHECK-NEXT: </dict>
673// CHECK-NEXT: <dict>
674// CHECK-NEXT: <key>line</key><integer>104</integer>
675// CHECK-NEXT: <key>col</key><integer>11</integer>
676// CHECK-NEXT: <key>file</key><integer>0</integer>
677// CHECK-NEXT: </dict>
678// CHECK-NEXT: </array>
Gabor Horvathefec1632015-10-22 11:53:04 +0000679// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +0000680// CHECK-NEXT: <key>depth</key><integer>0</integer>
681// CHECK-NEXT: <key>extended_message</key>
682// CHECK-NEXT: <string>Conversion from value of type &apos;NSMutableArray&lt;NSString *&gt; *&apos; to incompatible type &apos;NSArray&lt;NSNumber *&gt; *&apos;</string>
683// CHECK-NEXT: <key>message</key>
684// CHECK-NEXT: <string>Conversion from value of type &apos;NSMutableArray&lt;NSString *&gt; *&apos; to incompatible type &apos;NSArray&lt;NSNumber *&gt; *&apos;</string>
685// CHECK-NEXT: </dict>
686// CHECK-NEXT: </array>
687// 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>
688// CHECK-NEXT: <key>category</key><string>Core Foundation/Objective-C</string>
689// CHECK-NEXT: <key>type</key><string>Generics</string>
690// CHECK-NEXT: <key>check_name</key><string>core.DynamicTypePropagation</string>
691// CHECK-NEXT: <!-- This hash is experimental and going to change! -->
692// CHECK-NEXT: <key>issue_hash_content_of_line_in_context</key><string>6edc910aaa9dc1f2d823abc8cb75360f</string>
693// CHECK-NEXT: <key>issue_context_kind</key><string>function</string>
694// CHECK-NEXT: <key>issue_context</key><string>incompatibleTypesErased</string>
695// CHECK-NEXT: <key>issue_hash_function_offset</key><string>5</string>
696// CHECK-NEXT: <key>location</key>
697// CHECK-NEXT: <dict>
698// CHECK-NEXT: <key>line</key><integer>104</integer>
699// CHECK-NEXT: <key>col</key><integer>11</integer>
700// CHECK-NEXT: <key>file</key><integer>0</integer>
701// CHECK-NEXT: </dict>
702// CHECK-NEXT: </dict>
703// CHECK-NEXT: <dict>
704// CHECK-NEXT: <key>path</key>
705// CHECK-NEXT: <array>
Gabor Horvathefec1632015-10-22 11:53:04 +0000706// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +0000707// CHECK-NEXT: <key>kind</key><string>event</string>
708// CHECK-NEXT: <key>location</key>
709// CHECK-NEXT: <dict>
710// CHECK-NEXT: <key>line</key><integer>100</integer>
711// CHECK-NEXT: <key>col</key><integer>7</integer>
712// CHECK-NEXT: <key>file</key><integer>0</integer>
713// CHECK-NEXT: </dict>
714// CHECK-NEXT: <key>ranges</key>
715// CHECK-NEXT: <array>
716// CHECK-NEXT: <array>
717// CHECK-NEXT: <dict>
718// CHECK-NEXT: <key>line</key><integer>100</integer>
719// CHECK-NEXT: <key>col</key><integer>7</integer>
720// CHECK-NEXT: <key>file</key><integer>0</integer>
721// CHECK-NEXT: </dict>
722// CHECK-NEXT: <dict>
723// CHECK-NEXT: <key>line</key><integer>100</integer>
724// CHECK-NEXT: <key>col</key><integer>7</integer>
725// CHECK-NEXT: <key>file</key><integer>0</integer>
726// CHECK-NEXT: </dict>
727// CHECK-NEXT: </array>
728// CHECK-NEXT: </array>
729// CHECK-NEXT: <key>depth</key><integer>0</integer>
730// CHECK-NEXT: <key>extended_message</key>
731// 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>
732// CHECK-NEXT: <key>message</key>
733// 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 +0000734// CHECK-NEXT: </dict>
Devin Coughlinab139a92016-12-05 16:28:47 +0000735// CHECK-NEXT: <dict>
736// CHECK-NEXT: <key>kind</key><string>control</string>
737// CHECK-NEXT: <key>edges</key>
Gabor Horvathefec1632015-10-22 11:53:04 +0000738// CHECK-NEXT: <array>
739// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +0000740// CHECK-NEXT: <key>start</key>
741// CHECK-NEXT: <array>
742// CHECK-NEXT: <dict>
743// CHECK-NEXT: <key>line</key><integer>100</integer>
744// CHECK-NEXT: <key>col</key><integer>3</integer>
745// CHECK-NEXT: <key>file</key><integer>0</integer>
746// CHECK-NEXT: </dict>
747// CHECK-NEXT: <dict>
748// CHECK-NEXT: <key>line</key><integer>100</integer>
749// CHECK-NEXT: <key>col</key><integer>3</integer>
750// CHECK-NEXT: <key>file</key><integer>0</integer>
751// CHECK-NEXT: </dict>
752// CHECK-NEXT: </array>
753// CHECK-NEXT: <key>end</key>
754// CHECK-NEXT: <array>
755// CHECK-NEXT: <dict>
756// CHECK-NEXT: <key>line</key><integer>107</integer>
757// CHECK-NEXT: <key>col</key><integer>3</integer>
758// CHECK-NEXT: <key>file</key><integer>0</integer>
759// CHECK-NEXT: </dict>
760// CHECK-NEXT: <dict>
761// CHECK-NEXT: <key>line</key><integer>107</integer>
762// CHECK-NEXT: <key>col</key><integer>3</integer>
763// CHECK-NEXT: <key>file</key><integer>0</integer>
764// CHECK-NEXT: </dict>
765// CHECK-NEXT: </array>
Gabor Horvathefec1632015-10-22 11:53:04 +0000766// CHECK-NEXT: </dict>
767// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +0000768// CHECK-NEXT: </dict>
Gabor Horvathefec1632015-10-22 11:53:04 +0000769// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +0000770// CHECK-NEXT: <key>kind</key><string>event</string>
771// CHECK-NEXT: <key>location</key>
772// CHECK-NEXT: <dict>
773// CHECK-NEXT: <key>line</key><integer>107</integer>
774// CHECK-NEXT: <key>col</key><integer>3</integer>
775// CHECK-NEXT: <key>file</key><integer>0</integer>
776// CHECK-NEXT: </dict>
777// CHECK-NEXT: <key>ranges</key>
778// CHECK-NEXT: <array>
779// CHECK-NEXT: <array>
780// CHECK-NEXT: <dict>
781// CHECK-NEXT: <key>line</key><integer>107</integer>
782// CHECK-NEXT: <key>col</key><integer>17</integer>
783// CHECK-NEXT: <key>file</key><integer>0</integer>
784// CHECK-NEXT: </dict>
785// CHECK-NEXT: <dict>
786// CHECK-NEXT: <key>line</key><integer>107</integer>
787// CHECK-NEXT: <key>col</key><integer>39</integer>
788// CHECK-NEXT: <key>file</key><integer>0</integer>
789// CHECK-NEXT: </dict>
790// CHECK-NEXT: </array>
791// CHECK-NEXT: </array>
792// CHECK-NEXT: <key>depth</key><integer>0</integer>
793// CHECK-NEXT: <key>extended_message</key>
794// CHECK-NEXT: <string>Conversion from value of type &apos;NSNumber *&apos; to incompatible type &apos;NSString *&apos;</string>
795// CHECK-NEXT: <key>message</key>
796// 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 +0000797// CHECK-NEXT: </dict>
Devin Coughlinab139a92016-12-05 16:28:47 +0000798// CHECK-NEXT: </array>
799// CHECK-NEXT: <key>description</key><string>Conversion from value of type &apos;NSNumber *&apos; to incompatible type &apos;NSString *&apos;</string>
800// CHECK-NEXT: <key>category</key><string>Core Foundation/Objective-C</string>
801// CHECK-NEXT: <key>type</key><string>Generics</string>
802// CHECK-NEXT: <key>check_name</key><string>core.DynamicTypePropagation</string>
803// CHECK-NEXT: <!-- This hash is experimental and going to change! -->
804// CHECK-NEXT: <key>issue_hash_content_of_line_in_context</key><string>73c71c858082f5d7a2258f707927da3c</string>
805// CHECK-NEXT: <key>issue_context_kind</key><string>function</string>
806// CHECK-NEXT: <key>issue_context</key><string>incompatibleTypesErased</string>
807// CHECK-NEXT: <key>issue_hash_function_offset</key><string>8</string>
808// CHECK-NEXT: <key>location</key>
809// CHECK-NEXT: <dict>
810// CHECK-NEXT: <key>line</key><integer>107</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: <dict>
816// CHECK-NEXT: <key>path</key>
817// CHECK-NEXT: <array>
818// CHECK-NEXT: <dict>
819// CHECK-NEXT: <key>kind</key><string>control</string>
820// CHECK-NEXT: <key>edges</key>
Gabor Horvathefec1632015-10-22 11:53:04 +0000821// CHECK-NEXT: <array>
822// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +0000823// CHECK-NEXT: <key>start</key>
824// CHECK-NEXT: <array>
825// CHECK-NEXT: <dict>
826// CHECK-NEXT: <key>line</key><integer>111</integer>
827// CHECK-NEXT: <key>col</key><integer>3</integer>
828// CHECK-NEXT: <key>file</key><integer>0</integer>
829// CHECK-NEXT: </dict>
830// CHECK-NEXT: <dict>
831// CHECK-NEXT: <key>line</key><integer>111</integer>
832// CHECK-NEXT: <key>col</key><integer>9</integer>
833// CHECK-NEXT: <key>file</key><integer>0</integer>
834// CHECK-NEXT: </dict>
835// CHECK-NEXT: </array>
836// CHECK-NEXT: <key>end</key>
837// CHECK-NEXT: <array>
838// CHECK-NEXT: <dict>
839// CHECK-NEXT: <key>line</key><integer>111</integer>
840// CHECK-NEXT: <key>col</key><integer>28</integer>
841// CHECK-NEXT: <key>file</key><integer>0</integer>
842// CHECK-NEXT: </dict>
843// CHECK-NEXT: <dict>
844// CHECK-NEXT: <key>line</key><integer>111</integer>
845// CHECK-NEXT: <key>col</key><integer>40</integer>
846// CHECK-NEXT: <key>file</key><integer>0</integer>
847// CHECK-NEXT: </dict>
848// CHECK-NEXT: </array>
Gabor Horvathefec1632015-10-22 11:53:04 +0000849// CHECK-NEXT: </dict>
850// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +0000851// CHECK-NEXT: </dict>
852// CHECK-NEXT: <dict>
853// CHECK-NEXT: <key>kind</key><string>event</string>
854// CHECK-NEXT: <key>location</key>
855// CHECK-NEXT: <dict>
856// CHECK-NEXT: <key>line</key><integer>111</integer>
857// CHECK-NEXT: <key>col</key><integer>28</integer>
858// CHECK-NEXT: <key>file</key><integer>0</integer>
859// CHECK-NEXT: </dict>
860// CHECK-NEXT: <key>ranges</key>
Gabor Horvathefec1632015-10-22 11:53:04 +0000861// CHECK-NEXT: <array>
Devin Coughlinab139a92016-12-05 16:28:47 +0000862// CHECK-NEXT: <array>
863// CHECK-NEXT: <dict>
864// CHECK-NEXT: <key>line</key><integer>111</integer>
865// CHECK-NEXT: <key>col</key><integer>28</integer>
866// CHECK-NEXT: <key>file</key><integer>0</integer>
867// CHECK-NEXT: </dict>
868// CHECK-NEXT: <dict>
869// CHECK-NEXT: <key>line</key><integer>111</integer>
870// CHECK-NEXT: <key>col</key><integer>42</integer>
871// CHECK-NEXT: <key>file</key><integer>0</integer>
872// CHECK-NEXT: </dict>
873// CHECK-NEXT: </array>
Gabor Horvathefec1632015-10-22 11:53:04 +0000874// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +0000875// CHECK-NEXT: <key>depth</key><integer>0</integer>
876// CHECK-NEXT: <key>extended_message</key>
877// CHECK-NEXT: <string>Calling &apos;getTypedStuff&apos;</string>
878// CHECK-NEXT: <key>message</key>
879// CHECK-NEXT: <string>Calling &apos;getTypedStuff&apos;</string>
880// CHECK-NEXT: </dict>
Gabor Horvathefec1632015-10-22 11:53:04 +0000881// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +0000882// CHECK-NEXT: <key>kind</key><string>event</string>
883// CHECK-NEXT: <key>location</key>
884// CHECK-NEXT: <dict>
885// CHECK-NEXT: <key>line</key><integer>86</integer>
886// CHECK-NEXT: <key>col</key><integer>1</integer>
887// CHECK-NEXT: <key>file</key><integer>0</integer>
888// CHECK-NEXT: </dict>
889// CHECK-NEXT: <key>depth</key><integer>1</integer>
890// CHECK-NEXT: <key>extended_message</key>
891// CHECK-NEXT: <string>Entered call from &apos;crossProceduralErasedTypes&apos;</string>
892// CHECK-NEXT: <key>message</key>
893// CHECK-NEXT: <string>Entered call from &apos;crossProceduralErasedTypes&apos;</string>
Gabor Horvathefec1632015-10-22 11:53:04 +0000894// CHECK-NEXT: </dict>
Devin Coughlinab139a92016-12-05 16:28:47 +0000895// CHECK-NEXT: <dict>
896// CHECK-NEXT: <key>kind</key><string>control</string>
897// CHECK-NEXT: <key>edges</key>
Gabor Horvathefec1632015-10-22 11:53:04 +0000898// CHECK-NEXT: <array>
899// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +0000900// CHECK-NEXT: <key>start</key>
901// CHECK-NEXT: <array>
902// CHECK-NEXT: <dict>
903// CHECK-NEXT: <key>line</key><integer>86</integer>
904// CHECK-NEXT: <key>col</key><integer>1</integer>
905// CHECK-NEXT: <key>file</key><integer>0</integer>
906// CHECK-NEXT: </dict>
907// CHECK-NEXT: <dict>
908// CHECK-NEXT: <key>line</key><integer>86</integer>
909// CHECK-NEXT: <key>col</key><integer>7</integer>
910// CHECK-NEXT: <key>file</key><integer>0</integer>
911// CHECK-NEXT: </dict>
912// CHECK-NEXT: </array>
913// CHECK-NEXT: <key>end</key>
914// CHECK-NEXT: <array>
915// CHECK-NEXT: <dict>
916// CHECK-NEXT: <key>line</key><integer>87</integer>
917// CHECK-NEXT: <key>col</key><integer>3</integer>
918// CHECK-NEXT: <key>file</key><integer>0</integer>
919// CHECK-NEXT: </dict>
920// CHECK-NEXT: <dict>
921// CHECK-NEXT: <key>line</key><integer>87</integer>
922// CHECK-NEXT: <key>col</key><integer>9</integer>
923// CHECK-NEXT: <key>file</key><integer>0</integer>
924// CHECK-NEXT: </dict>
925// CHECK-NEXT: </array>
Gabor Horvathefec1632015-10-22 11:53:04 +0000926// CHECK-NEXT: </dict>
927// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +0000928// CHECK-NEXT: </dict>
929// CHECK-NEXT: <dict>
930// CHECK-NEXT: <key>kind</key><string>event</string>
931// CHECK-NEXT: <key>location</key>
932// CHECK-NEXT: <dict>
933// CHECK-NEXT: <key>line</key><integer>87</integer>
934// CHECK-NEXT: <key>col</key><integer>28</integer>
935// CHECK-NEXT: <key>file</key><integer>0</integer>
936// CHECK-NEXT: </dict>
937// CHECK-NEXT: <key>ranges</key>
Gabor Horvathefec1632015-10-22 11:53:04 +0000938// CHECK-NEXT: <array>
Devin Coughlinab139a92016-12-05 16:28:47 +0000939// CHECK-NEXT: <array>
940// CHECK-NEXT: <dict>
941// CHECK-NEXT: <key>line</key><integer>87</integer>
942// CHECK-NEXT: <key>col</key><integer>28</integer>
943// CHECK-NEXT: <key>file</key><integer>0</integer>
944// CHECK-NEXT: </dict>
945// CHECK-NEXT: <dict>
946// CHECK-NEXT: <key>line</key><integer>87</integer>
947// CHECK-NEXT: <key>col</key><integer>37</integer>
948// CHECK-NEXT: <key>file</key><integer>0</integer>
949// CHECK-NEXT: </dict>
950// CHECK-NEXT: </array>
Gabor Horvathefec1632015-10-22 11:53:04 +0000951// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +0000952// CHECK-NEXT: <key>depth</key><integer>1</integer>
953// CHECK-NEXT: <key>extended_message</key>
954// 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>
955// CHECK-NEXT: <key>message</key>
956// 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>
957// CHECK-NEXT: </dict>
Gabor Horvathefec1632015-10-22 11:53:04 +0000958// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +0000959// CHECK-NEXT: <key>kind</key><string>control</string>
960// CHECK-NEXT: <key>edges</key>
Gabor Horvathefec1632015-10-22 11:53:04 +0000961// CHECK-NEXT: <array>
962// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +0000963// CHECK-NEXT: <key>start</key>
964// CHECK-NEXT: <array>
965// CHECK-NEXT: <dict>
966// CHECK-NEXT: <key>line</key><integer>87</integer>
967// CHECK-NEXT: <key>col</key><integer>3</integer>
968// CHECK-NEXT: <key>file</key><integer>0</integer>
969// CHECK-NEXT: </dict>
970// CHECK-NEXT: <dict>
971// CHECK-NEXT: <key>line</key><integer>87</integer>
972// CHECK-NEXT: <key>col</key><integer>9</integer>
973// CHECK-NEXT: <key>file</key><integer>0</integer>
974// CHECK-NEXT: </dict>
975// CHECK-NEXT: </array>
976// CHECK-NEXT: <key>end</key>
977// CHECK-NEXT: <array>
978// CHECK-NEXT: <dict>
979// CHECK-NEXT: <key>line</key><integer>88</integer>
980// CHECK-NEXT: <key>col</key><integer>3</integer>
981// CHECK-NEXT: <key>file</key><integer>0</integer>
982// CHECK-NEXT: </dict>
983// CHECK-NEXT: <dict>
984// CHECK-NEXT: <key>line</key><integer>88</integer>
985// CHECK-NEXT: <key>col</key><integer>8</integer>
986// CHECK-NEXT: <key>file</key><integer>0</integer>
987// CHECK-NEXT: </dict>
988// CHECK-NEXT: </array>
Gabor Horvathefec1632015-10-22 11:53:04 +0000989// CHECK-NEXT: </dict>
990// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +0000991// CHECK-NEXT: </dict>
Gabor Horvathefec1632015-10-22 11:53:04 +0000992// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +0000993// CHECK-NEXT: <key>kind</key><string>event</string>
994// CHECK-NEXT: <key>location</key>
995// CHECK-NEXT: <dict>
996// CHECK-NEXT: <key>line</key><integer>111</integer>
997// CHECK-NEXT: <key>col</key><integer>28</integer>
998// CHECK-NEXT: <key>file</key><integer>0</integer>
999// CHECK-NEXT: </dict>
1000// CHECK-NEXT: <key>ranges</key>
1001// CHECK-NEXT: <array>
1002// CHECK-NEXT: <array>
1003// CHECK-NEXT: <dict>
1004// CHECK-NEXT: <key>line</key><integer>111</integer>
1005// CHECK-NEXT: <key>col</key><integer>28</integer>
1006// CHECK-NEXT: <key>file</key><integer>0</integer>
1007// CHECK-NEXT: </dict>
1008// CHECK-NEXT: <dict>
1009// CHECK-NEXT: <key>line</key><integer>111</integer>
1010// CHECK-NEXT: <key>col</key><integer>42</integer>
1011// CHECK-NEXT: <key>file</key><integer>0</integer>
1012// CHECK-NEXT: </dict>
1013// CHECK-NEXT: </array>
1014// CHECK-NEXT: </array>
1015// CHECK-NEXT: <key>depth</key><integer>0</integer>
1016// CHECK-NEXT: <key>extended_message</key>
1017// CHECK-NEXT: <string>Returning from &apos;getTypedStuff&apos;</string>
1018// CHECK-NEXT: <key>message</key>
1019// CHECK-NEXT: <string>Returning from &apos;getTypedStuff&apos;</string>
Gabor Horvathefec1632015-10-22 11:53:04 +00001020// CHECK-NEXT: </dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00001021// CHECK-NEXT: <dict>
1022// CHECK-NEXT: <key>kind</key><string>event</string>
1023// CHECK-NEXT: <key>location</key>
1024// CHECK-NEXT: <dict>
1025// CHECK-NEXT: <key>line</key><integer>111</integer>
1026// CHECK-NEXT: <key>col</key><integer>28</integer>
1027// CHECK-NEXT: <key>file</key><integer>0</integer>
1028// CHECK-NEXT: </dict>
1029// CHECK-NEXT: <key>ranges</key>
Gabor Horvathefec1632015-10-22 11:53:04 +00001030// CHECK-NEXT: <array>
Devin Coughlinab139a92016-12-05 16:28:47 +00001031// CHECK-NEXT: <array>
1032// CHECK-NEXT: <dict>
1033// CHECK-NEXT: <key>line</key><integer>111</integer>
1034// CHECK-NEXT: <key>col</key><integer>28</integer>
1035// CHECK-NEXT: <key>file</key><integer>0</integer>
1036// CHECK-NEXT: </dict>
1037// CHECK-NEXT: <dict>
1038// CHECK-NEXT: <key>line</key><integer>111</integer>
1039// CHECK-NEXT: <key>col</key><integer>42</integer>
1040// CHECK-NEXT: <key>file</key><integer>0</integer>
1041// CHECK-NEXT: </dict>
1042// CHECK-NEXT: </array>
Gabor Horvathefec1632015-10-22 11:53:04 +00001043// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +00001044// CHECK-NEXT: <key>depth</key><integer>0</integer>
1045// CHECK-NEXT: <key>extended_message</key>
1046// CHECK-NEXT: <string>Conversion from value of type &apos;NSArray&lt;NSNumber *&gt; *&apos; to incompatible type &apos;NSArray&lt;NSString *&gt; *&apos;</string>
1047// CHECK-NEXT: <key>message</key>
1048// CHECK-NEXT: <string>Conversion from value of type &apos;NSArray&lt;NSNumber *&gt; *&apos; to incompatible type &apos;NSArray&lt;NSString *&gt; *&apos;</string>
1049// CHECK-NEXT: </dict>
1050// CHECK-NEXT: </array>
1051// 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>
1052// CHECK-NEXT: <key>category</key><string>Core Foundation/Objective-C</string>
1053// CHECK-NEXT: <key>type</key><string>Generics</string>
1054// CHECK-NEXT: <key>check_name</key><string>core.DynamicTypePropagation</string>
1055// CHECK-NEXT: <!-- This hash is experimental and going to change! -->
1056// CHECK-NEXT: <key>issue_hash_content_of_line_in_context</key><string>82c378fdcfcc5c0318d2f3ca46420ec1</string>
1057// CHECK-NEXT: <key>issue_context_kind</key><string>function</string>
1058// CHECK-NEXT: <key>issue_context</key><string>crossProceduralErasedTypes</string>
1059// CHECK-NEXT: <key>issue_hash_function_offset</key><string>1</string>
1060// CHECK-NEXT: <key>location</key>
1061// CHECK-NEXT: <dict>
1062// CHECK-NEXT: <key>line</key><integer>111</integer>
1063// CHECK-NEXT: <key>col</key><integer>28</integer>
1064// CHECK-NEXT: <key>file</key><integer>0</integer>
1065// CHECK-NEXT: </dict>
1066// CHECK-NEXT: </dict>
1067// CHECK-NEXT: <dict>
1068// CHECK-NEXT: <key>path</key>
1069// CHECK-NEXT: <array>
Gabor Horvathefec1632015-10-22 11:53:04 +00001070// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00001071// CHECK-NEXT: <key>kind</key><string>event</string>
1072// CHECK-NEXT: <key>location</key>
1073// CHECK-NEXT: <dict>
1074// CHECK-NEXT: <key>line</key><integer>116</integer>
1075// CHECK-NEXT: <key>col</key><integer>7</integer>
1076// CHECK-NEXT: <key>file</key><integer>0</integer>
1077// CHECK-NEXT: </dict>
1078// CHECK-NEXT: <key>ranges</key>
Gabor Horvathefec1632015-10-22 11:53:04 +00001079// CHECK-NEXT: <array>
Devin Coughlinab139a92016-12-05 16:28:47 +00001080// CHECK-NEXT: <array>
1081// CHECK-NEXT: <dict>
1082// CHECK-NEXT: <key>line</key><integer>116</integer>
1083// CHECK-NEXT: <key>col</key><integer>7</integer>
1084// CHECK-NEXT: <key>file</key><integer>0</integer>
1085// CHECK-NEXT: </dict>
1086// CHECK-NEXT: <dict>
1087// CHECK-NEXT: <key>line</key><integer>116</integer>
1088// CHECK-NEXT: <key>col</key><integer>7</integer>
1089// CHECK-NEXT: <key>file</key><integer>0</integer>
1090// CHECK-NEXT: </dict>
1091// CHECK-NEXT: </array>
Gabor Horvathefec1632015-10-22 11:53:04 +00001092// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +00001093// CHECK-NEXT: <key>depth</key><integer>0</integer>
1094// CHECK-NEXT: <key>extended_message</key>
1095// 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>
1096// CHECK-NEXT: <key>message</key>
1097// 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>
1098// CHECK-NEXT: </dict>
Gabor Horvathefec1632015-10-22 11:53:04 +00001099// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00001100// CHECK-NEXT: <key>kind</key><string>control</string>
1101// CHECK-NEXT: <key>edges</key>
Gabor Horvathefec1632015-10-22 11:53:04 +00001102// CHECK-NEXT: <array>
1103// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00001104// CHECK-NEXT: <key>start</key>
1105// CHECK-NEXT: <array>
1106// CHECK-NEXT: <dict>
1107// CHECK-NEXT: <key>line</key><integer>116</integer>
1108// CHECK-NEXT: <key>col</key><integer>3</integer>
1109// CHECK-NEXT: <key>file</key><integer>0</integer>
1110// CHECK-NEXT: </dict>
1111// CHECK-NEXT: <dict>
1112// CHECK-NEXT: <key>line</key><integer>116</integer>
1113// CHECK-NEXT: <key>col</key><integer>3</integer>
1114// CHECK-NEXT: <key>file</key><integer>0</integer>
1115// CHECK-NEXT: </dict>
1116// CHECK-NEXT: </array>
1117// CHECK-NEXT: <key>end</key>
1118// CHECK-NEXT: <array>
1119// CHECK-NEXT: <dict>
1120// CHECK-NEXT: <key>line</key><integer>119</integer>
1121// CHECK-NEXT: <key>col</key><integer>3</integer>
1122// CHECK-NEXT: <key>file</key><integer>0</integer>
1123// CHECK-NEXT: </dict>
1124// CHECK-NEXT: <dict>
1125// CHECK-NEXT: <key>line</key><integer>119</integer>
1126// CHECK-NEXT: <key>col</key><integer>9</integer>
1127// CHECK-NEXT: <key>file</key><integer>0</integer>
1128// CHECK-NEXT: </dict>
1129// CHECK-NEXT: </array>
Gabor Horvathefec1632015-10-22 11:53:04 +00001130// CHECK-NEXT: </dict>
1131// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +00001132// CHECK-NEXT: </dict>
Gabor Horvathefec1632015-10-22 11:53:04 +00001133// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00001134// CHECK-NEXT: <key>kind</key><string>control</string>
1135// CHECK-NEXT: <key>edges</key>
Gabor Horvathefec1632015-10-22 11:53:04 +00001136// CHECK-NEXT: <array>
1137// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00001138// CHECK-NEXT: <key>start</key>
1139// CHECK-NEXT: <array>
1140// CHECK-NEXT: <dict>
1141// CHECK-NEXT: <key>line</key><integer>119</integer>
1142// CHECK-NEXT: <key>col</key><integer>3</integer>
1143// CHECK-NEXT: <key>file</key><integer>0</integer>
1144// CHECK-NEXT: </dict>
1145// CHECK-NEXT: <dict>
1146// CHECK-NEXT: <key>line</key><integer>119</integer>
1147// CHECK-NEXT: <key>col</key><integer>9</integer>
1148// CHECK-NEXT: <key>file</key><integer>0</integer>
1149// CHECK-NEXT: </dict>
1150// CHECK-NEXT: </array>
1151// CHECK-NEXT: <key>end</key>
1152// CHECK-NEXT: <array>
1153// CHECK-NEXT: <dict>
1154// CHECK-NEXT: <key>line</key><integer>119</integer>
1155// CHECK-NEXT: <key>col</key><integer>11</integer>
1156// CHECK-NEXT: <key>file</key><integer>0</integer>
1157// CHECK-NEXT: </dict>
1158// CHECK-NEXT: <dict>
1159// CHECK-NEXT: <key>line</key><integer>119</integer>
1160// CHECK-NEXT: <key>col</key><integer>11</integer>
1161// CHECK-NEXT: <key>file</key><integer>0</integer>
1162// CHECK-NEXT: </dict>
1163// CHECK-NEXT: </array>
Gabor Horvathefec1632015-10-22 11:53:04 +00001164// CHECK-NEXT: </dict>
1165// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +00001166// CHECK-NEXT: </dict>
Gabor Horvathefec1632015-10-22 11:53:04 +00001167// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00001168// CHECK-NEXT: <key>kind</key><string>event</string>
1169// CHECK-NEXT: <key>location</key>
1170// CHECK-NEXT: <dict>
1171// CHECK-NEXT: <key>line</key><integer>119</integer>
1172// CHECK-NEXT: <key>col</key><integer>11</integer>
1173// CHECK-NEXT: <key>file</key><integer>0</integer>
1174// CHECK-NEXT: </dict>
1175// CHECK-NEXT: <key>ranges</key>
1176// CHECK-NEXT: <array>
1177// CHECK-NEXT: <array>
1178// CHECK-NEXT: <dict>
1179// CHECK-NEXT: <key>line</key><integer>119</integer>
1180// CHECK-NEXT: <key>col</key><integer>11</integer>
1181// CHECK-NEXT: <key>file</key><integer>0</integer>
1182// CHECK-NEXT: </dict>
1183// CHECK-NEXT: <dict>
1184// CHECK-NEXT: <key>line</key><integer>119</integer>
1185// CHECK-NEXT: <key>col</key><integer>11</integer>
1186// CHECK-NEXT: <key>file</key><integer>0</integer>
1187// CHECK-NEXT: </dict>
1188// CHECK-NEXT: </array>
1189// CHECK-NEXT: </array>
1190// CHECK-NEXT: <key>depth</key><integer>0</integer>
1191// CHECK-NEXT: <key>extended_message</key>
1192// CHECK-NEXT: <string>Conversion from value of type &apos;NSMutableArray&lt;NSString *&gt; *&apos; to incompatible type &apos;NSArray&lt;NSNumber *&gt; *&apos;</string>
1193// CHECK-NEXT: <key>message</key>
1194// 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 +00001195// CHECK-NEXT: </dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00001196// CHECK-NEXT: </array>
1197// 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>
1198// CHECK-NEXT: <key>category</key><string>Core Foundation/Objective-C</string>
1199// CHECK-NEXT: <key>type</key><string>Generics</string>
1200// CHECK-NEXT: <key>check_name</key><string>core.DynamicTypePropagation</string>
1201// CHECK-NEXT: <!-- This hash is experimental and going to change! -->
1202// CHECK-NEXT: <key>issue_hash_content_of_line_in_context</key><string>234e3c299ee75a4dd4563e0ea88b9ed9</string>
1203// CHECK-NEXT: <key>issue_context_kind</key><string>function</string>
1204// CHECK-NEXT: <key>issue_context</key><string>incompatibleTypesErasedReverseConversion</string>
1205// CHECK-NEXT: <key>issue_hash_function_offset</key><string>4</string>
1206// CHECK-NEXT: <key>location</key>
1207// CHECK-NEXT: <dict>
1208// CHECK-NEXT: <key>line</key><integer>119</integer>
1209// CHECK-NEXT: <key>col</key><integer>11</integer>
1210// CHECK-NEXT: <key>file</key><integer>0</integer>
1211// CHECK-NEXT: </dict>
1212// CHECK-NEXT: </dict>
1213// CHECK-NEXT: <dict>
1214// CHECK-NEXT: <key>path</key>
1215// CHECK-NEXT: <array>
1216// CHECK-NEXT: <dict>
1217// CHECK-NEXT: <key>kind</key><string>event</string>
1218// CHECK-NEXT: <key>location</key>
1219// CHECK-NEXT: <dict>
1220// CHECK-NEXT: <key>line</key><integer>116</integer>
1221// CHECK-NEXT: <key>col</key><integer>7</integer>
1222// CHECK-NEXT: <key>file</key><integer>0</integer>
1223// CHECK-NEXT: </dict>
1224// CHECK-NEXT: <key>ranges</key>
Gabor Horvathefec1632015-10-22 11:53:04 +00001225// CHECK-NEXT: <array>
Devin Coughlinab139a92016-12-05 16:28:47 +00001226// CHECK-NEXT: <array>
1227// CHECK-NEXT: <dict>
1228// CHECK-NEXT: <key>line</key><integer>116</integer>
1229// CHECK-NEXT: <key>col</key><integer>7</integer>
1230// CHECK-NEXT: <key>file</key><integer>0</integer>
1231// CHECK-NEXT: </dict>
1232// CHECK-NEXT: <dict>
1233// CHECK-NEXT: <key>line</key><integer>116</integer>
1234// CHECK-NEXT: <key>col</key><integer>7</integer>
1235// CHECK-NEXT: <key>file</key><integer>0</integer>
1236// CHECK-NEXT: </dict>
1237// CHECK-NEXT: </array>
Gabor Horvathefec1632015-10-22 11:53:04 +00001238// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +00001239// CHECK-NEXT: <key>depth</key><integer>0</integer>
1240// CHECK-NEXT: <key>extended_message</key>
1241// 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>
1242// CHECK-NEXT: <key>message</key>
1243// 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>
1244// CHECK-NEXT: </dict>
Gabor Horvathefec1632015-10-22 11:53:04 +00001245// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00001246// CHECK-NEXT: <key>kind</key><string>control</string>
1247// CHECK-NEXT: <key>edges</key>
Gabor Horvathefec1632015-10-22 11:53:04 +00001248// CHECK-NEXT: <array>
1249// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00001250// CHECK-NEXT: <key>start</key>
1251// CHECK-NEXT: <array>
1252// CHECK-NEXT: <dict>
1253// CHECK-NEXT: <key>line</key><integer>116</integer>
1254// CHECK-NEXT: <key>col</key><integer>3</integer>
1255// CHECK-NEXT: <key>file</key><integer>0</integer>
1256// CHECK-NEXT: </dict>
1257// CHECK-NEXT: <dict>
1258// CHECK-NEXT: <key>line</key><integer>116</integer>
1259// CHECK-NEXT: <key>col</key><integer>3</integer>
1260// CHECK-NEXT: <key>file</key><integer>0</integer>
1261// CHECK-NEXT: </dict>
1262// CHECK-NEXT: </array>
1263// CHECK-NEXT: <key>end</key>
1264// CHECK-NEXT: <array>
1265// CHECK-NEXT: <dict>
1266// CHECK-NEXT: <key>line</key><integer>121</integer>
1267// CHECK-NEXT: <key>col</key><integer>3</integer>
1268// CHECK-NEXT: <key>file</key><integer>0</integer>
1269// CHECK-NEXT: </dict>
1270// CHECK-NEXT: <dict>
1271// CHECK-NEXT: <key>line</key><integer>121</integer>
1272// CHECK-NEXT: <key>col</key><integer>3</integer>
1273// CHECK-NEXT: <key>file</key><integer>0</integer>
1274// CHECK-NEXT: </dict>
1275// CHECK-NEXT: </array>
Gabor Horvathefec1632015-10-22 11:53:04 +00001276// CHECK-NEXT: </dict>
1277// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +00001278// CHECK-NEXT: </dict>
Gabor Horvathefec1632015-10-22 11:53:04 +00001279// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00001280// CHECK-NEXT: <key>kind</key><string>event</string>
1281// CHECK-NEXT: <key>location</key>
1282// CHECK-NEXT: <dict>
1283// CHECK-NEXT: <key>line</key><integer>121</integer>
1284// CHECK-NEXT: <key>col</key><integer>3</integer>
1285// CHECK-NEXT: <key>file</key><integer>0</integer>
1286// CHECK-NEXT: </dict>
1287// CHECK-NEXT: <key>ranges</key>
Gabor Horvathefec1632015-10-22 11:53:04 +00001288// CHECK-NEXT: <array>
Devin Coughlinab139a92016-12-05 16:28:47 +00001289// CHECK-NEXT: <array>
1290// CHECK-NEXT: <dict>
1291// CHECK-NEXT: <key>line</key><integer>121</integer>
1292// CHECK-NEXT: <key>col</key><integer>17</integer>
1293// CHECK-NEXT: <key>file</key><integer>0</integer>
1294// CHECK-NEXT: </dict>
1295// CHECK-NEXT: <dict>
1296// CHECK-NEXT: <key>line</key><integer>121</integer>
1297// CHECK-NEXT: <key>col</key><integer>39</integer>
1298// CHECK-NEXT: <key>file</key><integer>0</integer>
1299// CHECK-NEXT: </dict>
1300// CHECK-NEXT: </array>
Gabor Horvathefec1632015-10-22 11:53:04 +00001301// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +00001302// CHECK-NEXT: <key>depth</key><integer>0</integer>
1303// CHECK-NEXT: <key>extended_message</key>
1304// CHECK-NEXT: <string>Conversion from value of type &apos;NSNumber *&apos; to incompatible type &apos;NSString *&apos;</string>
1305// CHECK-NEXT: <key>message</key>
1306// CHECK-NEXT: <string>Conversion from value of type &apos;NSNumber *&apos; to incompatible type &apos;NSString *&apos;</string>
1307// CHECK-NEXT: </dict>
1308// CHECK-NEXT: </array>
1309// CHECK-NEXT: <key>description</key><string>Conversion from value of type &apos;NSNumber *&apos; to incompatible type &apos;NSString *&apos;</string>
1310// CHECK-NEXT: <key>category</key><string>Core Foundation/Objective-C</string>
1311// CHECK-NEXT: <key>type</key><string>Generics</string>
1312// CHECK-NEXT: <key>check_name</key><string>core.DynamicTypePropagation</string>
1313// CHECK-NEXT: <!-- This hash is experimental and going to change! -->
1314// CHECK-NEXT: <key>issue_hash_content_of_line_in_context</key><string>e875afc5479fec33a693ce2b550a9573</string>
1315// CHECK-NEXT: <key>issue_context_kind</key><string>function</string>
1316// CHECK-NEXT: <key>issue_context</key><string>incompatibleTypesErasedReverseConversion</string>
1317// CHECK-NEXT: <key>issue_hash_function_offset</key><string>6</string>
1318// CHECK-NEXT: <key>location</key>
1319// CHECK-NEXT: <dict>
1320// CHECK-NEXT: <key>line</key><integer>121</integer>
1321// CHECK-NEXT: <key>col</key><integer>3</integer>
1322// CHECK-NEXT: <key>file</key><integer>0</integer>
1323// CHECK-NEXT: </dict>
1324// CHECK-NEXT: </dict>
1325// CHECK-NEXT: <dict>
1326// CHECK-NEXT: <key>path</key>
1327// CHECK-NEXT: <array>
1328// CHECK-NEXT: <dict>
1329// CHECK-NEXT: <key>kind</key><string>event</string>
1330// CHECK-NEXT: <key>location</key>
1331// CHECK-NEXT: <dict>
1332// CHECK-NEXT: <key>line</key><integer>125</integer>
1333// CHECK-NEXT: <key>col</key><integer>7</integer>
1334// CHECK-NEXT: <key>file</key><integer>0</integer>
1335// CHECK-NEXT: </dict>
1336// CHECK-NEXT: <key>ranges</key>
Gabor Horvathefec1632015-10-22 11:53:04 +00001337// CHECK-NEXT: <array>
Devin Coughlinab139a92016-12-05 16:28:47 +00001338// CHECK-NEXT: <array>
1339// CHECK-NEXT: <dict>
1340// CHECK-NEXT: <key>line</key><integer>125</integer>
1341// CHECK-NEXT: <key>col</key><integer>7</integer>
1342// CHECK-NEXT: <key>file</key><integer>0</integer>
1343// CHECK-NEXT: </dict>
1344// CHECK-NEXT: <dict>
1345// CHECK-NEXT: <key>line</key><integer>125</integer>
1346// CHECK-NEXT: <key>col</key><integer>7</integer>
1347// CHECK-NEXT: <key>file</key><integer>0</integer>
1348// CHECK-NEXT: </dict>
1349// CHECK-NEXT: </array>
Gabor Horvathefec1632015-10-22 11:53:04 +00001350// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +00001351// CHECK-NEXT: <key>depth</key><integer>0</integer>
1352// CHECK-NEXT: <key>extended_message</key>
1353// 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>
1354// CHECK-NEXT: <key>message</key>
1355// 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>
1356// CHECK-NEXT: </dict>
Gabor Horvathefec1632015-10-22 11:53:04 +00001357// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00001358// CHECK-NEXT: <key>kind</key><string>control</string>
1359// CHECK-NEXT: <key>edges</key>
Gabor Horvathefec1632015-10-22 11:53:04 +00001360// CHECK-NEXT: <array>
1361// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00001362// CHECK-NEXT: <key>start</key>
1363// CHECK-NEXT: <array>
1364// CHECK-NEXT: <dict>
1365// CHECK-NEXT: <key>line</key><integer>125</integer>
1366// CHECK-NEXT: <key>col</key><integer>3</integer>
1367// CHECK-NEXT: <key>file</key><integer>0</integer>
1368// CHECK-NEXT: </dict>
1369// CHECK-NEXT: <dict>
1370// CHECK-NEXT: <key>line</key><integer>125</integer>
1371// CHECK-NEXT: <key>col</key><integer>3</integer>
1372// CHECK-NEXT: <key>file</key><integer>0</integer>
1373// CHECK-NEXT: </dict>
1374// CHECK-NEXT: </array>
1375// CHECK-NEXT: <key>end</key>
1376// CHECK-NEXT: <array>
1377// CHECK-NEXT: <dict>
1378// CHECK-NEXT: <key>line</key><integer>128</integer>
1379// CHECK-NEXT: <key>col</key><integer>3</integer>
1380// CHECK-NEXT: <key>file</key><integer>0</integer>
1381// CHECK-NEXT: </dict>
1382// CHECK-NEXT: <dict>
1383// CHECK-NEXT: <key>line</key><integer>128</integer>
1384// CHECK-NEXT: <key>col</key><integer>9</integer>
1385// CHECK-NEXT: <key>file</key><integer>0</integer>
1386// CHECK-NEXT: </dict>
1387// CHECK-NEXT: </array>
Gabor Horvathefec1632015-10-22 11:53:04 +00001388// CHECK-NEXT: </dict>
1389// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +00001390// CHECK-NEXT: </dict>
Gabor Horvathefec1632015-10-22 11:53:04 +00001391// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00001392// CHECK-NEXT: <key>kind</key><string>control</string>
1393// CHECK-NEXT: <key>edges</key>
Gabor Horvathefec1632015-10-22 11:53:04 +00001394// CHECK-NEXT: <array>
1395// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00001396// CHECK-NEXT: <key>start</key>
1397// CHECK-NEXT: <array>
1398// CHECK-NEXT: <dict>
1399// CHECK-NEXT: <key>line</key><integer>128</integer>
1400// CHECK-NEXT: <key>col</key><integer>3</integer>
1401// CHECK-NEXT: <key>file</key><integer>0</integer>
1402// CHECK-NEXT: </dict>
1403// CHECK-NEXT: <dict>
1404// CHECK-NEXT: <key>line</key><integer>128</integer>
1405// CHECK-NEXT: <key>col</key><integer>9</integer>
1406// CHECK-NEXT: <key>file</key><integer>0</integer>
1407// CHECK-NEXT: </dict>
1408// CHECK-NEXT: </array>
1409// CHECK-NEXT: <key>end</key>
1410// CHECK-NEXT: <array>
1411// CHECK-NEXT: <dict>
1412// CHECK-NEXT: <key>line</key><integer>128</integer>
1413// CHECK-NEXT: <key>col</key><integer>11</integer>
1414// CHECK-NEXT: <key>file</key><integer>0</integer>
1415// CHECK-NEXT: </dict>
1416// CHECK-NEXT: <dict>
1417// CHECK-NEXT: <key>line</key><integer>128</integer>
1418// CHECK-NEXT: <key>col</key><integer>11</integer>
1419// CHECK-NEXT: <key>file</key><integer>0</integer>
1420// CHECK-NEXT: </dict>
1421// CHECK-NEXT: </array>
Gabor Horvathefec1632015-10-22 11:53:04 +00001422// CHECK-NEXT: </dict>
1423// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +00001424// CHECK-NEXT: </dict>
1425// CHECK-NEXT: <dict>
1426// CHECK-NEXT: <key>kind</key><string>event</string>
1427// CHECK-NEXT: <key>location</key>
1428// CHECK-NEXT: <dict>
1429// CHECK-NEXT: <key>line</key><integer>128</integer>
1430// CHECK-NEXT: <key>col</key><integer>11</integer>
1431// CHECK-NEXT: <key>file</key><integer>0</integer>
1432// CHECK-NEXT: </dict>
1433// CHECK-NEXT: <key>ranges</key>
Gabor Horvathefec1632015-10-22 11:53:04 +00001434// CHECK-NEXT: <array>
Devin Coughlinab139a92016-12-05 16:28:47 +00001435// CHECK-NEXT: <array>
1436// CHECK-NEXT: <dict>
1437// CHECK-NEXT: <key>line</key><integer>128</integer>
1438// CHECK-NEXT: <key>col</key><integer>11</integer>
1439// CHECK-NEXT: <key>file</key><integer>0</integer>
1440// CHECK-NEXT: </dict>
1441// CHECK-NEXT: <dict>
1442// CHECK-NEXT: <key>line</key><integer>128</integer>
1443// CHECK-NEXT: <key>col</key><integer>11</integer>
1444// CHECK-NEXT: <key>file</key><integer>0</integer>
1445// CHECK-NEXT: </dict>
1446// CHECK-NEXT: </array>
Gabor Horvathefec1632015-10-22 11:53:04 +00001447// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +00001448// CHECK-NEXT: <key>depth</key><integer>0</integer>
1449// CHECK-NEXT: <key>extended_message</key>
1450// CHECK-NEXT: <string>Conversion from value of type &apos;NSMutableArray&lt;NSString *&gt; *&apos; to incompatible type &apos;NSArray&lt;NSNumber *&gt; *&apos;</string>
1451// CHECK-NEXT: <key>message</key>
1452// CHECK-NEXT: <string>Conversion from value of type &apos;NSMutableArray&lt;NSString *&gt; *&apos; to incompatible type &apos;NSArray&lt;NSNumber *&gt; *&apos;</string>
1453// CHECK-NEXT: </dict>
1454// CHECK-NEXT: </array>
1455// 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>
1456// CHECK-NEXT: <key>category</key><string>Core Foundation/Objective-C</string>
1457// CHECK-NEXT: <key>type</key><string>Generics</string>
1458// CHECK-NEXT: <key>check_name</key><string>core.DynamicTypePropagation</string>
1459// CHECK-NEXT: <!-- This hash is experimental and going to change! -->
1460// CHECK-NEXT: <key>issue_hash_content_of_line_in_context</key><string>d7fa9fa89fe860ed8f5d22631233a5fa</string>
1461// CHECK-NEXT: <key>issue_context_kind</key><string>function</string>
1462// CHECK-NEXT: <key>issue_context</key><string>idErasedIncompatibleTypesReverseConversion</string>
1463// CHECK-NEXT: <key>issue_hash_function_offset</key><string>4</string>
1464// CHECK-NEXT: <key>location</key>
1465// CHECK-NEXT: <dict>
1466// CHECK-NEXT: <key>line</key><integer>128</integer>
1467// CHECK-NEXT: <key>col</key><integer>11</integer>
1468// CHECK-NEXT: <key>file</key><integer>0</integer>
1469// CHECK-NEXT: </dict>
1470// CHECK-NEXT: </dict>
1471// CHECK-NEXT: <dict>
1472// CHECK-NEXT: <key>path</key>
1473// CHECK-NEXT: <array>
Gabor Horvathefec1632015-10-22 11:53:04 +00001474// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00001475// CHECK-NEXT: <key>kind</key><string>event</string>
1476// CHECK-NEXT: <key>location</key>
1477// CHECK-NEXT: <dict>
1478// CHECK-NEXT: <key>line</key><integer>125</integer>
1479// CHECK-NEXT: <key>col</key><integer>7</integer>
1480// CHECK-NEXT: <key>file</key><integer>0</integer>
1481// CHECK-NEXT: </dict>
1482// CHECK-NEXT: <key>ranges</key>
1483// CHECK-NEXT: <array>
1484// CHECK-NEXT: <array>
1485// CHECK-NEXT: <dict>
1486// CHECK-NEXT: <key>line</key><integer>125</integer>
1487// CHECK-NEXT: <key>col</key><integer>7</integer>
1488// CHECK-NEXT: <key>file</key><integer>0</integer>
1489// CHECK-NEXT: </dict>
1490// CHECK-NEXT: <dict>
1491// CHECK-NEXT: <key>line</key><integer>125</integer>
1492// CHECK-NEXT: <key>col</key><integer>7</integer>
1493// CHECK-NEXT: <key>file</key><integer>0</integer>
1494// CHECK-NEXT: </dict>
1495// CHECK-NEXT: </array>
1496// CHECK-NEXT: </array>
1497// CHECK-NEXT: <key>depth</key><integer>0</integer>
1498// CHECK-NEXT: <key>extended_message</key>
1499// 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>
1500// CHECK-NEXT: <key>message</key>
1501// 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 +00001502// CHECK-NEXT: </dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00001503// CHECK-NEXT: <dict>
1504// CHECK-NEXT: <key>kind</key><string>control</string>
1505// CHECK-NEXT: <key>edges</key>
Gabor Horvathefec1632015-10-22 11:53:04 +00001506// CHECK-NEXT: <array>
1507// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00001508// CHECK-NEXT: <key>start</key>
1509// CHECK-NEXT: <array>
1510// CHECK-NEXT: <dict>
1511// CHECK-NEXT: <key>line</key><integer>125</integer>
1512// CHECK-NEXT: <key>col</key><integer>3</integer>
1513// CHECK-NEXT: <key>file</key><integer>0</integer>
1514// CHECK-NEXT: </dict>
1515// CHECK-NEXT: <dict>
1516// CHECK-NEXT: <key>line</key><integer>125</integer>
1517// CHECK-NEXT: <key>col</key><integer>3</integer>
1518// CHECK-NEXT: <key>file</key><integer>0</integer>
1519// CHECK-NEXT: </dict>
1520// CHECK-NEXT: </array>
1521// CHECK-NEXT: <key>end</key>
1522// CHECK-NEXT: <array>
1523// CHECK-NEXT: <dict>
1524// CHECK-NEXT: <key>line</key><integer>130</integer>
1525// CHECK-NEXT: <key>col</key><integer>3</integer>
1526// CHECK-NEXT: <key>file</key><integer>0</integer>
1527// CHECK-NEXT: </dict>
1528// CHECK-NEXT: <dict>
1529// CHECK-NEXT: <key>line</key><integer>130</integer>
1530// CHECK-NEXT: <key>col</key><integer>3</integer>
1531// CHECK-NEXT: <key>file</key><integer>0</integer>
1532// CHECK-NEXT: </dict>
1533// CHECK-NEXT: </array>
Gabor Horvathefec1632015-10-22 11:53:04 +00001534// CHECK-NEXT: </dict>
1535// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +00001536// CHECK-NEXT: </dict>
Gabor Horvathefec1632015-10-22 11:53:04 +00001537// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00001538// CHECK-NEXT: <key>kind</key><string>event</string>
1539// CHECK-NEXT: <key>location</key>
1540// CHECK-NEXT: <dict>
1541// CHECK-NEXT: <key>line</key><integer>130</integer>
1542// CHECK-NEXT: <key>col</key><integer>3</integer>
1543// CHECK-NEXT: <key>file</key><integer>0</integer>
1544// CHECK-NEXT: </dict>
1545// CHECK-NEXT: <key>ranges</key>
Gabor Horvathefec1632015-10-22 11:53:04 +00001546// CHECK-NEXT: <array>
Devin Coughlinab139a92016-12-05 16:28:47 +00001547// CHECK-NEXT: <array>
1548// CHECK-NEXT: <dict>
1549// CHECK-NEXT: <key>line</key><integer>130</integer>
1550// CHECK-NEXT: <key>col</key><integer>16</integer>
1551// CHECK-NEXT: <key>file</key><integer>0</integer>
1552// CHECK-NEXT: </dict>
1553// CHECK-NEXT: <dict>
1554// CHECK-NEXT: <key>line</key><integer>130</integer>
1555// CHECK-NEXT: <key>col</key><integer>38</integer>
1556// CHECK-NEXT: <key>file</key><integer>0</integer>
1557// CHECK-NEXT: </dict>
1558// CHECK-NEXT: </array>
Gabor Horvathefec1632015-10-22 11:53:04 +00001559// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +00001560// CHECK-NEXT: <key>depth</key><integer>0</integer>
1561// CHECK-NEXT: <key>extended_message</key>
1562// CHECK-NEXT: <string>Conversion from value of type &apos;NSNumber *&apos; to incompatible type &apos;NSString *&apos;</string>
1563// CHECK-NEXT: <key>message</key>
1564// CHECK-NEXT: <string>Conversion from value of type &apos;NSNumber *&apos; to incompatible type &apos;NSString *&apos;</string>
1565// CHECK-NEXT: </dict>
1566// CHECK-NEXT: </array>
1567// CHECK-NEXT: <key>description</key><string>Conversion from value of type &apos;NSNumber *&apos; to incompatible type &apos;NSString *&apos;</string>
1568// CHECK-NEXT: <key>category</key><string>Core Foundation/Objective-C</string>
1569// CHECK-NEXT: <key>type</key><string>Generics</string>
1570// CHECK-NEXT: <key>check_name</key><string>core.DynamicTypePropagation</string>
1571// CHECK-NEXT: <!-- This hash is experimental and going to change! -->
1572// CHECK-NEXT: <key>issue_hash_content_of_line_in_context</key><string>7de91182a5d6e40a85fa3b91cf3fd089</string>
1573// CHECK-NEXT: <key>issue_context_kind</key><string>function</string>
1574// CHECK-NEXT: <key>issue_context</key><string>idErasedIncompatibleTypesReverseConversion</string>
1575// CHECK-NEXT: <key>issue_hash_function_offset</key><string>6</string>
1576// CHECK-NEXT: <key>location</key>
1577// CHECK-NEXT: <dict>
1578// CHECK-NEXT: <key>line</key><integer>130</integer>
1579// CHECK-NEXT: <key>col</key><integer>3</integer>
1580// CHECK-NEXT: <key>file</key><integer>0</integer>
1581// CHECK-NEXT: </dict>
1582// CHECK-NEXT: </dict>
1583// CHECK-NEXT: <dict>
1584// CHECK-NEXT: <key>path</key>
1585// CHECK-NEXT: <array>
1586// CHECK-NEXT: <dict>
1587// CHECK-NEXT: <key>kind</key><string>event</string>
1588// CHECK-NEXT: <key>location</key>
1589// CHECK-NEXT: <dict>
1590// CHECK-NEXT: <key>line</key><integer>135</integer>
1591// CHECK-NEXT: <key>col</key><integer>7</integer>
1592// CHECK-NEXT: <key>file</key><integer>0</integer>
1593// CHECK-NEXT: </dict>
1594// CHECK-NEXT: <key>ranges</key>
Gabor Horvathefec1632015-10-22 11:53:04 +00001595// CHECK-NEXT: <array>
Devin Coughlinab139a92016-12-05 16:28:47 +00001596// CHECK-NEXT: <array>
1597// CHECK-NEXT: <dict>
1598// CHECK-NEXT: <key>line</key><integer>135</integer>
1599// CHECK-NEXT: <key>col</key><integer>7</integer>
1600// CHECK-NEXT: <key>file</key><integer>0</integer>
1601// CHECK-NEXT: </dict>
1602// CHECK-NEXT: <dict>
1603// CHECK-NEXT: <key>line</key><integer>135</integer>
1604// CHECK-NEXT: <key>col</key><integer>7</integer>
1605// CHECK-NEXT: <key>file</key><integer>0</integer>
1606// CHECK-NEXT: </dict>
1607// CHECK-NEXT: </array>
Gabor Horvathefec1632015-10-22 11:53:04 +00001608// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +00001609// CHECK-NEXT: <key>depth</key><integer>0</integer>
1610// CHECK-NEXT: <key>extended_message</key>
1611// 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>
1612// CHECK-NEXT: <key>message</key>
1613// 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>
1614// CHECK-NEXT: </dict>
Gabor Horvathefec1632015-10-22 11:53:04 +00001615// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00001616// CHECK-NEXT: <key>kind</key><string>control</string>
1617// CHECK-NEXT: <key>edges</key>
Gabor Horvathefec1632015-10-22 11:53:04 +00001618// CHECK-NEXT: <array>
1619// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00001620// CHECK-NEXT: <key>start</key>
1621// CHECK-NEXT: <array>
1622// CHECK-NEXT: <dict>
1623// CHECK-NEXT: <key>line</key><integer>135</integer>
1624// CHECK-NEXT: <key>col</key><integer>3</integer>
1625// CHECK-NEXT: <key>file</key><integer>0</integer>
1626// CHECK-NEXT: </dict>
1627// CHECK-NEXT: <dict>
1628// CHECK-NEXT: <key>line</key><integer>135</integer>
1629// CHECK-NEXT: <key>col</key><integer>3</integer>
1630// CHECK-NEXT: <key>file</key><integer>0</integer>
1631// CHECK-NEXT: </dict>
1632// CHECK-NEXT: </array>
1633// CHECK-NEXT: <key>end</key>
1634// CHECK-NEXT: <array>
1635// CHECK-NEXT: <dict>
1636// CHECK-NEXT: <key>line</key><integer>136</integer>
1637// CHECK-NEXT: <key>col</key><integer>3</integer>
1638// CHECK-NEXT: <key>file</key><integer>0</integer>
1639// CHECK-NEXT: </dict>
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: </array>
Gabor Horvathefec1632015-10-22 11:53:04 +00001646// CHECK-NEXT: </dict>
1647// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +00001648// CHECK-NEXT: </dict>
Gabor Horvathefec1632015-10-22 11:53:04 +00001649// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00001650// CHECK-NEXT: <key>kind</key><string>control</string>
1651// CHECK-NEXT: <key>edges</key>
Gabor Horvathefec1632015-10-22 11:53:04 +00001652// CHECK-NEXT: <array>
1653// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00001654// CHECK-NEXT: <key>start</key>
1655// CHECK-NEXT: <array>
1656// CHECK-NEXT: <dict>
1657// CHECK-NEXT: <key>line</key><integer>136</integer>
1658// CHECK-NEXT: <key>col</key><integer>3</integer>
1659// CHECK-NEXT: <key>file</key><integer>0</integer>
1660// CHECK-NEXT: </dict>
1661// CHECK-NEXT: <dict>
1662// CHECK-NEXT: <key>line</key><integer>136</integer>
1663// CHECK-NEXT: <key>col</key><integer>3</integer>
1664// CHECK-NEXT: <key>file</key><integer>0</integer>
1665// CHECK-NEXT: </dict>
1666// CHECK-NEXT: </array>
1667// CHECK-NEXT: <key>end</key>
1668// CHECK-NEXT: <array>
1669// CHECK-NEXT: <dict>
1670// CHECK-NEXT: <key>line</key><integer>136</integer>
1671// CHECK-NEXT: <key>col</key><integer>7</integer>
1672// CHECK-NEXT: <key>file</key><integer>0</integer>
1673// CHECK-NEXT: </dict>
1674// CHECK-NEXT: <dict>
1675// CHECK-NEXT: <key>line</key><integer>136</integer>
1676// CHECK-NEXT: <key>col</key><integer>7</integer>
1677// CHECK-NEXT: <key>file</key><integer>0</integer>
1678// CHECK-NEXT: </dict>
1679// CHECK-NEXT: </array>
Gabor Horvathefec1632015-10-22 11:53:04 +00001680// CHECK-NEXT: </dict>
1681// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +00001682// CHECK-NEXT: </dict>
1683// CHECK-NEXT: <dict>
1684// CHECK-NEXT: <key>kind</key><string>event</string>
1685// CHECK-NEXT: <key>location</key>
1686// CHECK-NEXT: <dict>
1687// CHECK-NEXT: <key>line</key><integer>136</integer>
1688// CHECK-NEXT: <key>col</key><integer>7</integer>
1689// CHECK-NEXT: <key>file</key><integer>0</integer>
1690// CHECK-NEXT: </dict>
1691// CHECK-NEXT: <key>ranges</key>
Gabor Horvathefec1632015-10-22 11:53:04 +00001692// CHECK-NEXT: <array>
Devin Coughlinab139a92016-12-05 16:28:47 +00001693// CHECK-NEXT: <array>
1694// CHECK-NEXT: <dict>
1695// CHECK-NEXT: <key>line</key><integer>136</integer>
1696// CHECK-NEXT: <key>col</key><integer>7</integer>
1697// CHECK-NEXT: <key>file</key><integer>0</integer>
1698// CHECK-NEXT: </dict>
1699// CHECK-NEXT: <dict>
1700// CHECK-NEXT: <key>line</key><integer>136</integer>
1701// CHECK-NEXT: <key>col</key><integer>7</integer>
1702// CHECK-NEXT: <key>file</key><integer>0</integer>
1703// CHECK-NEXT: </dict>
1704// CHECK-NEXT: </array>
Gabor Horvathefec1632015-10-22 11:53:04 +00001705// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +00001706// CHECK-NEXT: <key>depth</key><integer>0</integer>
1707// CHECK-NEXT: <key>extended_message</key>
1708// CHECK-NEXT: <string>Conversion from value of type &apos;NSMutableArray&lt;NSString *&gt; *&apos; to incompatible type &apos;NSArray&lt;NSNumber *&gt; *&apos;</string>
1709// CHECK-NEXT: <key>message</key>
1710// CHECK-NEXT: <string>Conversion from value of type &apos;NSMutableArray&lt;NSString *&gt; *&apos; to incompatible type &apos;NSArray&lt;NSNumber *&gt; *&apos;</string>
1711// CHECK-NEXT: </dict>
1712// CHECK-NEXT: </array>
1713// 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>
1714// CHECK-NEXT: <key>category</key><string>Core Foundation/Objective-C</string>
1715// CHECK-NEXT: <key>type</key><string>Generics</string>
1716// CHECK-NEXT: <key>check_name</key><string>core.DynamicTypePropagation</string>
1717// CHECK-NEXT: <!-- This hash is experimental and going to change! -->
1718// CHECK-NEXT: <key>issue_hash_content_of_line_in_context</key><string>8960776d84319407ac2bf7a1531d19b0</string>
1719// CHECK-NEXT: <key>issue_context_kind</key><string>function</string>
1720// CHECK-NEXT: <key>issue_context</key><string>idErasedIncompatibleTypes</string>
1721// CHECK-NEXT: <key>issue_hash_function_offset</key><string>2</string>
1722// CHECK-NEXT: <key>location</key>
1723// CHECK-NEXT: <dict>
1724// CHECK-NEXT: <key>line</key><integer>136</integer>
1725// CHECK-NEXT: <key>col</key><integer>7</integer>
1726// CHECK-NEXT: <key>file</key><integer>0</integer>
1727// CHECK-NEXT: </dict>
1728// CHECK-NEXT: </dict>
1729// CHECK-NEXT: <dict>
1730// CHECK-NEXT: <key>path</key>
1731// CHECK-NEXT: <array>
1732// CHECK-NEXT: <dict>
1733// CHECK-NEXT: <key>kind</key><string>event</string>
1734// CHECK-NEXT: <key>location</key>
1735// CHECK-NEXT: <dict>
1736// CHECK-NEXT: <key>line</key><integer>135</integer>
1737// CHECK-NEXT: <key>col</key><integer>7</integer>
1738// CHECK-NEXT: <key>file</key><integer>0</integer>
1739// CHECK-NEXT: </dict>
1740// CHECK-NEXT: <key>ranges</key>
Gabor Horvathefec1632015-10-22 11:53:04 +00001741// CHECK-NEXT: <array>
Devin Coughlinab139a92016-12-05 16:28:47 +00001742// CHECK-NEXT: <array>
1743// CHECK-NEXT: <dict>
1744// CHECK-NEXT: <key>line</key><integer>135</integer>
1745// CHECK-NEXT: <key>col</key><integer>7</integer>
1746// CHECK-NEXT: <key>file</key><integer>0</integer>
1747// CHECK-NEXT: </dict>
1748// CHECK-NEXT: <dict>
1749// CHECK-NEXT: <key>line</key><integer>135</integer>
1750// CHECK-NEXT: <key>col</key><integer>7</integer>
1751// CHECK-NEXT: <key>file</key><integer>0</integer>
1752// CHECK-NEXT: </dict>
1753// CHECK-NEXT: </array>
Gabor Horvathefec1632015-10-22 11:53:04 +00001754// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +00001755// CHECK-NEXT: <key>depth</key><integer>0</integer>
1756// CHECK-NEXT: <key>extended_message</key>
1757// 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>
1758// CHECK-NEXT: <key>message</key>
1759// 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>
1760// CHECK-NEXT: </dict>
Gabor Horvathefec1632015-10-22 11:53:04 +00001761// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00001762// CHECK-NEXT: <key>kind</key><string>control</string>
1763// CHECK-NEXT: <key>edges</key>
Gabor Horvathefec1632015-10-22 11:53:04 +00001764// CHECK-NEXT: <array>
1765// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00001766// CHECK-NEXT: <key>start</key>
1767// CHECK-NEXT: <array>
1768// CHECK-NEXT: <dict>
1769// CHECK-NEXT: <key>line</key><integer>135</integer>
1770// CHECK-NEXT: <key>col</key><integer>3</integer>
1771// CHECK-NEXT: <key>file</key><integer>0</integer>
1772// CHECK-NEXT: </dict>
1773// CHECK-NEXT: <dict>
1774// CHECK-NEXT: <key>line</key><integer>135</integer>
1775// CHECK-NEXT: <key>col</key><integer>3</integer>
1776// CHECK-NEXT: <key>file</key><integer>0</integer>
1777// CHECK-NEXT: </dict>
1778// CHECK-NEXT: </array>
1779// CHECK-NEXT: <key>end</key>
1780// CHECK-NEXT: <array>
1781// CHECK-NEXT: <dict>
1782// CHECK-NEXT: <key>line</key><integer>139</integer>
1783// CHECK-NEXT: <key>col</key><integer>3</integer>
1784// CHECK-NEXT: <key>file</key><integer>0</integer>
1785// CHECK-NEXT: </dict>
1786// CHECK-NEXT: <dict>
1787// CHECK-NEXT: <key>line</key><integer>139</integer>
1788// CHECK-NEXT: <key>col</key><integer>9</integer>
1789// CHECK-NEXT: <key>file</key><integer>0</integer>
1790// CHECK-NEXT: </dict>
1791// CHECK-NEXT: </array>
Gabor Horvathefec1632015-10-22 11:53:04 +00001792// CHECK-NEXT: </dict>
1793// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +00001794// CHECK-NEXT: </dict>
Gabor Horvathefec1632015-10-22 11:53:04 +00001795// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00001796// CHECK-NEXT: <key>kind</key><string>control</string>
1797// CHECK-NEXT: <key>edges</key>
Gabor Horvathefec1632015-10-22 11:53:04 +00001798// CHECK-NEXT: <array>
1799// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00001800// CHECK-NEXT: <key>start</key>
1801// CHECK-NEXT: <array>
1802// CHECK-NEXT: <dict>
1803// CHECK-NEXT: <key>line</key><integer>139</integer>
1804// CHECK-NEXT: <key>col</key><integer>3</integer>
1805// CHECK-NEXT: <key>file</key><integer>0</integer>
1806// CHECK-NEXT: </dict>
1807// CHECK-NEXT: <dict>
1808// CHECK-NEXT: <key>line</key><integer>139</integer>
1809// CHECK-NEXT: <key>col</key><integer>9</integer>
1810// CHECK-NEXT: <key>file</key><integer>0</integer>
1811// CHECK-NEXT: </dict>
1812// CHECK-NEXT: </array>
1813// CHECK-NEXT: <key>end</key>
1814// CHECK-NEXT: <array>
1815// CHECK-NEXT: <dict>
1816// CHECK-NEXT: <key>line</key><integer>139</integer>
1817// CHECK-NEXT: <key>col</key><integer>11</integer>
1818// CHECK-NEXT: <key>file</key><integer>0</integer>
1819// CHECK-NEXT: </dict>
1820// CHECK-NEXT: <dict>
1821// CHECK-NEXT: <key>line</key><integer>139</integer>
1822// CHECK-NEXT: <key>col</key><integer>11</integer>
1823// CHECK-NEXT: <key>file</key><integer>0</integer>
1824// CHECK-NEXT: </dict>
1825// CHECK-NEXT: </array>
Gabor Horvathefec1632015-10-22 11:53:04 +00001826// CHECK-NEXT: </dict>
1827// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +00001828// CHECK-NEXT: </dict>
1829// CHECK-NEXT: <dict>
1830// CHECK-NEXT: <key>kind</key><string>event</string>
1831// CHECK-NEXT: <key>location</key>
1832// CHECK-NEXT: <dict>
1833// CHECK-NEXT: <key>line</key><integer>139</integer>
1834// CHECK-NEXT: <key>col</key><integer>11</integer>
1835// CHECK-NEXT: <key>file</key><integer>0</integer>
1836// CHECK-NEXT: </dict>
1837// CHECK-NEXT: <key>ranges</key>
Gabor Horvathefec1632015-10-22 11:53:04 +00001838// CHECK-NEXT: <array>
Devin Coughlinab139a92016-12-05 16:28:47 +00001839// CHECK-NEXT: <array>
1840// CHECK-NEXT: <dict>
1841// CHECK-NEXT: <key>line</key><integer>139</integer>
1842// CHECK-NEXT: <key>col</key><integer>11</integer>
1843// CHECK-NEXT: <key>file</key><integer>0</integer>
1844// CHECK-NEXT: </dict>
1845// CHECK-NEXT: <dict>
1846// CHECK-NEXT: <key>line</key><integer>139</integer>
1847// CHECK-NEXT: <key>col</key><integer>11</integer>
1848// CHECK-NEXT: <key>file</key><integer>0</integer>
1849// CHECK-NEXT: </dict>
1850// CHECK-NEXT: </array>
Gabor Horvathefec1632015-10-22 11:53:04 +00001851// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +00001852// CHECK-NEXT: <key>depth</key><integer>0</integer>
1853// CHECK-NEXT: <key>extended_message</key>
1854// CHECK-NEXT: <string>Conversion from value of type &apos;NSMutableArray&lt;NSString *&gt; *&apos; to incompatible type &apos;NSArray&lt;NSNumber *&gt; *&apos;</string>
1855// CHECK-NEXT: <key>message</key>
1856// CHECK-NEXT: <string>Conversion from value of type &apos;NSMutableArray&lt;NSString *&gt; *&apos; to incompatible type &apos;NSArray&lt;NSNumber *&gt; *&apos;</string>
1857// CHECK-NEXT: </dict>
1858// CHECK-NEXT: </array>
1859// 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>
1860// CHECK-NEXT: <key>category</key><string>Core Foundation/Objective-C</string>
1861// CHECK-NEXT: <key>type</key><string>Generics</string>
1862// CHECK-NEXT: <key>check_name</key><string>core.DynamicTypePropagation</string>
1863// CHECK-NEXT: <!-- This hash is experimental and going to change! -->
1864// CHECK-NEXT: <key>issue_hash_content_of_line_in_context</key><string>93b114c7a385294dce5c25ed04a8b25a</string>
1865// CHECK-NEXT: <key>issue_context_kind</key><string>function</string>
1866// CHECK-NEXT: <key>issue_context</key><string>idErasedIncompatibleTypes</string>
1867// CHECK-NEXT: <key>issue_hash_function_offset</key><string>5</string>
1868// CHECK-NEXT: <key>location</key>
1869// CHECK-NEXT: <dict>
1870// CHECK-NEXT: <key>line</key><integer>139</integer>
1871// CHECK-NEXT: <key>col</key><integer>11</integer>
1872// CHECK-NEXT: <key>file</key><integer>0</integer>
1873// CHECK-NEXT: </dict>
1874// CHECK-NEXT: </dict>
1875// CHECK-NEXT: <dict>
1876// CHECK-NEXT: <key>path</key>
1877// CHECK-NEXT: <array>
Gabor Horvathefec1632015-10-22 11:53:04 +00001878// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00001879// CHECK-NEXT: <key>kind</key><string>event</string>
1880// CHECK-NEXT: <key>location</key>
1881// CHECK-NEXT: <dict>
1882// CHECK-NEXT: <key>line</key><integer>135</integer>
1883// CHECK-NEXT: <key>col</key><integer>7</integer>
1884// CHECK-NEXT: <key>file</key><integer>0</integer>
1885// CHECK-NEXT: </dict>
1886// CHECK-NEXT: <key>ranges</key>
1887// CHECK-NEXT: <array>
1888// CHECK-NEXT: <array>
1889// CHECK-NEXT: <dict>
1890// CHECK-NEXT: <key>line</key><integer>135</integer>
1891// CHECK-NEXT: <key>col</key><integer>7</integer>
1892// CHECK-NEXT: <key>file</key><integer>0</integer>
1893// CHECK-NEXT: </dict>
1894// CHECK-NEXT: <dict>
1895// CHECK-NEXT: <key>line</key><integer>135</integer>
1896// CHECK-NEXT: <key>col</key><integer>7</integer>
1897// CHECK-NEXT: <key>file</key><integer>0</integer>
1898// CHECK-NEXT: </dict>
1899// CHECK-NEXT: </array>
1900// CHECK-NEXT: </array>
1901// CHECK-NEXT: <key>depth</key><integer>0</integer>
1902// CHECK-NEXT: <key>extended_message</key>
1903// 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>
1904// CHECK-NEXT: <key>message</key>
1905// 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 +00001906// CHECK-NEXT: </dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00001907// CHECK-NEXT: <dict>
1908// CHECK-NEXT: <key>kind</key><string>control</string>
1909// CHECK-NEXT: <key>edges</key>
Gabor Horvathefec1632015-10-22 11:53:04 +00001910// CHECK-NEXT: <array>
1911// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00001912// CHECK-NEXT: <key>start</key>
1913// CHECK-NEXT: <array>
1914// CHECK-NEXT: <dict>
1915// CHECK-NEXT: <key>line</key><integer>135</integer>
1916// CHECK-NEXT: <key>col</key><integer>3</integer>
1917// CHECK-NEXT: <key>file</key><integer>0</integer>
1918// CHECK-NEXT: </dict>
1919// CHECK-NEXT: <dict>
1920// CHECK-NEXT: <key>line</key><integer>135</integer>
1921// CHECK-NEXT: <key>col</key><integer>3</integer>
1922// CHECK-NEXT: <key>file</key><integer>0</integer>
1923// CHECK-NEXT: </dict>
1924// CHECK-NEXT: </array>
1925// CHECK-NEXT: <key>end</key>
1926// CHECK-NEXT: <array>
1927// CHECK-NEXT: <dict>
1928// CHECK-NEXT: <key>line</key><integer>141</integer>
1929// CHECK-NEXT: <key>col</key><integer>3</integer>
1930// CHECK-NEXT: <key>file</key><integer>0</integer>
1931// CHECK-NEXT: </dict>
1932// CHECK-NEXT: <dict>
1933// CHECK-NEXT: <key>line</key><integer>141</integer>
1934// CHECK-NEXT: <key>col</key><integer>3</integer>
1935// CHECK-NEXT: <key>file</key><integer>0</integer>
1936// CHECK-NEXT: </dict>
1937// CHECK-NEXT: </array>
Gabor Horvathefec1632015-10-22 11:53:04 +00001938// CHECK-NEXT: </dict>
1939// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +00001940// CHECK-NEXT: </dict>
Gabor Horvathefec1632015-10-22 11:53:04 +00001941// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00001942// CHECK-NEXT: <key>kind</key><string>event</string>
1943// CHECK-NEXT: <key>location</key>
1944// CHECK-NEXT: <dict>
1945// CHECK-NEXT: <key>line</key><integer>141</integer>
1946// CHECK-NEXT: <key>col</key><integer>3</integer>
1947// CHECK-NEXT: <key>file</key><integer>0</integer>
1948// CHECK-NEXT: </dict>
1949// CHECK-NEXT: <key>ranges</key>
1950// CHECK-NEXT: <array>
1951// CHECK-NEXT: <array>
1952// CHECK-NEXT: <dict>
1953// CHECK-NEXT: <key>line</key><integer>141</integer>
1954// CHECK-NEXT: <key>col</key><integer>16</integer>
1955// CHECK-NEXT: <key>file</key><integer>0</integer>
1956// CHECK-NEXT: </dict>
1957// CHECK-NEXT: <dict>
1958// CHECK-NEXT: <key>line</key><integer>141</integer>
1959// CHECK-NEXT: <key>col</key><integer>38</integer>
1960// CHECK-NEXT: <key>file</key><integer>0</integer>
1961// CHECK-NEXT: </dict>
1962// CHECK-NEXT: </array>
1963// CHECK-NEXT: </array>
1964// CHECK-NEXT: <key>depth</key><integer>0</integer>
1965// CHECK-NEXT: <key>extended_message</key>
1966// CHECK-NEXT: <string>Conversion from value of type &apos;NSNumber *&apos; to incompatible type &apos;NSString *&apos;</string>
1967// CHECK-NEXT: <key>message</key>
1968// 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 +00001969// CHECK-NEXT: </dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00001970// CHECK-NEXT: </array>
1971// CHECK-NEXT: <key>description</key><string>Conversion from value of type &apos;NSNumber *&apos; to incompatible type &apos;NSString *&apos;</string>
1972// CHECK-NEXT: <key>category</key><string>Core Foundation/Objective-C</string>
1973// CHECK-NEXT: <key>type</key><string>Generics</string>
1974// CHECK-NEXT: <key>check_name</key><string>core.DynamicTypePropagation</string>
1975// CHECK-NEXT: <!-- This hash is experimental and going to change! -->
1976// CHECK-NEXT: <key>issue_hash_content_of_line_in_context</key><string>4c17f22d7e977f3343d2e2129b9229c3</string>
1977// CHECK-NEXT: <key>issue_context_kind</key><string>function</string>
1978// CHECK-NEXT: <key>issue_context</key><string>idErasedIncompatibleTypes</string>
1979// CHECK-NEXT: <key>issue_hash_function_offset</key><string>7</string>
1980// CHECK-NEXT: <key>location</key>
1981// CHECK-NEXT: <dict>
1982// CHECK-NEXT: <key>line</key><integer>141</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: <dict>
1988// CHECK-NEXT: <key>path</key>
1989// CHECK-NEXT: <array>
1990// CHECK-NEXT: <dict>
1991// CHECK-NEXT: <key>kind</key><string>control</string>
1992// CHECK-NEXT: <key>edges</key>
Gabor Horvathefec1632015-10-22 11:53:04 +00001993// CHECK-NEXT: <array>
1994// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00001995// CHECK-NEXT: <key>start</key>
1996// CHECK-NEXT: <array>
1997// CHECK-NEXT: <dict>
1998// CHECK-NEXT: <key>line</key><integer>146</integer>
1999// CHECK-NEXT: <key>col</key><integer>3</integer>
2000// CHECK-NEXT: <key>file</key><integer>0</integer>
2001// CHECK-NEXT: </dict>
2002// CHECK-NEXT: <dict>
2003// CHECK-NEXT: <key>line</key><integer>146</integer>
2004// CHECK-NEXT: <key>col</key><integer>4</integer>
2005// CHECK-NEXT: <key>file</key><integer>0</integer>
2006// CHECK-NEXT: </dict>
2007// CHECK-NEXT: </array>
2008// CHECK-NEXT: <key>end</key>
2009// CHECK-NEXT: <array>
2010// CHECK-NEXT: <dict>
2011// CHECK-NEXT: <key>line</key><integer>146</integer>
2012// CHECK-NEXT: <key>col</key><integer>7</integer>
2013// CHECK-NEXT: <key>file</key><integer>0</integer>
2014// CHECK-NEXT: </dict>
2015// CHECK-NEXT: <dict>
2016// CHECK-NEXT: <key>line</key><integer>146</integer>
2017// CHECK-NEXT: <key>col</key><integer>16</integer>
2018// CHECK-NEXT: <key>file</key><integer>0</integer>
2019// CHECK-NEXT: </dict>
2020// CHECK-NEXT: </array>
Gabor Horvathefec1632015-10-22 11:53:04 +00002021// CHECK-NEXT: </dict>
2022// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +00002023// CHECK-NEXT: </dict>
2024// CHECK-NEXT: <dict>
2025// CHECK-NEXT: <key>kind</key><string>event</string>
2026// CHECK-NEXT: <key>location</key>
2027// CHECK-NEXT: <dict>
2028// CHECK-NEXT: <key>line</key><integer>146</integer>
2029// CHECK-NEXT: <key>col</key><integer>7</integer>
2030// CHECK-NEXT: <key>file</key><integer>0</integer>
2031// CHECK-NEXT: </dict>
2032// CHECK-NEXT: <key>ranges</key>
Gabor Horvathefec1632015-10-22 11:53:04 +00002033// CHECK-NEXT: <array>
Devin Coughlinab139a92016-12-05 16:28:47 +00002034// CHECK-NEXT: <array>
2035// CHECK-NEXT: <dict>
2036// CHECK-NEXT: <key>line</key><integer>146</integer>
2037// CHECK-NEXT: <key>col</key><integer>7</integer>
2038// CHECK-NEXT: <key>file</key><integer>0</integer>
2039// CHECK-NEXT: </dict>
2040// CHECK-NEXT: <dict>
2041// CHECK-NEXT: <key>line</key><integer>146</integer>
2042// CHECK-NEXT: <key>col</key><integer>23</integer>
2043// CHECK-NEXT: <key>file</key><integer>0</integer>
2044// CHECK-NEXT: </dict>
2045// CHECK-NEXT: </array>
Gabor Horvathefec1632015-10-22 11:53:04 +00002046// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +00002047// CHECK-NEXT: <key>depth</key><integer>0</integer>
2048// CHECK-NEXT: <key>extended_message</key>
2049// CHECK-NEXT: <string>Assuming the condition is false</string>
2050// CHECK-NEXT: <key>message</key>
2051// CHECK-NEXT: <string>Assuming the condition is false</string>
2052// CHECK-NEXT: </dict>
Gabor Horvathefec1632015-10-22 11:53:04 +00002053// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00002054// CHECK-NEXT: <key>kind</key><string>control</string>
2055// CHECK-NEXT: <key>edges</key>
Gabor Horvathefec1632015-10-22 11:53:04 +00002056// CHECK-NEXT: <array>
2057// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00002058// CHECK-NEXT: <key>start</key>
2059// CHECK-NEXT: <array>
2060// CHECK-NEXT: <dict>
2061// CHECK-NEXT: <key>line</key><integer>146</integer>
2062// CHECK-NEXT: <key>col</key><integer>7</integer>
2063// CHECK-NEXT: <key>file</key><integer>0</integer>
2064// CHECK-NEXT: </dict>
2065// CHECK-NEXT: <dict>
2066// CHECK-NEXT: <key>line</key><integer>146</integer>
2067// CHECK-NEXT: <key>col</key><integer>16</integer>
2068// CHECK-NEXT: <key>file</key><integer>0</integer>
2069// CHECK-NEXT: </dict>
2070// CHECK-NEXT: </array>
2071// CHECK-NEXT: <key>end</key>
2072// CHECK-NEXT: <array>
2073// CHECK-NEXT: <dict>
2074// CHECK-NEXT: <key>line</key><integer>150</integer>
2075// CHECK-NEXT: <key>col</key><integer>5</integer>
2076// CHECK-NEXT: <key>file</key><integer>0</integer>
2077// CHECK-NEXT: </dict>
2078// CHECK-NEXT: <dict>
2079// CHECK-NEXT: <key>line</key><integer>150</integer>
2080// CHECK-NEXT: <key>col</key><integer>5</integer>
2081// CHECK-NEXT: <key>file</key><integer>0</integer>
2082// CHECK-NEXT: </dict>
2083// CHECK-NEXT: </array>
Gabor Horvathefec1632015-10-22 11:53:04 +00002084// CHECK-NEXT: </dict>
2085// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +00002086// CHECK-NEXT: </dict>
2087// CHECK-NEXT: <dict>
2088// CHECK-NEXT: <key>kind</key><string>event</string>
2089// CHECK-NEXT: <key>location</key>
2090// CHECK-NEXT: <dict>
2091// CHECK-NEXT: <key>line</key><integer>150</integer>
2092// CHECK-NEXT: <key>col</key><integer>9</integer>
2093// CHECK-NEXT: <key>file</key><integer>0</integer>
2094// CHECK-NEXT: </dict>
2095// CHECK-NEXT: <key>ranges</key>
Gabor Horvathefec1632015-10-22 11:53:04 +00002096// CHECK-NEXT: <array>
Devin Coughlinab139a92016-12-05 16:28:47 +00002097// CHECK-NEXT: <array>
2098// CHECK-NEXT: <dict>
2099// CHECK-NEXT: <key>line</key><integer>150</integer>
2100// CHECK-NEXT: <key>col</key><integer>9</integer>
2101// CHECK-NEXT: <key>file</key><integer>0</integer>
2102// CHECK-NEXT: </dict>
2103// CHECK-NEXT: <dict>
2104// CHECK-NEXT: <key>line</key><integer>150</integer>
2105// CHECK-NEXT: <key>col</key><integer>9</integer>
2106// CHECK-NEXT: <key>file</key><integer>0</integer>
2107// CHECK-NEXT: </dict>
2108// CHECK-NEXT: </array>
Artem Dergachev0c334062016-10-05 08:19:49 +00002109// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +00002110// CHECK-NEXT: <key>depth</key><integer>0</integer>
2111// CHECK-NEXT: <key>extended_message</key>
2112// 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>
2113// CHECK-NEXT: <key>message</key>
2114// 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>
2115// CHECK-NEXT: </dict>
Artem Dergachev0c334062016-10-05 08:19:49 +00002116// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00002117// CHECK-NEXT: <key>kind</key><string>control</string>
2118// CHECK-NEXT: <key>edges</key>
Artem Dergachev0c334062016-10-05 08:19:49 +00002119// CHECK-NEXT: <array>
2120// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00002121// CHECK-NEXT: <key>start</key>
2122// CHECK-NEXT: <array>
2123// CHECK-NEXT: <dict>
2124// CHECK-NEXT: <key>line</key><integer>150</integer>
2125// CHECK-NEXT: <key>col</key><integer>5</integer>
2126// CHECK-NEXT: <key>file</key><integer>0</integer>
2127// CHECK-NEXT: </dict>
2128// CHECK-NEXT: <dict>
2129// CHECK-NEXT: <key>line</key><integer>150</integer>
2130// CHECK-NEXT: <key>col</key><integer>5</integer>
2131// CHECK-NEXT: <key>file</key><integer>0</integer>
2132// CHECK-NEXT: </dict>
2133// CHECK-NEXT: </array>
2134// CHECK-NEXT: <key>end</key>
2135// CHECK-NEXT: <array>
2136// CHECK-NEXT: <dict>
2137// CHECK-NEXT: <key>line</key><integer>151</integer>
2138// CHECK-NEXT: <key>col</key><integer>5</integer>
2139// CHECK-NEXT: <key>file</key><integer>0</integer>
2140// CHECK-NEXT: </dict>
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: </array>
Artem Dergachev0c334062016-10-05 08:19:49 +00002147// CHECK-NEXT: </dict>
2148// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +00002149// CHECK-NEXT: </dict>
Gabor Horvathefec1632015-10-22 11:53:04 +00002150// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00002151// CHECK-NEXT: <key>kind</key><string>control</string>
2152// CHECK-NEXT: <key>edges</key>
Gabor Horvathefec1632015-10-22 11:53:04 +00002153// CHECK-NEXT: <array>
2154// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00002155// CHECK-NEXT: <key>start</key>
2156// CHECK-NEXT: <array>
2157// CHECK-NEXT: <dict>
2158// CHECK-NEXT: <key>line</key><integer>151</integer>
2159// CHECK-NEXT: <key>col</key><integer>5</integer>
2160// CHECK-NEXT: <key>file</key><integer>0</integer>
2161// CHECK-NEXT: </dict>
2162// CHECK-NEXT: <dict>
2163// CHECK-NEXT: <key>line</key><integer>151</integer>
2164// CHECK-NEXT: <key>col</key><integer>5</integer>
2165// CHECK-NEXT: <key>file</key><integer>0</integer>
2166// CHECK-NEXT: </dict>
2167// CHECK-NEXT: </array>
2168// CHECK-NEXT: <key>end</key>
2169// CHECK-NEXT: <array>
2170// CHECK-NEXT: <dict>
2171// CHECK-NEXT: <key>line</key><integer>153</integer>
2172// CHECK-NEXT: <key>col</key><integer>3</integer>
2173// CHECK-NEXT: <key>file</key><integer>0</integer>
2174// CHECK-NEXT: </dict>
2175// CHECK-NEXT: <dict>
2176// CHECK-NEXT: <key>line</key><integer>153</integer>
2177// CHECK-NEXT: <key>col</key><integer>3</integer>
2178// CHECK-NEXT: <key>file</key><integer>0</integer>
2179// CHECK-NEXT: </dict>
2180// CHECK-NEXT: </array>
Gabor Horvathefec1632015-10-22 11:53:04 +00002181// CHECK-NEXT: </dict>
2182// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +00002183// CHECK-NEXT: </dict>
2184// CHECK-NEXT: <dict>
2185// CHECK-NEXT: <key>kind</key><string>event</string>
2186// CHECK-NEXT: <key>location</key>
2187// CHECK-NEXT: <dict>
2188// CHECK-NEXT: <key>line</key><integer>153</integer>
2189// CHECK-NEXT: <key>col</key><integer>3</integer>
2190// CHECK-NEXT: <key>file</key><integer>0</integer>
2191// CHECK-NEXT: </dict>
2192// CHECK-NEXT: <key>ranges</key>
Gabor Horvathefec1632015-10-22 11:53:04 +00002193// CHECK-NEXT: <array>
Devin Coughlinab139a92016-12-05 16:28:47 +00002194// CHECK-NEXT: <array>
2195// CHECK-NEXT: <dict>
2196// CHECK-NEXT: <key>line</key><integer>153</integer>
2197// CHECK-NEXT: <key>col</key><integer>17</integer>
2198// CHECK-NEXT: <key>file</key><integer>0</integer>
2199// CHECK-NEXT: </dict>
2200// CHECK-NEXT: <dict>
2201// CHECK-NEXT: <key>line</key><integer>153</integer>
2202// CHECK-NEXT: <key>col</key><integer>39</integer>
2203// CHECK-NEXT: <key>file</key><integer>0</integer>
2204// CHECK-NEXT: </dict>
2205// CHECK-NEXT: </array>
Gabor Horvathefec1632015-10-22 11:53:04 +00002206// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +00002207// CHECK-NEXT: <key>depth</key><integer>0</integer>
2208// CHECK-NEXT: <key>extended_message</key>
2209// CHECK-NEXT: <string>Conversion from value of type &apos;NSString *&apos; to incompatible type &apos;NSMutableString *&apos;</string>
2210// CHECK-NEXT: <key>message</key>
2211// CHECK-NEXT: <string>Conversion from value of type &apos;NSString *&apos; to incompatible type &apos;NSMutableString *&apos;</string>
2212// CHECK-NEXT: </dict>
2213// CHECK-NEXT: </array>
2214// CHECK-NEXT: <key>description</key><string>Conversion from value of type &apos;NSString *&apos; to incompatible type &apos;NSMutableString *&apos;</string>
2215// CHECK-NEXT: <key>category</key><string>Core Foundation/Objective-C</string>
2216// CHECK-NEXT: <key>type</key><string>Generics</string>
2217// CHECK-NEXT: <key>check_name</key><string>core.DynamicTypePropagation</string>
2218// CHECK-NEXT: <!-- This hash is experimental and going to change! -->
2219// CHECK-NEXT: <key>issue_hash_content_of_line_in_context</key><string>24a08781e7d8971a7d8f8f607ce40074</string>
2220// CHECK-NEXT: <key>issue_context_kind</key><string>function</string>
2221// CHECK-NEXT: <key>issue_context</key><string>pathSensitiveInference</string>
2222// CHECK-NEXT: <key>issue_hash_function_offset</key><string>8</string>
2223// CHECK-NEXT: <key>location</key>
2224// CHECK-NEXT: <dict>
2225// CHECK-NEXT: <key>line</key><integer>153</integer>
2226// CHECK-NEXT: <key>col</key><integer>3</integer>
2227// CHECK-NEXT: <key>file</key><integer>0</integer>
2228// CHECK-NEXT: </dict>
2229// CHECK-NEXT: </dict>
2230// CHECK-NEXT: <dict>
2231// CHECK-NEXT: <key>path</key>
2232// CHECK-NEXT: <array>
2233// CHECK-NEXT: <dict>
2234// CHECK-NEXT: <key>kind</key><string>event</string>
2235// CHECK-NEXT: <key>location</key>
2236// CHECK-NEXT: <dict>
2237// CHECK-NEXT: <key>line</key><integer>158</integer>
2238// CHECK-NEXT: <key>col</key><integer>7</integer>
2239// CHECK-NEXT: <key>file</key><integer>0</integer>
2240// CHECK-NEXT: </dict>
2241// CHECK-NEXT: <key>ranges</key>
Gabor Horvathefec1632015-10-22 11:53:04 +00002242// CHECK-NEXT: <array>
Devin Coughlinab139a92016-12-05 16:28:47 +00002243// CHECK-NEXT: <array>
2244// CHECK-NEXT: <dict>
2245// CHECK-NEXT: <key>line</key><integer>158</integer>
2246// CHECK-NEXT: <key>col</key><integer>7</integer>
2247// CHECK-NEXT: <key>file</key><integer>0</integer>
2248// CHECK-NEXT: </dict>
2249// CHECK-NEXT: <dict>
2250// CHECK-NEXT: <key>line</key><integer>158</integer>
2251// CHECK-NEXT: <key>col</key><integer>7</integer>
2252// CHECK-NEXT: <key>file</key><integer>0</integer>
2253// CHECK-NEXT: </dict>
2254// CHECK-NEXT: </array>
Gabor Horvathefec1632015-10-22 11:53:04 +00002255// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +00002256// CHECK-NEXT: <key>depth</key><integer>0</integer>
2257// CHECK-NEXT: <key>extended_message</key>
2258// 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>
2259// CHECK-NEXT: <key>message</key>
2260// 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>
2261// CHECK-NEXT: </dict>
Gabor Horvathefec1632015-10-22 11:53:04 +00002262// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00002263// CHECK-NEXT: <key>kind</key><string>control</string>
2264// CHECK-NEXT: <key>edges</key>
Gabor Horvathefec1632015-10-22 11:53:04 +00002265// CHECK-NEXT: <array>
2266// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00002267// CHECK-NEXT: <key>start</key>
2268// CHECK-NEXT: <array>
2269// CHECK-NEXT: <dict>
2270// CHECK-NEXT: <key>line</key><integer>158</integer>
2271// CHECK-NEXT: <key>col</key><integer>3</integer>
2272// CHECK-NEXT: <key>file</key><integer>0</integer>
2273// CHECK-NEXT: </dict>
2274// CHECK-NEXT: <dict>
2275// CHECK-NEXT: <key>line</key><integer>158</integer>
2276// CHECK-NEXT: <key>col</key><integer>3</integer>
2277// CHECK-NEXT: <key>file</key><integer>0</integer>
2278// CHECK-NEXT: </dict>
2279// CHECK-NEXT: </array>
2280// CHECK-NEXT: <key>end</key>
2281// CHECK-NEXT: <array>
2282// CHECK-NEXT: <dict>
2283// CHECK-NEXT: <key>line</key><integer>159</integer>
2284// CHECK-NEXT: <key>col</key><integer>3</integer>
2285// CHECK-NEXT: <key>file</key><integer>0</integer>
2286// CHECK-NEXT: </dict>
2287// CHECK-NEXT: <dict>
2288// CHECK-NEXT: <key>line</key><integer>159</integer>
2289// CHECK-NEXT: <key>col</key><integer>9</integer>
2290// CHECK-NEXT: <key>file</key><integer>0</integer>
2291// CHECK-NEXT: </dict>
2292// CHECK-NEXT: </array>
Gabor Horvathefec1632015-10-22 11:53:04 +00002293// CHECK-NEXT: </dict>
2294// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +00002295// CHECK-NEXT: </dict>
Gabor Horvathefec1632015-10-22 11:53:04 +00002296// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00002297// CHECK-NEXT: <key>kind</key><string>control</string>
2298// CHECK-NEXT: <key>edges</key>
Gabor Horvathefec1632015-10-22 11:53:04 +00002299// CHECK-NEXT: <array>
2300// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00002301// CHECK-NEXT: <key>start</key>
2302// CHECK-NEXT: <array>
2303// CHECK-NEXT: <dict>
2304// CHECK-NEXT: <key>line</key><integer>159</integer>
2305// CHECK-NEXT: <key>col</key><integer>3</integer>
2306// CHECK-NEXT: <key>file</key><integer>0</integer>
2307// CHECK-NEXT: </dict>
2308// CHECK-NEXT: <dict>
2309// CHECK-NEXT: <key>line</key><integer>159</integer>
2310// CHECK-NEXT: <key>col</key><integer>9</integer>
2311// CHECK-NEXT: <key>file</key><integer>0</integer>
2312// CHECK-NEXT: </dict>
2313// CHECK-NEXT: </array>
2314// CHECK-NEXT: <key>end</key>
2315// CHECK-NEXT: <array>
2316// CHECK-NEXT: <dict>
2317// CHECK-NEXT: <key>line</key><integer>159</integer>
2318// CHECK-NEXT: <key>col</key><integer>11</integer>
2319// CHECK-NEXT: <key>file</key><integer>0</integer>
2320// CHECK-NEXT: </dict>
2321// CHECK-NEXT: <dict>
2322// CHECK-NEXT: <key>line</key><integer>159</integer>
2323// CHECK-NEXT: <key>col</key><integer>11</integer>
2324// CHECK-NEXT: <key>file</key><integer>0</integer>
2325// CHECK-NEXT: </dict>
2326// CHECK-NEXT: </array>
Gabor Horvathefec1632015-10-22 11:53:04 +00002327// CHECK-NEXT: </dict>
2328// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +00002329// CHECK-NEXT: </dict>
2330// CHECK-NEXT: <dict>
2331// CHECK-NEXT: <key>kind</key><string>event</string>
2332// CHECK-NEXT: <key>location</key>
2333// CHECK-NEXT: <dict>
2334// CHECK-NEXT: <key>line</key><integer>159</integer>
2335// CHECK-NEXT: <key>col</key><integer>11</integer>
2336// CHECK-NEXT: <key>file</key><integer>0</integer>
2337// CHECK-NEXT: </dict>
2338// CHECK-NEXT: <key>ranges</key>
Gabor Horvathefec1632015-10-22 11:53:04 +00002339// CHECK-NEXT: <array>
Devin Coughlinab139a92016-12-05 16:28:47 +00002340// CHECK-NEXT: <array>
2341// CHECK-NEXT: <dict>
2342// CHECK-NEXT: <key>line</key><integer>159</integer>
2343// CHECK-NEXT: <key>col</key><integer>11</integer>
2344// CHECK-NEXT: <key>file</key><integer>0</integer>
2345// CHECK-NEXT: </dict>
2346// CHECK-NEXT: <dict>
2347// CHECK-NEXT: <key>line</key><integer>159</integer>
2348// CHECK-NEXT: <key>col</key><integer>11</integer>
2349// CHECK-NEXT: <key>file</key><integer>0</integer>
2350// CHECK-NEXT: </dict>
2351// CHECK-NEXT: </array>
Gabor Horvathefec1632015-10-22 11:53:04 +00002352// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +00002353// CHECK-NEXT: <key>depth</key><integer>0</integer>
2354// CHECK-NEXT: <key>extended_message</key>
2355// CHECK-NEXT: <string>Conversion from value of type &apos;MutableArray&lt;NSString *&gt; *&apos; to incompatible type &apos;NSArray&lt;NSNumber *&gt; *&apos;</string>
2356// CHECK-NEXT: <key>message</key>
2357// CHECK-NEXT: <string>Conversion from value of type &apos;MutableArray&lt;NSString *&gt; *&apos; to incompatible type &apos;NSArray&lt;NSNumber *&gt; *&apos;</string>
2358// CHECK-NEXT: </dict>
2359// CHECK-NEXT: </array>
2360// 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>
2361// CHECK-NEXT: <key>category</key><string>Core Foundation/Objective-C</string>
2362// CHECK-NEXT: <key>type</key><string>Generics</string>
2363// CHECK-NEXT: <key>check_name</key><string>core.DynamicTypePropagation</string>
2364// CHECK-NEXT: <!-- This hash is experimental and going to change! -->
2365// CHECK-NEXT: <key>issue_hash_content_of_line_in_context</key><string>a8534f675404d57d833dc3c371d49845</string>
2366// CHECK-NEXT: <key>issue_context_kind</key><string>function</string>
2367// CHECK-NEXT: <key>issue_context</key><string>verifyAPIusage</string>
2368// CHECK-NEXT: <key>issue_hash_function_offset</key><string>2</string>
2369// CHECK-NEXT: <key>location</key>
2370// CHECK-NEXT: <dict>
2371// CHECK-NEXT: <key>line</key><integer>159</integer>
2372// CHECK-NEXT: <key>col</key><integer>11</integer>
2373// CHECK-NEXT: <key>file</key><integer>0</integer>
2374// CHECK-NEXT: </dict>
2375// CHECK-NEXT: </dict>
2376// CHECK-NEXT: <dict>
2377// CHECK-NEXT: <key>path</key>
2378// CHECK-NEXT: <array>
2379// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00002380// CHECK-NEXT: <key>kind</key><string>control</string>
2381// CHECK-NEXT: <key>edges</key>
Gabor Horvathefec1632015-10-22 11:53:04 +00002382// CHECK-NEXT: <array>
2383// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00002384// CHECK-NEXT: <key>start</key>
2385// CHECK-NEXT: <array>
2386// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00002387// CHECK-NEXT: <key>line</key><integer>187</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00002388// CHECK-NEXT: <key>col</key><integer>3</integer>
2389// CHECK-NEXT: <key>file</key><integer>0</integer>
2390// CHECK-NEXT: </dict>
2391// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00002392// CHECK-NEXT: <key>line</key><integer>187</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00002393// CHECK-NEXT: <key>col</key><integer>3</integer>
2394// CHECK-NEXT: <key>file</key><integer>0</integer>
2395// CHECK-NEXT: </dict>
2396// CHECK-NEXT: </array>
2397// CHECK-NEXT: <key>end</key>
2398// CHECK-NEXT: <array>
2399// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00002400// CHECK-NEXT: <key>line</key><integer>188</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00002401// 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>
Devin Coughlin5df6b942017-11-13 17:35:29 +00002405// CHECK-NEXT: <key>line</key><integer>188</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00002406// 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>
Gabor Horvathefec1632015-10-22 11:53:04 +00002410// CHECK-NEXT: </dict>
2411// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +00002412// CHECK-NEXT: </dict>
Gabor Horvathefec1632015-10-22 11:53:04 +00002413// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00002414// CHECK-NEXT: <key>kind</key><string>event</string>
2415// CHECK-NEXT: <key>location</key>
2416// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00002417// CHECK-NEXT: <key>line</key><integer>188</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00002418// CHECK-NEXT: <key>col</key><integer>7</integer>
2419// CHECK-NEXT: <key>file</key><integer>0</integer>
2420// CHECK-NEXT: </dict>
2421// CHECK-NEXT: <key>ranges</key>
Gabor Horvathefec1632015-10-22 11:53:04 +00002422// CHECK-NEXT: <array>
Devin Coughlinab139a92016-12-05 16:28:47 +00002423// CHECK-NEXT: <array>
2424// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00002425// CHECK-NEXT: <key>line</key><integer>188</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00002426// CHECK-NEXT: <key>col</key><integer>7</integer>
2427// CHECK-NEXT: <key>file</key><integer>0</integer>
2428// CHECK-NEXT: </dict>
2429// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00002430// CHECK-NEXT: <key>line</key><integer>188</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00002431// CHECK-NEXT: <key>col</key><integer>7</integer>
2432// CHECK-NEXT: <key>file</key><integer>0</integer>
2433// CHECK-NEXT: </dict>
2434// CHECK-NEXT: </array>
Gabor Horvathefec1632015-10-22 11:53:04 +00002435// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +00002436// CHECK-NEXT: <key>depth</key><integer>0</integer>
2437// CHECK-NEXT: <key>extended_message</key>
2438// 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>
2439// CHECK-NEXT: <key>message</key>
2440// 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>
2441// CHECK-NEXT: </dict>
Gabor Horvathefec1632015-10-22 11:53:04 +00002442// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00002443// CHECK-NEXT: <key>kind</key><string>control</string>
2444// CHECK-NEXT: <key>edges</key>
Gabor Horvathefec1632015-10-22 11:53:04 +00002445// CHECK-NEXT: <array>
2446// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00002447// CHECK-NEXT: <key>start</key>
2448// CHECK-NEXT: <array>
2449// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00002450// CHECK-NEXT: <key>line</key><integer>188</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00002451// CHECK-NEXT: <key>col</key><integer>3</integer>
2452// CHECK-NEXT: <key>file</key><integer>0</integer>
2453// CHECK-NEXT: </dict>
2454// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00002455// CHECK-NEXT: <key>line</key><integer>188</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00002456// CHECK-NEXT: <key>col</key><integer>3</integer>
2457// CHECK-NEXT: <key>file</key><integer>0</integer>
2458// CHECK-NEXT: </dict>
2459// CHECK-NEXT: </array>
2460// CHECK-NEXT: <key>end</key>
2461// CHECK-NEXT: <array>
2462// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00002463// CHECK-NEXT: <key>line</key><integer>189</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00002464// CHECK-NEXT: <key>col</key><integer>3</integer>
2465// CHECK-NEXT: <key>file</key><integer>0</integer>
2466// CHECK-NEXT: </dict>
2467// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00002468// CHECK-NEXT: <key>line</key><integer>189</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00002469// CHECK-NEXT: <key>col</key><integer>3</integer>
2470// CHECK-NEXT: <key>file</key><integer>0</integer>
2471// CHECK-NEXT: </dict>
2472// CHECK-NEXT: </array>
Gabor Horvathefec1632015-10-22 11:53:04 +00002473// CHECK-NEXT: </dict>
2474// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +00002475// CHECK-NEXT: </dict>
Gabor Horvathefec1632015-10-22 11:53:04 +00002476// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00002477// CHECK-NEXT: <key>kind</key><string>control</string>
2478// CHECK-NEXT: <key>edges</key>
Gabor Horvathefec1632015-10-22 11:53:04 +00002479// CHECK-NEXT: <array>
2480// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00002481// CHECK-NEXT: <key>start</key>
2482// CHECK-NEXT: <array>
2483// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00002484// CHECK-NEXT: <key>line</key><integer>189</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00002485// CHECK-NEXT: <key>col</key><integer>3</integer>
2486// CHECK-NEXT: <key>file</key><integer>0</integer>
2487// CHECK-NEXT: </dict>
2488// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00002489// CHECK-NEXT: <key>line</key><integer>189</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00002490// CHECK-NEXT: <key>col</key><integer>3</integer>
2491// CHECK-NEXT: <key>file</key><integer>0</integer>
2492// CHECK-NEXT: </dict>
2493// CHECK-NEXT: </array>
2494// CHECK-NEXT: <key>end</key>
2495// CHECK-NEXT: <array>
2496// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00002497// CHECK-NEXT: <key>line</key><integer>189</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00002498// CHECK-NEXT: <key>col</key><integer>7</integer>
2499// CHECK-NEXT: <key>file</key><integer>0</integer>
2500// CHECK-NEXT: </dict>
2501// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00002502// CHECK-NEXT: <key>line</key><integer>189</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00002503// CHECK-NEXT: <key>col</key><integer>7</integer>
2504// CHECK-NEXT: <key>file</key><integer>0</integer>
2505// CHECK-NEXT: </dict>
2506// CHECK-NEXT: </array>
Gabor Horvathefec1632015-10-22 11:53:04 +00002507// CHECK-NEXT: </dict>
2508// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +00002509// CHECK-NEXT: </dict>
2510// CHECK-NEXT: <dict>
2511// CHECK-NEXT: <key>kind</key><string>event</string>
2512// CHECK-NEXT: <key>location</key>
2513// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00002514// CHECK-NEXT: <key>line</key><integer>189</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00002515// CHECK-NEXT: <key>col</key><integer>7</integer>
2516// CHECK-NEXT: <key>file</key><integer>0</integer>
2517// CHECK-NEXT: </dict>
2518// CHECK-NEXT: <key>ranges</key>
Gabor Horvathefec1632015-10-22 11:53:04 +00002519// CHECK-NEXT: <array>
Devin Coughlinab139a92016-12-05 16:28:47 +00002520// CHECK-NEXT: <array>
2521// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00002522// CHECK-NEXT: <key>line</key><integer>189</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00002523// CHECK-NEXT: <key>col</key><integer>7</integer>
2524// CHECK-NEXT: <key>file</key><integer>0</integer>
2525// CHECK-NEXT: </dict>
2526// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00002527// CHECK-NEXT: <key>line</key><integer>189</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00002528// CHECK-NEXT: <key>col</key><integer>7</integer>
2529// CHECK-NEXT: <key>file</key><integer>0</integer>
2530// CHECK-NEXT: </dict>
2531// CHECK-NEXT: </array>
Gabor Horvathefec1632015-10-22 11:53:04 +00002532// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +00002533// CHECK-NEXT: <key>depth</key><integer>0</integer>
2534// CHECK-NEXT: <key>extended_message</key>
2535// CHECK-NEXT: <string>Conversion from value of type &apos;MutableArray&lt;NSString *&gt; *&apos; to incompatible type &apos;MutableArray&lt;NSNumber *&gt; *&apos;</string>
2536// CHECK-NEXT: <key>message</key>
2537// CHECK-NEXT: <string>Conversion from value of type &apos;MutableArray&lt;NSString *&gt; *&apos; to incompatible type &apos;MutableArray&lt;NSNumber *&gt; *&apos;</string>
2538// CHECK-NEXT: </dict>
2539// CHECK-NEXT: </array>
2540// 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>
2541// CHECK-NEXT: <key>category</key><string>Core Foundation/Objective-C</string>
2542// CHECK-NEXT: <key>type</key><string>Generics</string>
2543// CHECK-NEXT: <key>check_name</key><string>core.DynamicTypePropagation</string>
2544// CHECK-NEXT: <!-- This hash is experimental and going to change! -->
2545// CHECK-NEXT: <key>issue_hash_content_of_line_in_context</key><string>d113e22b9ee9ded1cd94750c3557eff4</string>
2546// CHECK-NEXT: <key>issue_context_kind</key><string>function</string>
2547// CHECK-NEXT: <key>issue_context</key><string>subtypeOfGeneric</string>
2548// CHECK-NEXT: <key>issue_hash_function_offset</key><string>3</string>
2549// CHECK-NEXT: <key>location</key>
2550// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00002551// CHECK-NEXT: <key>line</key><integer>189</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00002552// CHECK-NEXT: <key>col</key><integer>7</integer>
2553// CHECK-NEXT: <key>file</key><integer>0</integer>
2554// CHECK-NEXT: </dict>
2555// CHECK-NEXT: </dict>
2556// CHECK-NEXT: <dict>
2557// CHECK-NEXT: <key>path</key>
2558// CHECK-NEXT: <array>
2559// CHECK-NEXT: <dict>
2560// CHECK-NEXT: <key>kind</key><string>event</string>
2561// CHECK-NEXT: <key>location</key>
2562// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00002563// CHECK-NEXT: <key>line</key><integer>195</integer>
2564// CHECK-NEXT: <key>col</key><integer>7</integer>
2565// CHECK-NEXT: <key>file</key><integer>0</integer>
2566// CHECK-NEXT: </dict>
2567// CHECK-NEXT: <key>ranges</key>
Gabor Horvathefec1632015-10-22 11:53:04 +00002568// CHECK-NEXT: <array>
Devin Coughlinab139a92016-12-05 16:28:47 +00002569// CHECK-NEXT: <array>
2570// CHECK-NEXT: <dict>
2571// CHECK-NEXT: <key>line</key><integer>195</integer>
2572// CHECK-NEXT: <key>col</key><integer>7</integer>
2573// CHECK-NEXT: <key>file</key><integer>0</integer>
2574// CHECK-NEXT: </dict>
2575// CHECK-NEXT: <dict>
2576// CHECK-NEXT: <key>line</key><integer>195</integer>
2577// CHECK-NEXT: <key>col</key><integer>7</integer>
2578// CHECK-NEXT: <key>file</key><integer>0</integer>
2579// CHECK-NEXT: </dict>
2580// CHECK-NEXT: </array>
Gabor Horvathefec1632015-10-22 11:53:04 +00002581// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +00002582// CHECK-NEXT: <key>depth</key><integer>0</integer>
2583// CHECK-NEXT: <key>extended_message</key>
Devin Coughlin5df6b942017-11-13 17:35:29 +00002584// 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>
2585// CHECK-NEXT: <key>message</key>
2586// 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>
2587// CHECK-NEXT: </dict>
2588// CHECK-NEXT: <dict>
2589// CHECK-NEXT: <key>kind</key><string>control</string>
2590// CHECK-NEXT: <key>edges</key>
2591// CHECK-NEXT: <array>
2592// CHECK-NEXT: <dict>
2593// CHECK-NEXT: <key>start</key>
2594// CHECK-NEXT: <array>
2595// CHECK-NEXT: <dict>
2596// CHECK-NEXT: <key>line</key><integer>195</integer>
2597// CHECK-NEXT: <key>col</key><integer>3</integer>
2598// CHECK-NEXT: <key>file</key><integer>0</integer>
2599// CHECK-NEXT: </dict>
2600// CHECK-NEXT: <dict>
2601// CHECK-NEXT: <key>line</key><integer>195</integer>
2602// CHECK-NEXT: <key>col</key><integer>3</integer>
2603// CHECK-NEXT: <key>file</key><integer>0</integer>
2604// CHECK-NEXT: </dict>
2605// CHECK-NEXT: </array>
2606// CHECK-NEXT: <key>end</key>
2607// CHECK-NEXT: <array>
2608// CHECK-NEXT: <dict>
2609// CHECK-NEXT: <key>line</key><integer>199</integer>
2610// CHECK-NEXT: <key>col</key><integer>3</integer>
2611// CHECK-NEXT: <key>file</key><integer>0</integer>
2612// CHECK-NEXT: </dict>
2613// CHECK-NEXT: <dict>
2614// CHECK-NEXT: <key>line</key><integer>199</integer>
2615// CHECK-NEXT: <key>col</key><integer>3</integer>
2616// CHECK-NEXT: <key>file</key><integer>0</integer>
2617// CHECK-NEXT: </dict>
2618// CHECK-NEXT: </array>
2619// CHECK-NEXT: </dict>
2620// CHECK-NEXT: </array>
2621// CHECK-NEXT: </dict>
2622// CHECK-NEXT: <dict>
2623// CHECK-NEXT: <key>kind</key><string>control</string>
2624// CHECK-NEXT: <key>edges</key>
2625// CHECK-NEXT: <array>
2626// CHECK-NEXT: <dict>
2627// CHECK-NEXT: <key>start</key>
2628// CHECK-NEXT: <array>
2629// CHECK-NEXT: <dict>
2630// CHECK-NEXT: <key>line</key><integer>199</integer>
2631// CHECK-NEXT: <key>col</key><integer>3</integer>
2632// CHECK-NEXT: <key>file</key><integer>0</integer>
2633// CHECK-NEXT: </dict>
2634// CHECK-NEXT: <dict>
2635// CHECK-NEXT: <key>line</key><integer>199</integer>
2636// CHECK-NEXT: <key>col</key><integer>3</integer>
2637// CHECK-NEXT: <key>file</key><integer>0</integer>
2638// CHECK-NEXT: </dict>
2639// CHECK-NEXT: </array>
2640// CHECK-NEXT: <key>end</key>
2641// CHECK-NEXT: <array>
2642// CHECK-NEXT: <dict>
2643// CHECK-NEXT: <key>line</key><integer>199</integer>
2644// CHECK-NEXT: <key>col</key><integer>7</integer>
2645// CHECK-NEXT: <key>file</key><integer>0</integer>
2646// CHECK-NEXT: </dict>
2647// CHECK-NEXT: <dict>
2648// CHECK-NEXT: <key>line</key><integer>199</integer>
2649// CHECK-NEXT: <key>col</key><integer>7</integer>
2650// CHECK-NEXT: <key>file</key><integer>0</integer>
2651// CHECK-NEXT: </dict>
2652// CHECK-NEXT: </array>
2653// CHECK-NEXT: </dict>
2654// CHECK-NEXT: </array>
2655// CHECK-NEXT: </dict>
2656// CHECK-NEXT: <dict>
2657// CHECK-NEXT: <key>kind</key><string>event</string>
2658// CHECK-NEXT: <key>location</key>
2659// CHECK-NEXT: <dict>
2660// CHECK-NEXT: <key>line</key><integer>199</integer>
2661// CHECK-NEXT: <key>col</key><integer>7</integer>
2662// CHECK-NEXT: <key>file</key><integer>0</integer>
2663// CHECK-NEXT: </dict>
2664// CHECK-NEXT: <key>ranges</key>
2665// CHECK-NEXT: <array>
2666// CHECK-NEXT: <array>
2667// CHECK-NEXT: <dict>
2668// CHECK-NEXT: <key>line</key><integer>199</integer>
2669// CHECK-NEXT: <key>col</key><integer>7</integer>
2670// CHECK-NEXT: <key>file</key><integer>0</integer>
2671// CHECK-NEXT: </dict>
2672// CHECK-NEXT: <dict>
2673// CHECK-NEXT: <key>line</key><integer>199</integer>
2674// CHECK-NEXT: <key>col</key><integer>7</integer>
2675// CHECK-NEXT: <key>file</key><integer>0</integer>
2676// CHECK-NEXT: </dict>
2677// CHECK-NEXT: </array>
2678// CHECK-NEXT: </array>
2679// CHECK-NEXT: <key>depth</key><integer>0</integer>
2680// CHECK-NEXT: <key>extended_message</key>
Devin Coughlinab139a92016-12-05 16:28:47 +00002681// CHECK-NEXT: <string>Conversion from value of type &apos;ExceptionalArray&lt;NSString *&gt; *&apos; to incompatible type &apos;MutableArray&lt;NSNumber *&gt; *&apos;</string>
2682// CHECK-NEXT: <key>message</key>
2683// CHECK-NEXT: <string>Conversion from value of type &apos;ExceptionalArray&lt;NSString *&gt; *&apos; to incompatible type &apos;MutableArray&lt;NSNumber *&gt; *&apos;</string>
2684// CHECK-NEXT: </dict>
2685// CHECK-NEXT: </array>
2686// 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>
2687// CHECK-NEXT: <key>category</key><string>Core Foundation/Objective-C</string>
2688// CHECK-NEXT: <key>type</key><string>Generics</string>
2689// CHECK-NEXT: <key>check_name</key><string>core.DynamicTypePropagation</string>
2690// CHECK-NEXT: <!-- This hash is experimental and going to change! -->
Devin Coughlin5df6b942017-11-13 17:35:29 +00002691// CHECK-NEXT: <key>issue_hash_content_of_line_in_context</key><string>f1b900572a63726a729714a765595c38</string>
Devin Coughlinab139a92016-12-05 16:28:47 +00002692// CHECK-NEXT: <key>issue_context_kind</key><string>function</string>
Devin Coughlin5df6b942017-11-13 17:35:29 +00002693// CHECK-NEXT: <key>issue_context</key><string>genericSubtypeOfGeneric</string>
Devin Coughlinab139a92016-12-05 16:28:47 +00002694// CHECK-NEXT: <key>issue_hash_function_offset</key><string>5</string>
2695// CHECK-NEXT: <key>location</key>
2696// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00002697// CHECK-NEXT: <key>line</key><integer>199</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00002698// CHECK-NEXT: <key>col</key><integer>7</integer>
2699// CHECK-NEXT: <key>file</key><integer>0</integer>
2700// CHECK-NEXT: </dict>
2701// CHECK-NEXT: </dict>
2702// CHECK-NEXT: <dict>
2703// CHECK-NEXT: <key>path</key>
2704// CHECK-NEXT: <array>
Gabor Horvathefec1632015-10-22 11:53:04 +00002705// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00002706// CHECK-NEXT: <key>kind</key><string>event</string>
2707// CHECK-NEXT: <key>location</key>
2708// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00002709// CHECK-NEXT: <key>line</key><integer>195</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00002710// CHECK-NEXT: <key>col</key><integer>7</integer>
2711// CHECK-NEXT: <key>file</key><integer>0</integer>
2712// CHECK-NEXT: </dict>
2713// CHECK-NEXT: <key>ranges</key>
2714// CHECK-NEXT: <array>
2715// CHECK-NEXT: <array>
2716// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00002717// CHECK-NEXT: <key>line</key><integer>195</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00002718// CHECK-NEXT: <key>col</key><integer>7</integer>
2719// CHECK-NEXT: <key>file</key><integer>0</integer>
2720// CHECK-NEXT: </dict>
2721// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00002722// CHECK-NEXT: <key>line</key><integer>195</integer>
2723// CHECK-NEXT: <key>col</key><integer>7</integer>
2724// CHECK-NEXT: <key>file</key><integer>0</integer>
2725// CHECK-NEXT: </dict>
2726// CHECK-NEXT: </array>
2727// CHECK-NEXT: </array>
2728// CHECK-NEXT: <key>depth</key><integer>0</integer>
2729// CHECK-NEXT: <key>extended_message</key>
2730// 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>
2731// CHECK-NEXT: <key>message</key>
2732// 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>
2733// CHECK-NEXT: </dict>
2734// CHECK-NEXT: <dict>
2735// CHECK-NEXT: <key>kind</key><string>control</string>
2736// CHECK-NEXT: <key>edges</key>
2737// CHECK-NEXT: <array>
2738// CHECK-NEXT: <dict>
2739// CHECK-NEXT: <key>start</key>
2740// CHECK-NEXT: <array>
2741// CHECK-NEXT: <dict>
2742// CHECK-NEXT: <key>line</key><integer>195</integer>
2743// CHECK-NEXT: <key>col</key><integer>3</integer>
2744// CHECK-NEXT: <key>file</key><integer>0</integer>
2745// CHECK-NEXT: </dict>
2746// CHECK-NEXT: <dict>
2747// CHECK-NEXT: <key>line</key><integer>195</integer>
2748// CHECK-NEXT: <key>col</key><integer>3</integer>
2749// CHECK-NEXT: <key>file</key><integer>0</integer>
2750// CHECK-NEXT: </dict>
2751// CHECK-NEXT: </array>
2752// CHECK-NEXT: <key>end</key>
2753// CHECK-NEXT: <array>
2754// CHECK-NEXT: <dict>
2755// CHECK-NEXT: <key>line</key><integer>201</integer>
2756// CHECK-NEXT: <key>col</key><integer>3</integer>
2757// CHECK-NEXT: <key>file</key><integer>0</integer>
2758// CHECK-NEXT: </dict>
2759// CHECK-NEXT: <dict>
2760// CHECK-NEXT: <key>line</key><integer>201</integer>
2761// CHECK-NEXT: <key>col</key><integer>3</integer>
2762// CHECK-NEXT: <key>file</key><integer>0</integer>
2763// CHECK-NEXT: </dict>
2764// CHECK-NEXT: </array>
2765// CHECK-NEXT: </dict>
2766// CHECK-NEXT: </array>
2767// CHECK-NEXT: </dict>
2768// CHECK-NEXT: <dict>
2769// CHECK-NEXT: <key>kind</key><string>event</string>
2770// CHECK-NEXT: <key>location</key>
2771// CHECK-NEXT: <dict>
2772// CHECK-NEXT: <key>line</key><integer>201</integer>
2773// CHECK-NEXT: <key>col</key><integer>3</integer>
2774// CHECK-NEXT: <key>file</key><integer>0</integer>
2775// CHECK-NEXT: </dict>
2776// CHECK-NEXT: <key>ranges</key>
2777// CHECK-NEXT: <array>
2778// CHECK-NEXT: <array>
2779// CHECK-NEXT: <dict>
2780// CHECK-NEXT: <key>line</key><integer>201</integer>
2781// CHECK-NEXT: <key>col</key><integer>17</integer>
2782// CHECK-NEXT: <key>file</key><integer>0</integer>
2783// CHECK-NEXT: </dict>
2784// CHECK-NEXT: <dict>
2785// CHECK-NEXT: <key>line</key><integer>201</integer>
2786// CHECK-NEXT: <key>col</key><integer>39</integer>
2787// CHECK-NEXT: <key>file</key><integer>0</integer>
2788// CHECK-NEXT: </dict>
2789// CHECK-NEXT: </array>
2790// CHECK-NEXT: </array>
2791// CHECK-NEXT: <key>depth</key><integer>0</integer>
2792// CHECK-NEXT: <key>extended_message</key>
2793// CHECK-NEXT: <string>Conversion from value of type &apos;NSNumber *&apos; to incompatible type &apos;NSString *&apos;</string>
2794// CHECK-NEXT: <key>message</key>
2795// CHECK-NEXT: <string>Conversion from value of type &apos;NSNumber *&apos; to incompatible type &apos;NSString *&apos;</string>
2796// CHECK-NEXT: </dict>
2797// CHECK-NEXT: </array>
2798// CHECK-NEXT: <key>description</key><string>Conversion from value of type &apos;NSNumber *&apos; to incompatible type &apos;NSString *&apos;</string>
2799// CHECK-NEXT: <key>category</key><string>Core Foundation/Objective-C</string>
2800// CHECK-NEXT: <key>type</key><string>Generics</string>
2801// CHECK-NEXT: <key>check_name</key><string>core.DynamicTypePropagation</string>
2802// CHECK-NEXT: <!-- This hash is experimental and going to change! -->
2803// CHECK-NEXT: <key>issue_hash_content_of_line_in_context</key><string>cbb926c9de226a3eac85fb961a93f39a</string>
2804// CHECK-NEXT: <key>issue_context_kind</key><string>function</string>
2805// CHECK-NEXT: <key>issue_context</key><string>genericSubtypeOfGeneric</string>
2806// CHECK-NEXT: <key>issue_hash_function_offset</key><string>7</string>
2807// CHECK-NEXT: <key>location</key>
2808// CHECK-NEXT: <dict>
2809// CHECK-NEXT: <key>line</key><integer>201</integer>
2810// CHECK-NEXT: <key>col</key><integer>3</integer>
2811// CHECK-NEXT: <key>file</key><integer>0</integer>
2812// CHECK-NEXT: </dict>
2813// CHECK-NEXT: </dict>
2814// CHECK-NEXT: <dict>
2815// CHECK-NEXT: <key>path</key>
2816// CHECK-NEXT: <array>
2817// CHECK-NEXT: <dict>
2818// CHECK-NEXT: <key>kind</key><string>event</string>
2819// CHECK-NEXT: <key>location</key>
2820// CHECK-NEXT: <dict>
2821// CHECK-NEXT: <key>line</key><integer>207</integer>
2822// CHECK-NEXT: <key>col</key><integer>7</integer>
2823// CHECK-NEXT: <key>file</key><integer>0</integer>
2824// CHECK-NEXT: </dict>
2825// CHECK-NEXT: <key>ranges</key>
2826// CHECK-NEXT: <array>
2827// CHECK-NEXT: <array>
2828// CHECK-NEXT: <dict>
2829// CHECK-NEXT: <key>line</key><integer>207</integer>
2830// CHECK-NEXT: <key>col</key><integer>7</integer>
2831// CHECK-NEXT: <key>file</key><integer>0</integer>
2832// CHECK-NEXT: </dict>
2833// CHECK-NEXT: <dict>
2834// CHECK-NEXT: <key>line</key><integer>207</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00002835// CHECK-NEXT: <key>col</key><integer>7</integer>
2836// CHECK-NEXT: <key>file</key><integer>0</integer>
2837// CHECK-NEXT: </dict>
2838// CHECK-NEXT: </array>
2839// CHECK-NEXT: </array>
2840// CHECK-NEXT: <key>depth</key><integer>0</integer>
2841// CHECK-NEXT: <key>extended_message</key>
2842// 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>
2843// CHECK-NEXT: <key>message</key>
2844// 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 +00002845// CHECK-NEXT: </dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00002846// CHECK-NEXT: <dict>
2847// CHECK-NEXT: <key>kind</key><string>control</string>
2848// CHECK-NEXT: <key>edges</key>
Gabor Horvathefec1632015-10-22 11:53:04 +00002849// CHECK-NEXT: <array>
2850// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00002851// CHECK-NEXT: <key>start</key>
2852// CHECK-NEXT: <array>
2853// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00002854// CHECK-NEXT: <key>line</key><integer>207</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00002855// CHECK-NEXT: <key>col</key><integer>3</integer>
2856// CHECK-NEXT: <key>file</key><integer>0</integer>
2857// CHECK-NEXT: </dict>
2858// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00002859// CHECK-NEXT: <key>line</key><integer>207</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00002860// CHECK-NEXT: <key>col</key><integer>3</integer>
2861// CHECK-NEXT: <key>file</key><integer>0</integer>
2862// CHECK-NEXT: </dict>
2863// CHECK-NEXT: </array>
2864// CHECK-NEXT: <key>end</key>
2865// CHECK-NEXT: <array>
2866// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00002867// CHECK-NEXT: <key>line</key><integer>211</integer>
2868// CHECK-NEXT: <key>col</key><integer>3</integer>
2869// CHECK-NEXT: <key>file</key><integer>0</integer>
2870// CHECK-NEXT: </dict>
2871// CHECK-NEXT: <dict>
2872// CHECK-NEXT: <key>line</key><integer>211</integer>
2873// CHECK-NEXT: <key>col</key><integer>3</integer>
2874// CHECK-NEXT: <key>file</key><integer>0</integer>
2875// CHECK-NEXT: </dict>
2876// CHECK-NEXT: </array>
2877// CHECK-NEXT: </dict>
2878// CHECK-NEXT: </array>
2879// CHECK-NEXT: </dict>
2880// CHECK-NEXT: <dict>
2881// CHECK-NEXT: <key>kind</key><string>control</string>
2882// CHECK-NEXT: <key>edges</key>
2883// CHECK-NEXT: <array>
2884// CHECK-NEXT: <dict>
2885// CHECK-NEXT: <key>start</key>
2886// CHECK-NEXT: <array>
2887// CHECK-NEXT: <dict>
2888// CHECK-NEXT: <key>line</key><integer>211</integer>
2889// CHECK-NEXT: <key>col</key><integer>3</integer>
2890// CHECK-NEXT: <key>file</key><integer>0</integer>
2891// CHECK-NEXT: </dict>
2892// CHECK-NEXT: <dict>
2893// CHECK-NEXT: <key>line</key><integer>211</integer>
2894// CHECK-NEXT: <key>col</key><integer>3</integer>
2895// CHECK-NEXT: <key>file</key><integer>0</integer>
2896// CHECK-NEXT: </dict>
2897// CHECK-NEXT: </array>
2898// CHECK-NEXT: <key>end</key>
2899// CHECK-NEXT: <array>
2900// CHECK-NEXT: <dict>
2901// CHECK-NEXT: <key>line</key><integer>211</integer>
2902// CHECK-NEXT: <key>col</key><integer>7</integer>
2903// CHECK-NEXT: <key>file</key><integer>0</integer>
2904// CHECK-NEXT: </dict>
2905// CHECK-NEXT: <dict>
2906// CHECK-NEXT: <key>line</key><integer>211</integer>
2907// CHECK-NEXT: <key>col</key><integer>7</integer>
2908// CHECK-NEXT: <key>file</key><integer>0</integer>
2909// CHECK-NEXT: </dict>
2910// CHECK-NEXT: </array>
2911// CHECK-NEXT: </dict>
2912// CHECK-NEXT: </array>
2913// CHECK-NEXT: </dict>
2914// CHECK-NEXT: <dict>
2915// CHECK-NEXT: <key>kind</key><string>event</string>
2916// CHECK-NEXT: <key>location</key>
2917// CHECK-NEXT: <dict>
2918// CHECK-NEXT: <key>line</key><integer>211</integer>
2919// CHECK-NEXT: <key>col</key><integer>7</integer>
2920// CHECK-NEXT: <key>file</key><integer>0</integer>
2921// CHECK-NEXT: </dict>
2922// CHECK-NEXT: <key>ranges</key>
2923// CHECK-NEXT: <array>
2924// CHECK-NEXT: <array>
2925// CHECK-NEXT: <dict>
2926// CHECK-NEXT: <key>line</key><integer>211</integer>
2927// CHECK-NEXT: <key>col</key><integer>7</integer>
2928// CHECK-NEXT: <key>file</key><integer>0</integer>
2929// CHECK-NEXT: </dict>
2930// CHECK-NEXT: <dict>
2931// CHECK-NEXT: <key>line</key><integer>211</integer>
2932// CHECK-NEXT: <key>col</key><integer>7</integer>
2933// CHECK-NEXT: <key>file</key><integer>0</integer>
2934// CHECK-NEXT: </dict>
2935// CHECK-NEXT: </array>
2936// CHECK-NEXT: </array>
2937// CHECK-NEXT: <key>depth</key><integer>0</integer>
2938// CHECK-NEXT: <key>extended_message</key>
2939// CHECK-NEXT: <string>Conversion from value of type &apos;ExceptionalArray&lt;NSString *&gt; *&apos; to incompatible type &apos;MutableArray&lt;NSNumber *&gt; *&apos;</string>
2940// CHECK-NEXT: <key>message</key>
2941// CHECK-NEXT: <string>Conversion from value of type &apos;ExceptionalArray&lt;NSString *&gt; *&apos; to incompatible type &apos;MutableArray&lt;NSNumber *&gt; *&apos;</string>
2942// CHECK-NEXT: </dict>
2943// CHECK-NEXT: </array>
2944// 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>
2945// CHECK-NEXT: <key>category</key><string>Core Foundation/Objective-C</string>
2946// CHECK-NEXT: <key>type</key><string>Generics</string>
2947// CHECK-NEXT: <key>check_name</key><string>core.DynamicTypePropagation</string>
2948// CHECK-NEXT: <!-- This hash is experimental and going to change! -->
2949// CHECK-NEXT: <key>issue_hash_content_of_line_in_context</key><string>b6ee3b22fbad45f213b4bf14bec7eeaf</string>
2950// CHECK-NEXT: <key>issue_context_kind</key><string>function</string>
2951// CHECK-NEXT: <key>issue_context</key><string>genericSubtypeOfGenericReverse</string>
2952// CHECK-NEXT: <key>issue_hash_function_offset</key><string>5</string>
2953// CHECK-NEXT: <key>location</key>
2954// CHECK-NEXT: <dict>
2955// CHECK-NEXT: <key>line</key><integer>211</integer>
2956// CHECK-NEXT: <key>col</key><integer>7</integer>
2957// CHECK-NEXT: <key>file</key><integer>0</integer>
2958// CHECK-NEXT: </dict>
2959// CHECK-NEXT: </dict>
2960// CHECK-NEXT: <dict>
2961// CHECK-NEXT: <key>path</key>
2962// CHECK-NEXT: <array>
2963// CHECK-NEXT: <dict>
2964// CHECK-NEXT: <key>kind</key><string>event</string>
2965// CHECK-NEXT: <key>location</key>
2966// CHECK-NEXT: <dict>
2967// CHECK-NEXT: <key>line</key><integer>207</integer>
2968// CHECK-NEXT: <key>col</key><integer>7</integer>
2969// CHECK-NEXT: <key>file</key><integer>0</integer>
2970// CHECK-NEXT: </dict>
2971// CHECK-NEXT: <key>ranges</key>
2972// CHECK-NEXT: <array>
2973// CHECK-NEXT: <array>
2974// CHECK-NEXT: <dict>
2975// CHECK-NEXT: <key>line</key><integer>207</integer>
2976// CHECK-NEXT: <key>col</key><integer>7</integer>
2977// CHECK-NEXT: <key>file</key><integer>0</integer>
2978// CHECK-NEXT: </dict>
2979// CHECK-NEXT: <dict>
2980// CHECK-NEXT: <key>line</key><integer>207</integer>
2981// CHECK-NEXT: <key>col</key><integer>7</integer>
2982// CHECK-NEXT: <key>file</key><integer>0</integer>
2983// CHECK-NEXT: </dict>
2984// CHECK-NEXT: </array>
2985// CHECK-NEXT: </array>
2986// CHECK-NEXT: <key>depth</key><integer>0</integer>
2987// CHECK-NEXT: <key>extended_message</key>
2988// 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>
2989// CHECK-NEXT: <key>message</key>
2990// 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>
2991// CHECK-NEXT: </dict>
2992// CHECK-NEXT: <dict>
2993// CHECK-NEXT: <key>kind</key><string>control</string>
2994// CHECK-NEXT: <key>edges</key>
2995// CHECK-NEXT: <array>
2996// CHECK-NEXT: <dict>
2997// CHECK-NEXT: <key>start</key>
2998// CHECK-NEXT: <array>
2999// CHECK-NEXT: <dict>
3000// CHECK-NEXT: <key>line</key><integer>207</integer>
3001// CHECK-NEXT: <key>col</key><integer>3</integer>
3002// CHECK-NEXT: <key>file</key><integer>0</integer>
3003// CHECK-NEXT: </dict>
3004// CHECK-NEXT: <dict>
3005// CHECK-NEXT: <key>line</key><integer>207</integer>
3006// CHECK-NEXT: <key>col</key><integer>3</integer>
3007// CHECK-NEXT: <key>file</key><integer>0</integer>
3008// CHECK-NEXT: </dict>
3009// CHECK-NEXT: </array>
3010// CHECK-NEXT: <key>end</key>
3011// CHECK-NEXT: <array>
3012// CHECK-NEXT: <dict>
3013// CHECK-NEXT: <key>line</key><integer>213</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00003014// CHECK-NEXT: <key>col</key><integer>2</integer>
3015// CHECK-NEXT: <key>file</key><integer>0</integer>
3016// CHECK-NEXT: </dict>
3017// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00003018// CHECK-NEXT: <key>line</key><integer>213</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00003019// CHECK-NEXT: <key>col</key><integer>2</integer>
3020// CHECK-NEXT: <key>file</key><integer>0</integer>
3021// CHECK-NEXT: </dict>
3022// CHECK-NEXT: </array>
Gabor Horvathefec1632015-10-22 11:53:04 +00003023// CHECK-NEXT: </dict>
3024// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +00003025// CHECK-NEXT: </dict>
Gabor Horvathefec1632015-10-22 11:53:04 +00003026// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00003027// CHECK-NEXT: <key>kind</key><string>event</string>
3028// CHECK-NEXT: <key>location</key>
3029// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00003030// CHECK-NEXT: <key>line</key><integer>213</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00003031// CHECK-NEXT: <key>col</key><integer>2</integer>
3032// CHECK-NEXT: <key>file</key><integer>0</integer>
3033// CHECK-NEXT: </dict>
3034// CHECK-NEXT: <key>ranges</key>
Gabor Horvathefec1632015-10-22 11:53:04 +00003035// CHECK-NEXT: <array>
Devin Coughlinab139a92016-12-05 16:28:47 +00003036// CHECK-NEXT: <array>
3037// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00003038// CHECK-NEXT: <key>line</key><integer>213</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00003039// CHECK-NEXT: <key>col</key><integer>16</integer>
3040// CHECK-NEXT: <key>file</key><integer>0</integer>
3041// CHECK-NEXT: </dict>
3042// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00003043// CHECK-NEXT: <key>line</key><integer>213</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00003044// CHECK-NEXT: <key>col</key><integer>38</integer>
3045// CHECK-NEXT: <key>file</key><integer>0</integer>
3046// CHECK-NEXT: </dict>
3047// CHECK-NEXT: </array>
Gabor Horvathefec1632015-10-22 11:53:04 +00003048// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +00003049// CHECK-NEXT: <key>depth</key><integer>0</integer>
3050// CHECK-NEXT: <key>extended_message</key>
3051// CHECK-NEXT: <string>Conversion from value of type &apos;NSNumber *&apos; to incompatible type &apos;NSString *&apos;</string>
3052// CHECK-NEXT: <key>message</key>
3053// CHECK-NEXT: <string>Conversion from value of type &apos;NSNumber *&apos; to incompatible type &apos;NSString *&apos;</string>
3054// CHECK-NEXT: </dict>
3055// CHECK-NEXT: </array>
3056// CHECK-NEXT: <key>description</key><string>Conversion from value of type &apos;NSNumber *&apos; to incompatible type &apos;NSString *&apos;</string>
3057// CHECK-NEXT: <key>category</key><string>Core Foundation/Objective-C</string>
3058// CHECK-NEXT: <key>type</key><string>Generics</string>
3059// CHECK-NEXT: <key>check_name</key><string>core.DynamicTypePropagation</string>
3060// CHECK-NEXT: <!-- This hash is experimental and going to change! -->
3061// CHECK-NEXT: <key>issue_hash_content_of_line_in_context</key><string>6561f05506a8ceca3afc79fc59912b94</string>
3062// CHECK-NEXT: <key>issue_context_kind</key><string>function</string>
3063// CHECK-NEXT: <key>issue_context</key><string>genericSubtypeOfGenericReverse</string>
3064// CHECK-NEXT: <key>issue_hash_function_offset</key><string>7</string>
3065// CHECK-NEXT: <key>location</key>
3066// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00003067// CHECK-NEXT: <key>line</key><integer>213</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00003068// CHECK-NEXT: <key>col</key><integer>2</integer>
3069// CHECK-NEXT: <key>file</key><integer>0</integer>
3070// CHECK-NEXT: </dict>
3071// CHECK-NEXT: </dict>
3072// CHECK-NEXT: <dict>
3073// CHECK-NEXT: <key>path</key>
3074// CHECK-NEXT: <array>
3075// CHECK-NEXT: <dict>
3076// CHECK-NEXT: <key>kind</key><string>event</string>
3077// CHECK-NEXT: <key>location</key>
3078// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00003079// CHECK-NEXT: <key>line</key><integer>219</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00003080// CHECK-NEXT: <key>col</key><integer>20</integer>
3081// CHECK-NEXT: <key>file</key><integer>0</integer>
3082// CHECK-NEXT: </dict>
3083// CHECK-NEXT: <key>ranges</key>
Gabor Horvathefec1632015-10-22 11:53:04 +00003084// CHECK-NEXT: <array>
Devin Coughlinab139a92016-12-05 16:28:47 +00003085// CHECK-NEXT: <array>
3086// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00003087// CHECK-NEXT: <key>line</key><integer>219</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00003088// CHECK-NEXT: <key>col</key><integer>20</integer>
3089// CHECK-NEXT: <key>file</key><integer>0</integer>
3090// CHECK-NEXT: </dict>
3091// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00003092// CHECK-NEXT: <key>line</key><integer>219</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00003093// CHECK-NEXT: <key>col</key><integer>20</integer>
3094// CHECK-NEXT: <key>file</key><integer>0</integer>
3095// CHECK-NEXT: </dict>
3096// CHECK-NEXT: </array>
Gabor Horvathefec1632015-10-22 11:53:04 +00003097// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +00003098// CHECK-NEXT: <key>depth</key><integer>0</integer>
3099// CHECK-NEXT: <key>extended_message</key>
3100// 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>
3101// CHECK-NEXT: <key>message</key>
3102// 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>
3103// CHECK-NEXT: </dict>
Gabor Horvathefec1632015-10-22 11:53:04 +00003104// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00003105// CHECK-NEXT: <key>kind</key><string>control</string>
3106// CHECK-NEXT: <key>edges</key>
Gabor Horvathefec1632015-10-22 11:53:04 +00003107// CHECK-NEXT: <array>
3108// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00003109// CHECK-NEXT: <key>start</key>
3110// CHECK-NEXT: <array>
3111// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00003112// CHECK-NEXT: <key>line</key><integer>219</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00003113// CHECK-NEXT: <key>col</key><integer>3</integer>
3114// CHECK-NEXT: <key>file</key><integer>0</integer>
3115// CHECK-NEXT: </dict>
3116// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00003117// CHECK-NEXT: <key>line</key><integer>219</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00003118// CHECK-NEXT: <key>col</key><integer>18</integer>
3119// CHECK-NEXT: <key>file</key><integer>0</integer>
3120// CHECK-NEXT: </dict>
3121// CHECK-NEXT: </array>
3122// CHECK-NEXT: <key>end</key>
3123// CHECK-NEXT: <array>
3124// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00003125// CHECK-NEXT: <key>line</key><integer>220</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00003126// CHECK-NEXT: <key>col</key><integer>3</integer>
3127// CHECK-NEXT: <key>file</key><integer>0</integer>
3128// CHECK-NEXT: </dict>
3129// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00003130// CHECK-NEXT: <key>line</key><integer>220</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00003131// CHECK-NEXT: <key>col</key><integer>25</integer>
3132// CHECK-NEXT: <key>file</key><integer>0</integer>
3133// CHECK-NEXT: </dict>
3134// CHECK-NEXT: </array>
Gabor Horvathefec1632015-10-22 11:53:04 +00003135// CHECK-NEXT: </dict>
3136// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +00003137// CHECK-NEXT: </dict>
Gabor Horvathefec1632015-10-22 11:53:04 +00003138// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00003139// CHECK-NEXT: <key>kind</key><string>control</string>
3140// CHECK-NEXT: <key>edges</key>
Gabor Horvathefec1632015-10-22 11:53:04 +00003141// CHECK-NEXT: <array>
3142// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00003143// CHECK-NEXT: <key>start</key>
3144// CHECK-NEXT: <array>
3145// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00003146// CHECK-NEXT: <key>line</key><integer>220</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00003147// CHECK-NEXT: <key>col</key><integer>3</integer>
3148// CHECK-NEXT: <key>file</key><integer>0</integer>
3149// CHECK-NEXT: </dict>
3150// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00003151// CHECK-NEXT: <key>line</key><integer>220</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00003152// CHECK-NEXT: <key>col</key><integer>25</integer>
3153// CHECK-NEXT: <key>file</key><integer>0</integer>
3154// CHECK-NEXT: </dict>
3155// CHECK-NEXT: </array>
3156// CHECK-NEXT: <key>end</key>
3157// CHECK-NEXT: <array>
3158// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00003159// CHECK-NEXT: <key>line</key><integer>220</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00003160// CHECK-NEXT: <key>col</key><integer>27</integer>
3161// CHECK-NEXT: <key>file</key><integer>0</integer>
3162// CHECK-NEXT: </dict>
3163// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00003164// CHECK-NEXT: <key>line</key><integer>220</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00003165// CHECK-NEXT: <key>col</key><integer>27</integer>
3166// CHECK-NEXT: <key>file</key><integer>0</integer>
3167// CHECK-NEXT: </dict>
3168// CHECK-NEXT: </array>
Gabor Horvathefec1632015-10-22 11:53:04 +00003169// CHECK-NEXT: </dict>
3170// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +00003171// CHECK-NEXT: </dict>
3172// CHECK-NEXT: <dict>
3173// CHECK-NEXT: <key>kind</key><string>event</string>
3174// CHECK-NEXT: <key>location</key>
3175// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00003176// CHECK-NEXT: <key>line</key><integer>220</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00003177// CHECK-NEXT: <key>col</key><integer>27</integer>
3178// CHECK-NEXT: <key>file</key><integer>0</integer>
3179// CHECK-NEXT: </dict>
3180// CHECK-NEXT: <key>ranges</key>
Gabor Horvathefec1632015-10-22 11:53:04 +00003181// CHECK-NEXT: <array>
Devin Coughlinab139a92016-12-05 16:28:47 +00003182// CHECK-NEXT: <array>
3183// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00003184// CHECK-NEXT: <key>line</key><integer>220</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00003185// CHECK-NEXT: <key>col</key><integer>27</integer>
3186// CHECK-NEXT: <key>file</key><integer>0</integer>
3187// CHECK-NEXT: </dict>
3188// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00003189// CHECK-NEXT: <key>line</key><integer>220</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00003190// CHECK-NEXT: <key>col</key><integer>27</integer>
3191// CHECK-NEXT: <key>file</key><integer>0</integer>
3192// CHECK-NEXT: </dict>
3193// CHECK-NEXT: </array>
Gabor Horvathefec1632015-10-22 11:53:04 +00003194// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +00003195// CHECK-NEXT: <key>depth</key><integer>0</integer>
3196// CHECK-NEXT: <key>extended_message</key>
3197// CHECK-NEXT: <string>Conversion from value of type &apos;MutableArray&lt;NSString *&gt; *&apos; to incompatible type &apos;MutableArray&lt;NSMutableString *&gt; *&apos;</string>
3198// CHECK-NEXT: <key>message</key>
3199// CHECK-NEXT: <string>Conversion from value of type &apos;MutableArray&lt;NSString *&gt; *&apos; to incompatible type &apos;MutableArray&lt;NSMutableString *&gt; *&apos;</string>
3200// CHECK-NEXT: </dict>
3201// CHECK-NEXT: </array>
3202// 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>
3203// CHECK-NEXT: <key>category</key><string>Core Foundation/Objective-C</string>
3204// CHECK-NEXT: <key>type</key><string>Generics</string>
3205// CHECK-NEXT: <key>check_name</key><string>core.DynamicTypePropagation</string>
3206// CHECK-NEXT: <!-- This hash is experimental and going to change! -->
3207// CHECK-NEXT: <key>issue_hash_content_of_line_in_context</key><string>6aab15d40b39ec0a6b749e561d486e6a</string>
3208// CHECK-NEXT: <key>issue_context_kind</key><string>function</string>
3209// CHECK-NEXT: <key>issue_context</key><string>inferenceFromAPI</string>
3210// CHECK-NEXT: <key>issue_hash_function_offset</key><string>4</string>
3211// CHECK-NEXT: <key>location</key>
3212// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00003213// CHECK-NEXT: <key>line</key><integer>220</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00003214// CHECK-NEXT: <key>col</key><integer>27</integer>
3215// CHECK-NEXT: <key>file</key><integer>0</integer>
3216// CHECK-NEXT: </dict>
3217// CHECK-NEXT: </dict>
3218// CHECK-NEXT: <dict>
3219// CHECK-NEXT: <key>path</key>
3220// CHECK-NEXT: <array>
3221// CHECK-NEXT: <dict>
3222// CHECK-NEXT: <key>kind</key><string>event</string>
3223// CHECK-NEXT: <key>location</key>
3224// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00003225// CHECK-NEXT: <key>line</key><integer>224</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00003226// CHECK-NEXT: <key>col</key><integer>27</integer>
3227// CHECK-NEXT: <key>file</key><integer>0</integer>
3228// CHECK-NEXT: </dict>
3229// CHECK-NEXT: <key>ranges</key>
Gabor Horvathefec1632015-10-22 11:53:04 +00003230// CHECK-NEXT: <array>
Devin Coughlinab139a92016-12-05 16:28:47 +00003231// CHECK-NEXT: <array>
3232// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00003233// CHECK-NEXT: <key>line</key><integer>224</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00003234// CHECK-NEXT: <key>col</key><integer>27</integer>
3235// CHECK-NEXT: <key>file</key><integer>0</integer>
3236// CHECK-NEXT: </dict>
3237// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00003238// CHECK-NEXT: <key>line</key><integer>224</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00003239// CHECK-NEXT: <key>col</key><integer>27</integer>
3240// CHECK-NEXT: <key>file</key><integer>0</integer>
3241// CHECK-NEXT: </dict>
3242// CHECK-NEXT: </array>
Gabor Horvathefec1632015-10-22 11:53:04 +00003243// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +00003244// CHECK-NEXT: <key>depth</key><integer>0</integer>
3245// CHECK-NEXT: <key>extended_message</key>
3246// 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>
3247// CHECK-NEXT: <key>message</key>
3248// 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>
3249// CHECK-NEXT: </dict>
Gabor Horvathefec1632015-10-22 11:53:04 +00003250// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00003251// CHECK-NEXT: <key>kind</key><string>control</string>
3252// CHECK-NEXT: <key>edges</key>
Gabor Horvathefec1632015-10-22 11:53:04 +00003253// CHECK-NEXT: <array>
3254// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00003255// CHECK-NEXT: <key>start</key>
3256// CHECK-NEXT: <array>
3257// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00003258// CHECK-NEXT: <key>line</key><integer>224</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00003259// CHECK-NEXT: <key>col</key><integer>3</integer>
3260// CHECK-NEXT: <key>file</key><integer>0</integer>
3261// CHECK-NEXT: </dict>
3262// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00003263// CHECK-NEXT: <key>line</key><integer>224</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00003264// CHECK-NEXT: <key>col</key><integer>25</integer>
3265// CHECK-NEXT: <key>file</key><integer>0</integer>
3266// CHECK-NEXT: </dict>
3267// CHECK-NEXT: </array>
3268// CHECK-NEXT: <key>end</key>
3269// CHECK-NEXT: <array>
3270// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00003271// CHECK-NEXT: <key>line</key><integer>225</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00003272// CHECK-NEXT: <key>col</key><integer>3</integer>
3273// CHECK-NEXT: <key>file</key><integer>0</integer>
3274// CHECK-NEXT: </dict>
3275// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00003276// CHECK-NEXT: <key>line</key><integer>225</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00003277// CHECK-NEXT: <key>col</key><integer>18</integer>
3278// CHECK-NEXT: <key>file</key><integer>0</integer>
3279// CHECK-NEXT: </dict>
3280// CHECK-NEXT: </array>
Gabor Horvathefec1632015-10-22 11:53:04 +00003281// CHECK-NEXT: </dict>
3282// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +00003283// CHECK-NEXT: </dict>
Gabor Horvathefec1632015-10-22 11:53:04 +00003284// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00003285// CHECK-NEXT: <key>kind</key><string>control</string>
3286// CHECK-NEXT: <key>edges</key>
Gabor Horvathefec1632015-10-22 11:53:04 +00003287// CHECK-NEXT: <array>
3288// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00003289// CHECK-NEXT: <key>start</key>
3290// CHECK-NEXT: <array>
3291// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00003292// CHECK-NEXT: <key>line</key><integer>225</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00003293// CHECK-NEXT: <key>col</key><integer>3</integer>
3294// CHECK-NEXT: <key>file</key><integer>0</integer>
3295// CHECK-NEXT: </dict>
3296// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00003297// CHECK-NEXT: <key>line</key><integer>225</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00003298// CHECK-NEXT: <key>col</key><integer>18</integer>
3299// CHECK-NEXT: <key>file</key><integer>0</integer>
3300// CHECK-NEXT: </dict>
3301// CHECK-NEXT: </array>
3302// CHECK-NEXT: <key>end</key>
3303// CHECK-NEXT: <array>
3304// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00003305// CHECK-NEXT: <key>line</key><integer>225</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00003306// CHECK-NEXT: <key>col</key><integer>20</integer>
3307// CHECK-NEXT: <key>file</key><integer>0</integer>
3308// CHECK-NEXT: </dict>
3309// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00003310// CHECK-NEXT: <key>line</key><integer>225</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00003311// CHECK-NEXT: <key>col</key><integer>20</integer>
3312// CHECK-NEXT: <key>file</key><integer>0</integer>
3313// CHECK-NEXT: </dict>
3314// CHECK-NEXT: </array>
Gabor Horvathefec1632015-10-22 11:53:04 +00003315// CHECK-NEXT: </dict>
3316// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +00003317// CHECK-NEXT: </dict>
3318// CHECK-NEXT: <dict>
3319// CHECK-NEXT: <key>kind</key><string>event</string>
3320// CHECK-NEXT: <key>location</key>
3321// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00003322// CHECK-NEXT: <key>line</key><integer>225</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00003323// CHECK-NEXT: <key>col</key><integer>20</integer>
3324// CHECK-NEXT: <key>file</key><integer>0</integer>
3325// CHECK-NEXT: </dict>
3326// CHECK-NEXT: <key>ranges</key>
Gabor Horvathefec1632015-10-22 11:53:04 +00003327// CHECK-NEXT: <array>
Devin Coughlinab139a92016-12-05 16:28:47 +00003328// CHECK-NEXT: <array>
3329// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00003330// CHECK-NEXT: <key>line</key><integer>225</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00003331// CHECK-NEXT: <key>col</key><integer>20</integer>
3332// CHECK-NEXT: <key>file</key><integer>0</integer>
3333// CHECK-NEXT: </dict>
3334// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00003335// CHECK-NEXT: <key>line</key><integer>225</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00003336// CHECK-NEXT: <key>col</key><integer>20</integer>
3337// CHECK-NEXT: <key>file</key><integer>0</integer>
3338// CHECK-NEXT: </dict>
3339// CHECK-NEXT: </array>
Gabor Horvathefec1632015-10-22 11:53:04 +00003340// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +00003341// CHECK-NEXT: <key>depth</key><integer>0</integer>
3342// CHECK-NEXT: <key>extended_message</key>
3343// CHECK-NEXT: <string>Conversion from value of type &apos;MutableArray&lt;NSMutableString *&gt; *&apos; to incompatible type &apos;MutableArray&lt;NSString *&gt; *&apos;</string>
3344// CHECK-NEXT: <key>message</key>
3345// CHECK-NEXT: <string>Conversion from value of type &apos;MutableArray&lt;NSMutableString *&gt; *&apos; to incompatible type &apos;MutableArray&lt;NSString *&gt; *&apos;</string>
3346// CHECK-NEXT: </dict>
3347// CHECK-NEXT: </array>
3348// 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>
3349// CHECK-NEXT: <key>category</key><string>Core Foundation/Objective-C</string>
3350// CHECK-NEXT: <key>type</key><string>Generics</string>
3351// CHECK-NEXT: <key>check_name</key><string>core.DynamicTypePropagation</string>
3352// CHECK-NEXT: <!-- This hash is experimental and going to change! -->
3353// CHECK-NEXT: <key>issue_hash_content_of_line_in_context</key><string>bd1da1b7775323773555e5d5c122661f</string>
3354// CHECK-NEXT: <key>issue_context_kind</key><string>function</string>
3355// CHECK-NEXT: <key>issue_context</key><string>inferenceFromAPI2</string>
3356// CHECK-NEXT: <key>issue_hash_function_offset</key><string>2</string>
3357// CHECK-NEXT: <key>location</key>
3358// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00003359// CHECK-NEXT: <key>line</key><integer>225</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00003360// CHECK-NEXT: <key>col</key><integer>20</integer>
3361// CHECK-NEXT: <key>file</key><integer>0</integer>
3362// CHECK-NEXT: </dict>
3363// CHECK-NEXT: </dict>
3364// CHECK-NEXT: <dict>
3365// CHECK-NEXT: <key>path</key>
3366// CHECK-NEXT: <array>
3367// CHECK-NEXT: <dict>
3368// CHECK-NEXT: <key>kind</key><string>event</string>
3369// CHECK-NEXT: <key>location</key>
3370// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00003371// CHECK-NEXT: <key>line</key><integer>229</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00003372// CHECK-NEXT: <key>col</key><integer>27</integer>
3373// CHECK-NEXT: <key>file</key><integer>0</integer>
3374// CHECK-NEXT: </dict>
3375// CHECK-NEXT: <key>ranges</key>
Gabor Horvathefec1632015-10-22 11:53:04 +00003376// CHECK-NEXT: <array>
Devin Coughlinab139a92016-12-05 16:28:47 +00003377// CHECK-NEXT: <array>
3378// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00003379// CHECK-NEXT: <key>line</key><integer>229</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00003380// CHECK-NEXT: <key>col</key><integer>27</integer>
3381// CHECK-NEXT: <key>file</key><integer>0</integer>
3382// CHECK-NEXT: </dict>
3383// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00003384// CHECK-NEXT: <key>line</key><integer>229</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00003385// CHECK-NEXT: <key>col</key><integer>27</integer>
3386// CHECK-NEXT: <key>file</key><integer>0</integer>
3387// CHECK-NEXT: </dict>
3388// CHECK-NEXT: </array>
Gabor Horvathefec1632015-10-22 11:53:04 +00003389// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +00003390// CHECK-NEXT: <key>depth</key><integer>0</integer>
3391// CHECK-NEXT: <key>extended_message</key>
3392// 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>
3393// CHECK-NEXT: <key>message</key>
3394// 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>
3395// CHECK-NEXT: </dict>
Gabor Horvathefec1632015-10-22 11:53:04 +00003396// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00003397// CHECK-NEXT: <key>kind</key><string>control</string>
3398// CHECK-NEXT: <key>edges</key>
Gabor Horvathefec1632015-10-22 11:53:04 +00003399// CHECK-NEXT: <array>
3400// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00003401// CHECK-NEXT: <key>start</key>
3402// CHECK-NEXT: <array>
3403// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00003404// CHECK-NEXT: <key>line</key><integer>229</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00003405// CHECK-NEXT: <key>col</key><integer>3</integer>
3406// CHECK-NEXT: <key>file</key><integer>0</integer>
3407// CHECK-NEXT: </dict>
3408// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00003409// CHECK-NEXT: <key>line</key><integer>229</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00003410// CHECK-NEXT: <key>col</key><integer>25</integer>
3411// CHECK-NEXT: <key>file</key><integer>0</integer>
3412// CHECK-NEXT: </dict>
3413// CHECK-NEXT: </array>
3414// CHECK-NEXT: <key>end</key>
3415// CHECK-NEXT: <array>
3416// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00003417// CHECK-NEXT: <key>line</key><integer>230</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00003418// CHECK-NEXT: <key>col</key><integer>3</integer>
3419// CHECK-NEXT: <key>file</key><integer>0</integer>
3420// CHECK-NEXT: </dict>
3421// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00003422// CHECK-NEXT: <key>line</key><integer>230</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00003423// CHECK-NEXT: <key>col</key><integer>18</integer>
3424// CHECK-NEXT: <key>file</key><integer>0</integer>
3425// CHECK-NEXT: </dict>
3426// CHECK-NEXT: </array>
Gabor Horvathefec1632015-10-22 11:53:04 +00003427// CHECK-NEXT: </dict>
3428// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +00003429// CHECK-NEXT: </dict>
Gabor Horvathefec1632015-10-22 11:53:04 +00003430// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00003431// CHECK-NEXT: <key>kind</key><string>control</string>
3432// CHECK-NEXT: <key>edges</key>
Gabor Horvathefec1632015-10-22 11:53:04 +00003433// CHECK-NEXT: <array>
3434// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00003435// CHECK-NEXT: <key>start</key>
3436// CHECK-NEXT: <array>
3437// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00003438// CHECK-NEXT: <key>line</key><integer>230</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00003439// CHECK-NEXT: <key>col</key><integer>3</integer>
3440// CHECK-NEXT: <key>file</key><integer>0</integer>
3441// CHECK-NEXT: </dict>
3442// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00003443// CHECK-NEXT: <key>line</key><integer>230</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00003444// CHECK-NEXT: <key>col</key><integer>18</integer>
3445// CHECK-NEXT: <key>file</key><integer>0</integer>
3446// CHECK-NEXT: </dict>
3447// CHECK-NEXT: </array>
3448// CHECK-NEXT: <key>end</key>
3449// CHECK-NEXT: <array>
3450// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00003451// CHECK-NEXT: <key>line</key><integer>230</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00003452// CHECK-NEXT: <key>col</key><integer>20</integer>
3453// CHECK-NEXT: <key>file</key><integer>0</integer>
3454// CHECK-NEXT: </dict>
3455// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00003456// CHECK-NEXT: <key>line</key><integer>230</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00003457// CHECK-NEXT: <key>col</key><integer>20</integer>
3458// CHECK-NEXT: <key>file</key><integer>0</integer>
3459// CHECK-NEXT: </dict>
3460// CHECK-NEXT: </array>
Gabor Horvathefec1632015-10-22 11:53:04 +00003461// CHECK-NEXT: </dict>
3462// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +00003463// CHECK-NEXT: </dict>
3464// CHECK-NEXT: <dict>
3465// CHECK-NEXT: <key>kind</key><string>event</string>
3466// CHECK-NEXT: <key>location</key>
3467// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00003468// CHECK-NEXT: <key>line</key><integer>230</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00003469// CHECK-NEXT: <key>col</key><integer>20</integer>
3470// CHECK-NEXT: <key>file</key><integer>0</integer>
3471// CHECK-NEXT: </dict>
3472// CHECK-NEXT: <key>ranges</key>
Gabor Horvathefec1632015-10-22 11:53:04 +00003473// CHECK-NEXT: <array>
Devin Coughlinab139a92016-12-05 16:28:47 +00003474// CHECK-NEXT: <array>
3475// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00003476// CHECK-NEXT: <key>line</key><integer>230</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00003477// CHECK-NEXT: <key>col</key><integer>20</integer>
3478// CHECK-NEXT: <key>file</key><integer>0</integer>
3479// CHECK-NEXT: </dict>
3480// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00003481// CHECK-NEXT: <key>line</key><integer>230</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00003482// CHECK-NEXT: <key>col</key><integer>20</integer>
3483// CHECK-NEXT: <key>file</key><integer>0</integer>
3484// CHECK-NEXT: </dict>
3485// CHECK-NEXT: </array>
Gabor Horvathefec1632015-10-22 11:53:04 +00003486// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +00003487// CHECK-NEXT: <key>depth</key><integer>0</integer>
3488// CHECK-NEXT: <key>extended_message</key>
3489// CHECK-NEXT: <string>Conversion from value of type &apos;MutableArray&lt;NSMutableString *&gt; *&apos; to incompatible type &apos;MutableArray&lt;NSString *&gt; *&apos;</string>
3490// CHECK-NEXT: <key>message</key>
3491// CHECK-NEXT: <string>Conversion from value of type &apos;MutableArray&lt;NSMutableString *&gt; *&apos; to incompatible type &apos;MutableArray&lt;NSString *&gt; *&apos;</string>
3492// CHECK-NEXT: </dict>
3493// CHECK-NEXT: </array>
3494// 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>
3495// CHECK-NEXT: <key>category</key><string>Core Foundation/Objective-C</string>
3496// CHECK-NEXT: <key>type</key><string>Generics</string>
3497// CHECK-NEXT: <key>check_name</key><string>core.DynamicTypePropagation</string>
3498// CHECK-NEXT: <!-- This hash is experimental and going to change! -->
3499// CHECK-NEXT: <key>issue_hash_content_of_line_in_context</key><string>3f2abd3c0b4b4a80a71bcbb668124ffb</string>
3500// CHECK-NEXT: <key>issue_context_kind</key><string>function</string>
3501// CHECK-NEXT: <key>issue_context</key><string>inferenceFromAPIWithLegacyTypes</string>
3502// CHECK-NEXT: <key>issue_hash_function_offset</key><string>2</string>
3503// CHECK-NEXT: <key>location</key>
3504// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00003505// CHECK-NEXT: <key>line</key><integer>230</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00003506// CHECK-NEXT: <key>col</key><integer>20</integer>
3507// CHECK-NEXT: <key>file</key><integer>0</integer>
3508// CHECK-NEXT: </dict>
3509// CHECK-NEXT: </dict>
3510// CHECK-NEXT: <dict>
3511// CHECK-NEXT: <key>path</key>
3512// CHECK-NEXT: <array>
3513// CHECK-NEXT: <dict>
3514// CHECK-NEXT: <key>kind</key><string>event</string>
3515// CHECK-NEXT: <key>location</key>
3516// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00003517// CHECK-NEXT: <key>line</key><integer>234</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00003518// CHECK-NEXT: <key>col</key><integer>20</integer>
3519// CHECK-NEXT: <key>file</key><integer>0</integer>
3520// CHECK-NEXT: </dict>
3521// CHECK-NEXT: <key>ranges</key>
Gabor Horvathefec1632015-10-22 11:53:04 +00003522// CHECK-NEXT: <array>
Devin Coughlinab139a92016-12-05 16:28:47 +00003523// CHECK-NEXT: <array>
3524// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00003525// CHECK-NEXT: <key>line</key><integer>234</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00003526// CHECK-NEXT: <key>col</key><integer>20</integer>
3527// CHECK-NEXT: <key>file</key><integer>0</integer>
3528// CHECK-NEXT: </dict>
3529// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00003530// CHECK-NEXT: <key>line</key><integer>234</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00003531// CHECK-NEXT: <key>col</key><integer>20</integer>
3532// CHECK-NEXT: <key>file</key><integer>0</integer>
3533// CHECK-NEXT: </dict>
3534// CHECK-NEXT: </array>
Gabor Horvathefec1632015-10-22 11:53:04 +00003535// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +00003536// CHECK-NEXT: <key>depth</key><integer>0</integer>
3537// CHECK-NEXT: <key>extended_message</key>
3538// 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>
3539// CHECK-NEXT: <key>message</key>
3540// 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>
3541// CHECK-NEXT: </dict>
Gabor Horvathefec1632015-10-22 11:53:04 +00003542// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00003543// CHECK-NEXT: <key>kind</key><string>control</string>
3544// CHECK-NEXT: <key>edges</key>
Gabor Horvathefec1632015-10-22 11:53:04 +00003545// CHECK-NEXT: <array>
3546// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00003547// CHECK-NEXT: <key>start</key>
3548// CHECK-NEXT: <array>
3549// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00003550// CHECK-NEXT: <key>line</key><integer>234</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00003551// CHECK-NEXT: <key>col</key><integer>3</integer>
3552// CHECK-NEXT: <key>file</key><integer>0</integer>
3553// CHECK-NEXT: </dict>
3554// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00003555// CHECK-NEXT: <key>line</key><integer>234</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00003556// CHECK-NEXT: <key>col</key><integer>18</integer>
3557// CHECK-NEXT: <key>file</key><integer>0</integer>
3558// CHECK-NEXT: </dict>
3559// CHECK-NEXT: </array>
3560// CHECK-NEXT: <key>end</key>
3561// CHECK-NEXT: <array>
3562// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00003563// CHECK-NEXT: <key>line</key><integer>235</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00003564// CHECK-NEXT: <key>col</key><integer>3</integer>
3565// CHECK-NEXT: <key>file</key><integer>0</integer>
3566// CHECK-NEXT: </dict>
3567// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00003568// CHECK-NEXT: <key>line</key><integer>235</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00003569// CHECK-NEXT: <key>col</key><integer>25</integer>
3570// CHECK-NEXT: <key>file</key><integer>0</integer>
3571// CHECK-NEXT: </dict>
3572// CHECK-NEXT: </array>
Gabor Horvathefec1632015-10-22 11:53:04 +00003573// CHECK-NEXT: </dict>
3574// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +00003575// CHECK-NEXT: </dict>
Gabor Horvathefec1632015-10-22 11:53:04 +00003576// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00003577// CHECK-NEXT: <key>kind</key><string>control</string>
3578// CHECK-NEXT: <key>edges</key>
Gabor Horvathefec1632015-10-22 11:53:04 +00003579// CHECK-NEXT: <array>
3580// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00003581// CHECK-NEXT: <key>start</key>
3582// CHECK-NEXT: <array>
3583// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00003584// CHECK-NEXT: <key>line</key><integer>235</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00003585// CHECK-NEXT: <key>col</key><integer>3</integer>
3586// CHECK-NEXT: <key>file</key><integer>0</integer>
3587// CHECK-NEXT: </dict>
3588// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00003589// CHECK-NEXT: <key>line</key><integer>235</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00003590// CHECK-NEXT: <key>col</key><integer>25</integer>
3591// CHECK-NEXT: <key>file</key><integer>0</integer>
3592// CHECK-NEXT: </dict>
3593// CHECK-NEXT: </array>
3594// CHECK-NEXT: <key>end</key>
3595// CHECK-NEXT: <array>
3596// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00003597// CHECK-NEXT: <key>line</key><integer>235</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00003598// CHECK-NEXT: <key>col</key><integer>27</integer>
3599// CHECK-NEXT: <key>file</key><integer>0</integer>
3600// CHECK-NEXT: </dict>
3601// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00003602// CHECK-NEXT: <key>line</key><integer>235</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00003603// CHECK-NEXT: <key>col</key><integer>27</integer>
3604// CHECK-NEXT: <key>file</key><integer>0</integer>
3605// CHECK-NEXT: </dict>
3606// CHECK-NEXT: </array>
Gabor Horvathefec1632015-10-22 11:53:04 +00003607// CHECK-NEXT: </dict>
3608// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +00003609// CHECK-NEXT: </dict>
3610// CHECK-NEXT: <dict>
3611// CHECK-NEXT: <key>kind</key><string>event</string>
3612// CHECK-NEXT: <key>location</key>
3613// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00003614// CHECK-NEXT: <key>line</key><integer>235</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00003615// CHECK-NEXT: <key>col</key><integer>27</integer>
3616// CHECK-NEXT: <key>file</key><integer>0</integer>
3617// CHECK-NEXT: </dict>
3618// CHECK-NEXT: <key>ranges</key>
Gabor Horvathefec1632015-10-22 11:53:04 +00003619// CHECK-NEXT: <array>
Devin Coughlinab139a92016-12-05 16:28:47 +00003620// CHECK-NEXT: <array>
3621// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00003622// CHECK-NEXT: <key>line</key><integer>235</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00003623// CHECK-NEXT: <key>col</key><integer>27</integer>
3624// CHECK-NEXT: <key>file</key><integer>0</integer>
3625// CHECK-NEXT: </dict>
3626// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00003627// CHECK-NEXT: <key>line</key><integer>235</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00003628// CHECK-NEXT: <key>col</key><integer>27</integer>
3629// CHECK-NEXT: <key>file</key><integer>0</integer>
3630// CHECK-NEXT: </dict>
3631// CHECK-NEXT: </array>
Gabor Horvathefec1632015-10-22 11:53:04 +00003632// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +00003633// CHECK-NEXT: <key>depth</key><integer>0</integer>
3634// CHECK-NEXT: <key>extended_message</key>
3635// CHECK-NEXT: <string>Conversion from value of type &apos;MutableArray&lt;NSString *&gt; *&apos; to incompatible type &apos;MutableArray&lt;NSMutableString *&gt; *&apos;</string>
3636// CHECK-NEXT: <key>message</key>
3637// CHECK-NEXT: <string>Conversion from value of type &apos;MutableArray&lt;NSString *&gt; *&apos; to incompatible type &apos;MutableArray&lt;NSMutableString *&gt; *&apos;</string>
3638// CHECK-NEXT: </dict>
3639// CHECK-NEXT: </array>
3640// 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>
3641// CHECK-NEXT: <key>category</key><string>Core Foundation/Objective-C</string>
3642// CHECK-NEXT: <key>type</key><string>Generics</string>
3643// CHECK-NEXT: <key>check_name</key><string>core.DynamicTypePropagation</string>
3644// CHECK-NEXT: <!-- This hash is experimental and going to change! -->
3645// CHECK-NEXT: <key>issue_hash_content_of_line_in_context</key><string>73a50f2592e8b3c9af898749f24176f7</string>
3646// CHECK-NEXT: <key>issue_context_kind</key><string>function</string>
3647// CHECK-NEXT: <key>issue_context</key><string>inferenceFromAPIWithLegacyTypes2</string>
3648// CHECK-NEXT: <key>issue_hash_function_offset</key><string>2</string>
3649// CHECK-NEXT: <key>location</key>
3650// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00003651// CHECK-NEXT: <key>line</key><integer>235</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00003652// CHECK-NEXT: <key>col</key><integer>27</integer>
3653// CHECK-NEXT: <key>file</key><integer>0</integer>
3654// CHECK-NEXT: </dict>
3655// CHECK-NEXT: </dict>
3656// CHECK-NEXT: <dict>
3657// CHECK-NEXT: <key>path</key>
3658// CHECK-NEXT: <array>
3659// CHECK-NEXT: <dict>
3660// CHECK-NEXT: <key>kind</key><string>event</string>
3661// CHECK-NEXT: <key>location</key>
3662// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00003663// CHECK-NEXT: <key>line</key><integer>239</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00003664// CHECK-NEXT: <key>col</key><integer>27</integer>
3665// CHECK-NEXT: <key>file</key><integer>0</integer>
3666// CHECK-NEXT: </dict>
3667// CHECK-NEXT: <key>ranges</key>
Gabor Horvathefec1632015-10-22 11:53:04 +00003668// CHECK-NEXT: <array>
Devin Coughlinab139a92016-12-05 16:28:47 +00003669// CHECK-NEXT: <array>
3670// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00003671// CHECK-NEXT: <key>line</key><integer>239</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00003672// CHECK-NEXT: <key>col</key><integer>27</integer>
3673// CHECK-NEXT: <key>file</key><integer>0</integer>
3674// CHECK-NEXT: </dict>
3675// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00003676// CHECK-NEXT: <key>line</key><integer>239</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00003677// CHECK-NEXT: <key>col</key><integer>27</integer>
3678// CHECK-NEXT: <key>file</key><integer>0</integer>
3679// CHECK-NEXT: </dict>
3680// CHECK-NEXT: </array>
Gabor Horvathefec1632015-10-22 11:53:04 +00003681// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +00003682// CHECK-NEXT: <key>depth</key><integer>0</integer>
3683// CHECK-NEXT: <key>extended_message</key>
3684// 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>
3685// CHECK-NEXT: <key>message</key>
3686// 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>
3687// CHECK-NEXT: </dict>
Gabor Horvathefec1632015-10-22 11:53:04 +00003688// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00003689// CHECK-NEXT: <key>kind</key><string>control</string>
3690// CHECK-NEXT: <key>edges</key>
Gabor Horvathefec1632015-10-22 11:53:04 +00003691// CHECK-NEXT: <array>
3692// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00003693// CHECK-NEXT: <key>start</key>
3694// CHECK-NEXT: <array>
3695// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00003696// CHECK-NEXT: <key>line</key><integer>239</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00003697// CHECK-NEXT: <key>col</key><integer>3</integer>
3698// CHECK-NEXT: <key>file</key><integer>0</integer>
3699// CHECK-NEXT: </dict>
3700// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00003701// CHECK-NEXT: <key>line</key><integer>239</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00003702// CHECK-NEXT: <key>col</key><integer>20</integer>
3703// CHECK-NEXT: <key>file</key><integer>0</integer>
3704// CHECK-NEXT: </dict>
3705// CHECK-NEXT: </array>
3706// CHECK-NEXT: <key>end</key>
3707// CHECK-NEXT: <array>
3708// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00003709// CHECK-NEXT: <key>line</key><integer>240</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00003710// CHECK-NEXT: <key>col</key><integer>3</integer>
3711// CHECK-NEXT: <key>file</key><integer>0</integer>
3712// CHECK-NEXT: </dict>
3713// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00003714// CHECK-NEXT: <key>line</key><integer>240</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00003715// CHECK-NEXT: <key>col</key><integer>18</integer>
3716// CHECK-NEXT: <key>file</key><integer>0</integer>
3717// CHECK-NEXT: </dict>
3718// CHECK-NEXT: </array>
Gabor Horvathefec1632015-10-22 11:53:04 +00003719// CHECK-NEXT: </dict>
3720// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +00003721// CHECK-NEXT: </dict>
Gabor Horvathefec1632015-10-22 11:53:04 +00003722// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00003723// CHECK-NEXT: <key>kind</key><string>event</string>
3724// CHECK-NEXT: <key>location</key>
3725// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00003726// CHECK-NEXT: <key>line</key><integer>240</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00003727// CHECK-NEXT: <key>col</key><integer>20</integer>
3728// CHECK-NEXT: <key>file</key><integer>0</integer>
3729// CHECK-NEXT: </dict>
3730// CHECK-NEXT: <key>ranges</key>
3731// CHECK-NEXT: <array>
3732// CHECK-NEXT: <array>
3733// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00003734// CHECK-NEXT: <key>line</key><integer>240</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00003735// CHECK-NEXT: <key>col</key><integer>20</integer>
3736// CHECK-NEXT: <key>file</key><integer>0</integer>
3737// CHECK-NEXT: </dict>
3738// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00003739// CHECK-NEXT: <key>line</key><integer>240</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00003740// CHECK-NEXT: <key>col</key><integer>20</integer>
3741// CHECK-NEXT: <key>file</key><integer>0</integer>
3742// CHECK-NEXT: </dict>
3743// CHECK-NEXT: </array>
3744// CHECK-NEXT: </array>
3745// CHECK-NEXT: <key>depth</key><integer>0</integer>
3746// CHECK-NEXT: <key>extended_message</key>
3747// 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>
3748// CHECK-NEXT: <key>message</key>
3749// 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 +00003750// CHECK-NEXT: </dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00003751// CHECK-NEXT: <dict>
3752// CHECK-NEXT: <key>kind</key><string>control</string>
3753// CHECK-NEXT: <key>edges</key>
Gabor Horvathefec1632015-10-22 11:53:04 +00003754// CHECK-NEXT: <array>
3755// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00003756// CHECK-NEXT: <key>start</key>
3757// CHECK-NEXT: <array>
3758// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00003759// CHECK-NEXT: <key>line</key><integer>240</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00003760// CHECK-NEXT: <key>col</key><integer>3</integer>
3761// CHECK-NEXT: <key>file</key><integer>0</integer>
3762// CHECK-NEXT: </dict>
3763// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00003764// CHECK-NEXT: <key>line</key><integer>240</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00003765// CHECK-NEXT: <key>col</key><integer>18</integer>
3766// CHECK-NEXT: <key>file</key><integer>0</integer>
3767// CHECK-NEXT: </dict>
3768// CHECK-NEXT: </array>
3769// CHECK-NEXT: <key>end</key>
3770// CHECK-NEXT: <array>
3771// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00003772// CHECK-NEXT: <key>line</key><integer>241</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00003773// CHECK-NEXT: <key>col</key><integer>3</integer>
3774// CHECK-NEXT: <key>file</key><integer>0</integer>
3775// CHECK-NEXT: </dict>
3776// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00003777// CHECK-NEXT: <key>line</key><integer>241</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00003778// CHECK-NEXT: <key>col</key><integer>25</integer>
3779// CHECK-NEXT: <key>file</key><integer>0</integer>
3780// CHECK-NEXT: </dict>
3781// CHECK-NEXT: </array>
Gabor Horvathefec1632015-10-22 11:53:04 +00003782// CHECK-NEXT: </dict>
3783// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +00003784// CHECK-NEXT: </dict>
Gabor Horvathefec1632015-10-22 11:53:04 +00003785// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00003786// CHECK-NEXT: <key>kind</key><string>control</string>
3787// CHECK-NEXT: <key>edges</key>
Gabor Horvathefec1632015-10-22 11:53:04 +00003788// CHECK-NEXT: <array>
3789// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00003790// CHECK-NEXT: <key>start</key>
3791// CHECK-NEXT: <array>
3792// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00003793// CHECK-NEXT: <key>line</key><integer>241</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00003794// CHECK-NEXT: <key>col</key><integer>3</integer>
3795// CHECK-NEXT: <key>file</key><integer>0</integer>
3796// CHECK-NEXT: </dict>
3797// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00003798// CHECK-NEXT: <key>line</key><integer>241</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00003799// CHECK-NEXT: <key>col</key><integer>25</integer>
3800// CHECK-NEXT: <key>file</key><integer>0</integer>
3801// CHECK-NEXT: </dict>
3802// CHECK-NEXT: </array>
3803// CHECK-NEXT: <key>end</key>
3804// CHECK-NEXT: <array>
3805// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00003806// CHECK-NEXT: <key>line</key><integer>241</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00003807// CHECK-NEXT: <key>col</key><integer>27</integer>
3808// CHECK-NEXT: <key>file</key><integer>0</integer>
3809// CHECK-NEXT: </dict>
3810// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00003811// CHECK-NEXT: <key>line</key><integer>241</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00003812// CHECK-NEXT: <key>col</key><integer>27</integer>
3813// CHECK-NEXT: <key>file</key><integer>0</integer>
3814// CHECK-NEXT: </dict>
3815// CHECK-NEXT: </array>
Gabor Horvathefec1632015-10-22 11:53:04 +00003816// CHECK-NEXT: </dict>
3817// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +00003818// CHECK-NEXT: </dict>
3819// CHECK-NEXT: <dict>
3820// CHECK-NEXT: <key>kind</key><string>event</string>
3821// CHECK-NEXT: <key>location</key>
3822// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00003823// CHECK-NEXT: <key>line</key><integer>241</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00003824// CHECK-NEXT: <key>col</key><integer>27</integer>
3825// CHECK-NEXT: <key>file</key><integer>0</integer>
3826// CHECK-NEXT: </dict>
3827// CHECK-NEXT: <key>ranges</key>
Gabor Horvathefec1632015-10-22 11:53:04 +00003828// CHECK-NEXT: <array>
Devin Coughlinab139a92016-12-05 16:28:47 +00003829// CHECK-NEXT: <array>
3830// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00003831// CHECK-NEXT: <key>line</key><integer>241</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00003832// CHECK-NEXT: <key>col</key><integer>27</integer>
3833// CHECK-NEXT: <key>file</key><integer>0</integer>
3834// CHECK-NEXT: </dict>
3835// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00003836// CHECK-NEXT: <key>line</key><integer>241</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00003837// CHECK-NEXT: <key>col</key><integer>27</integer>
3838// CHECK-NEXT: <key>file</key><integer>0</integer>
3839// CHECK-NEXT: </dict>
3840// CHECK-NEXT: </array>
Gabor Horvathefec1632015-10-22 11:53:04 +00003841// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +00003842// CHECK-NEXT: <key>depth</key><integer>0</integer>
3843// CHECK-NEXT: <key>extended_message</key>
3844// CHECK-NEXT: <string>Conversion from value of type &apos;MutableArray&lt;NSString *&gt; *&apos; to incompatible type &apos;MutableArray&lt;NSMutableString *&gt; *&apos;</string>
3845// CHECK-NEXT: <key>message</key>
3846// CHECK-NEXT: <string>Conversion from value of type &apos;MutableArray&lt;NSString *&gt; *&apos; to incompatible type &apos;MutableArray&lt;NSMutableString *&gt; *&apos;</string>
3847// CHECK-NEXT: </dict>
3848// CHECK-NEXT: </array>
3849// 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>
3850// CHECK-NEXT: <key>category</key><string>Core Foundation/Objective-C</string>
3851// CHECK-NEXT: <key>type</key><string>Generics</string>
3852// CHECK-NEXT: <key>check_name</key><string>core.DynamicTypePropagation</string>
3853// CHECK-NEXT: <!-- This hash is experimental and going to change! -->
3854// CHECK-NEXT: <key>issue_hash_content_of_line_in_context</key><string>23ca540c8961ab9a362a194e1e895f86</string>
3855// CHECK-NEXT: <key>issue_context_kind</key><string>function</string>
3856// CHECK-NEXT: <key>issue_context</key><string>inferenceFromAPIWithLegacyTypes3</string>
3857// CHECK-NEXT: <key>issue_hash_function_offset</key><string>3</string>
3858// CHECK-NEXT: <key>location</key>
3859// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00003860// CHECK-NEXT: <key>line</key><integer>241</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00003861// CHECK-NEXT: <key>col</key><integer>27</integer>
3862// CHECK-NEXT: <key>file</key><integer>0</integer>
3863// CHECK-NEXT: </dict>
3864// CHECK-NEXT: </dict>
3865// CHECK-NEXT: <dict>
3866// CHECK-NEXT: <key>path</key>
3867// CHECK-NEXT: <array>
3868// CHECK-NEXT: <dict>
3869// CHECK-NEXT: <key>kind</key><string>event</string>
3870// CHECK-NEXT: <key>location</key>
3871// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00003872// CHECK-NEXT: <key>line</key><integer>245</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00003873// CHECK-NEXT: <key>col</key><integer>20</integer>
3874// CHECK-NEXT: <key>file</key><integer>0</integer>
3875// CHECK-NEXT: </dict>
3876// CHECK-NEXT: <key>ranges</key>
Gabor Horvathefec1632015-10-22 11:53:04 +00003877// CHECK-NEXT: <array>
Devin Coughlinab139a92016-12-05 16:28:47 +00003878// CHECK-NEXT: <array>
3879// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00003880// CHECK-NEXT: <key>line</key><integer>245</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00003881// CHECK-NEXT: <key>col</key><integer>20</integer>
3882// CHECK-NEXT: <key>file</key><integer>0</integer>
3883// CHECK-NEXT: </dict>
3884// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00003885// CHECK-NEXT: <key>line</key><integer>245</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00003886// CHECK-NEXT: <key>col</key><integer>20</integer>
3887// CHECK-NEXT: <key>file</key><integer>0</integer>
3888// CHECK-NEXT: </dict>
3889// CHECK-NEXT: </array>
Gabor Horvathefec1632015-10-22 11:53:04 +00003890// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +00003891// CHECK-NEXT: <key>depth</key><integer>0</integer>
3892// CHECK-NEXT: <key>extended_message</key>
3893// 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>
3894// CHECK-NEXT: <key>message</key>
3895// 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>
3896// CHECK-NEXT: </dict>
Gabor Horvathefec1632015-10-22 11:53:04 +00003897// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00003898// CHECK-NEXT: <key>kind</key><string>control</string>
3899// CHECK-NEXT: <key>edges</key>
Gabor Horvathefec1632015-10-22 11:53:04 +00003900// CHECK-NEXT: <array>
3901// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00003902// CHECK-NEXT: <key>start</key>
3903// CHECK-NEXT: <array>
3904// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00003905// CHECK-NEXT: <key>line</key><integer>245</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00003906// CHECK-NEXT: <key>col</key><integer>3</integer>
3907// CHECK-NEXT: <key>file</key><integer>0</integer>
3908// CHECK-NEXT: </dict>
3909// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00003910// CHECK-NEXT: <key>line</key><integer>245</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00003911// CHECK-NEXT: <key>col</key><integer>18</integer>
3912// CHECK-NEXT: <key>file</key><integer>0</integer>
3913// CHECK-NEXT: </dict>
3914// CHECK-NEXT: </array>
3915// CHECK-NEXT: <key>end</key>
3916// CHECK-NEXT: <array>
3917// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00003918// CHECK-NEXT: <key>line</key><integer>246</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00003919// CHECK-NEXT: <key>col</key><integer>3</integer>
3920// CHECK-NEXT: <key>file</key><integer>0</integer>
3921// CHECK-NEXT: </dict>
3922// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00003923// CHECK-NEXT: <key>line</key><integer>246</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00003924// CHECK-NEXT: <key>col</key><integer>25</integer>
3925// CHECK-NEXT: <key>file</key><integer>0</integer>
3926// CHECK-NEXT: </dict>
3927// CHECK-NEXT: </array>
Gabor Horvathefec1632015-10-22 11:53:04 +00003928// CHECK-NEXT: </dict>
3929// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +00003930// CHECK-NEXT: </dict>
Gabor Horvathefec1632015-10-22 11:53:04 +00003931// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00003932// CHECK-NEXT: <key>kind</key><string>control</string>
3933// CHECK-NEXT: <key>edges</key>
Gabor Horvathefec1632015-10-22 11:53:04 +00003934// CHECK-NEXT: <array>
3935// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00003936// CHECK-NEXT: <key>start</key>
3937// CHECK-NEXT: <array>
3938// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00003939// CHECK-NEXT: <key>line</key><integer>246</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00003940// CHECK-NEXT: <key>col</key><integer>3</integer>
3941// CHECK-NEXT: <key>file</key><integer>0</integer>
3942// CHECK-NEXT: </dict>
3943// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00003944// CHECK-NEXT: <key>line</key><integer>246</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00003945// CHECK-NEXT: <key>col</key><integer>25</integer>
3946// CHECK-NEXT: <key>file</key><integer>0</integer>
3947// CHECK-NEXT: </dict>
3948// CHECK-NEXT: </array>
3949// CHECK-NEXT: <key>end</key>
3950// CHECK-NEXT: <array>
3951// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00003952// CHECK-NEXT: <key>line</key><integer>246</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00003953// CHECK-NEXT: <key>col</key><integer>27</integer>
3954// CHECK-NEXT: <key>file</key><integer>0</integer>
3955// CHECK-NEXT: </dict>
3956// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00003957// CHECK-NEXT: <key>line</key><integer>246</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00003958// CHECK-NEXT: <key>col</key><integer>27</integer>
3959// CHECK-NEXT: <key>file</key><integer>0</integer>
3960// CHECK-NEXT: </dict>
3961// CHECK-NEXT: </array>
Gabor Horvathefec1632015-10-22 11:53:04 +00003962// CHECK-NEXT: </dict>
3963// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +00003964// CHECK-NEXT: </dict>
3965// CHECK-NEXT: <dict>
3966// CHECK-NEXT: <key>kind</key><string>event</string>
3967// CHECK-NEXT: <key>location</key>
3968// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00003969// CHECK-NEXT: <key>line</key><integer>246</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00003970// CHECK-NEXT: <key>col</key><integer>27</integer>
3971// CHECK-NEXT: <key>file</key><integer>0</integer>
3972// CHECK-NEXT: </dict>
3973// CHECK-NEXT: <key>ranges</key>
Gabor Horvathefec1632015-10-22 11:53:04 +00003974// CHECK-NEXT: <array>
Devin Coughlinab139a92016-12-05 16:28:47 +00003975// CHECK-NEXT: <array>
3976// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00003977// CHECK-NEXT: <key>line</key><integer>246</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00003978// CHECK-NEXT: <key>col</key><integer>27</integer>
3979// CHECK-NEXT: <key>file</key><integer>0</integer>
3980// CHECK-NEXT: </dict>
3981// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00003982// CHECK-NEXT: <key>line</key><integer>246</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00003983// CHECK-NEXT: <key>col</key><integer>27</integer>
3984// CHECK-NEXT: <key>file</key><integer>0</integer>
3985// CHECK-NEXT: </dict>
3986// CHECK-NEXT: </array>
Gabor Horvathefec1632015-10-22 11:53:04 +00003987// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +00003988// CHECK-NEXT: <key>depth</key><integer>0</integer>
3989// CHECK-NEXT: <key>extended_message</key>
3990// CHECK-NEXT: <string>Conversion from value of type &apos;MutableArray&lt;NSString *&gt; *&apos; to incompatible type &apos;MutableArray&lt;NSMutableString *&gt; *&apos;</string>
3991// CHECK-NEXT: <key>message</key>
3992// CHECK-NEXT: <string>Conversion from value of type &apos;MutableArray&lt;NSString *&gt; *&apos; to incompatible type &apos;MutableArray&lt;NSMutableString *&gt; *&apos;</string>
3993// CHECK-NEXT: </dict>
3994// CHECK-NEXT: </array>
3995// 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>
3996// CHECK-NEXT: <key>category</key><string>Core Foundation/Objective-C</string>
3997// CHECK-NEXT: <key>type</key><string>Generics</string>
3998// CHECK-NEXT: <key>check_name</key><string>core.DynamicTypePropagation</string>
3999// CHECK-NEXT: <!-- This hash is experimental and going to change! -->
4000// CHECK-NEXT: <key>issue_hash_content_of_line_in_context</key><string>be7e9426f827314f05fd4e15b25909df</string>
4001// CHECK-NEXT: <key>issue_context_kind</key><string>function</string>
4002// CHECK-NEXT: <key>issue_context</key><string>inferenceFromAPIWithBuggyTypes</string>
4003// CHECK-NEXT: <key>issue_hash_function_offset</key><string>2</string>
4004// CHECK-NEXT: <key>location</key>
4005// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00004006// CHECK-NEXT: <key>line</key><integer>246</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00004007// CHECK-NEXT: <key>col</key><integer>27</integer>
4008// CHECK-NEXT: <key>file</key><integer>0</integer>
4009// CHECK-NEXT: </dict>
4010// CHECK-NEXT: </dict>
4011// CHECK-NEXT: <dict>
4012// CHECK-NEXT: <key>path</key>
4013// CHECK-NEXT: <array>
4014// CHECK-NEXT: <dict>
4015// CHECK-NEXT: <key>kind</key><string>event</string>
4016// CHECK-NEXT: <key>location</key>
4017// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00004018// CHECK-NEXT: <key>line</key><integer>250</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00004019// CHECK-NEXT: <key>col</key><integer>27</integer>
4020// CHECK-NEXT: <key>file</key><integer>0</integer>
4021// CHECK-NEXT: </dict>
4022// CHECK-NEXT: <key>ranges</key>
Gabor Horvathefec1632015-10-22 11:53:04 +00004023// CHECK-NEXT: <array>
Devin Coughlinab139a92016-12-05 16:28:47 +00004024// CHECK-NEXT: <array>
4025// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00004026// CHECK-NEXT: <key>line</key><integer>250</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00004027// CHECK-NEXT: <key>col</key><integer>27</integer>
4028// CHECK-NEXT: <key>file</key><integer>0</integer>
4029// CHECK-NEXT: </dict>
4030// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00004031// CHECK-NEXT: <key>line</key><integer>250</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00004032// CHECK-NEXT: <key>col</key><integer>27</integer>
4033// CHECK-NEXT: <key>file</key><integer>0</integer>
4034// CHECK-NEXT: </dict>
4035// CHECK-NEXT: </array>
Gabor Horvathefec1632015-10-22 11:53:04 +00004036// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +00004037// CHECK-NEXT: <key>depth</key><integer>0</integer>
4038// CHECK-NEXT: <key>extended_message</key>
4039// 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>
4040// CHECK-NEXT: <key>message</key>
4041// 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>
4042// CHECK-NEXT: </dict>
Gabor Horvathefec1632015-10-22 11:53:04 +00004043// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00004044// CHECK-NEXT: <key>kind</key><string>control</string>
4045// CHECK-NEXT: <key>edges</key>
Gabor Horvathefec1632015-10-22 11:53:04 +00004046// CHECK-NEXT: <array>
4047// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00004048// CHECK-NEXT: <key>start</key>
4049// CHECK-NEXT: <array>
4050// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00004051// CHECK-NEXT: <key>line</key><integer>250</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00004052// CHECK-NEXT: <key>col</key><integer>3</integer>
4053// CHECK-NEXT: <key>file</key><integer>0</integer>
4054// CHECK-NEXT: </dict>
4055// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00004056// CHECK-NEXT: <key>line</key><integer>250</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00004057// CHECK-NEXT: <key>col</key><integer>25</integer>
4058// CHECK-NEXT: <key>file</key><integer>0</integer>
4059// CHECK-NEXT: </dict>
4060// CHECK-NEXT: </array>
4061// CHECK-NEXT: <key>end</key>
4062// CHECK-NEXT: <array>
4063// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00004064// CHECK-NEXT: <key>line</key><integer>251</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00004065// CHECK-NEXT: <key>col</key><integer>3</integer>
4066// CHECK-NEXT: <key>file</key><integer>0</integer>
4067// CHECK-NEXT: </dict>
4068// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00004069// CHECK-NEXT: <key>line</key><integer>251</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00004070// CHECK-NEXT: <key>col</key><integer>18</integer>
4071// CHECK-NEXT: <key>file</key><integer>0</integer>
4072// CHECK-NEXT: </dict>
4073// CHECK-NEXT: </array>
Gabor Horvathefec1632015-10-22 11:53:04 +00004074// CHECK-NEXT: </dict>
4075// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +00004076// CHECK-NEXT: </dict>
Gabor Horvathefec1632015-10-22 11:53:04 +00004077// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00004078// CHECK-NEXT: <key>kind</key><string>control</string>
4079// CHECK-NEXT: <key>edges</key>
Gabor Horvathefec1632015-10-22 11:53:04 +00004080// CHECK-NEXT: <array>
4081// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00004082// CHECK-NEXT: <key>start</key>
4083// CHECK-NEXT: <array>
4084// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00004085// CHECK-NEXT: <key>line</key><integer>251</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00004086// CHECK-NEXT: <key>col</key><integer>3</integer>
4087// CHECK-NEXT: <key>file</key><integer>0</integer>
4088// CHECK-NEXT: </dict>
4089// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00004090// CHECK-NEXT: <key>line</key><integer>251</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00004091// CHECK-NEXT: <key>col</key><integer>18</integer>
4092// CHECK-NEXT: <key>file</key><integer>0</integer>
4093// CHECK-NEXT: </dict>
4094// CHECK-NEXT: </array>
4095// CHECK-NEXT: <key>end</key>
4096// CHECK-NEXT: <array>
4097// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00004098// CHECK-NEXT: <key>line</key><integer>251</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00004099// CHECK-NEXT: <key>col</key><integer>20</integer>
4100// CHECK-NEXT: <key>file</key><integer>0</integer>
4101// CHECK-NEXT: </dict>
4102// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00004103// CHECK-NEXT: <key>line</key><integer>251</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00004104// CHECK-NEXT: <key>col</key><integer>20</integer>
4105// CHECK-NEXT: <key>file</key><integer>0</integer>
4106// CHECK-NEXT: </dict>
4107// CHECK-NEXT: </array>
Gabor Horvathefec1632015-10-22 11:53:04 +00004108// CHECK-NEXT: </dict>
4109// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +00004110// CHECK-NEXT: </dict>
4111// CHECK-NEXT: <dict>
4112// CHECK-NEXT: <key>kind</key><string>event</string>
4113// CHECK-NEXT: <key>location</key>
4114// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00004115// CHECK-NEXT: <key>line</key><integer>251</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00004116// CHECK-NEXT: <key>col</key><integer>20</integer>
4117// CHECK-NEXT: <key>file</key><integer>0</integer>
4118// CHECK-NEXT: </dict>
4119// CHECK-NEXT: <key>ranges</key>
Gabor Horvathefec1632015-10-22 11:53:04 +00004120// CHECK-NEXT: <array>
Devin Coughlinab139a92016-12-05 16:28:47 +00004121// CHECK-NEXT: <array>
4122// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00004123// CHECK-NEXT: <key>line</key><integer>251</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00004124// CHECK-NEXT: <key>col</key><integer>20</integer>
4125// CHECK-NEXT: <key>file</key><integer>0</integer>
4126// CHECK-NEXT: </dict>
4127// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00004128// CHECK-NEXT: <key>line</key><integer>251</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00004129// CHECK-NEXT: <key>col</key><integer>20</integer>
4130// CHECK-NEXT: <key>file</key><integer>0</integer>
4131// CHECK-NEXT: </dict>
4132// CHECK-NEXT: </array>
Gabor Horvathefec1632015-10-22 11:53:04 +00004133// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +00004134// CHECK-NEXT: <key>depth</key><integer>0</integer>
4135// CHECK-NEXT: <key>extended_message</key>
4136// CHECK-NEXT: <string>Conversion from value of type &apos;MutableArray&lt;NSMutableString *&gt; *&apos; to incompatible type &apos;MutableArray&lt;NSString *&gt; *&apos;</string>
4137// CHECK-NEXT: <key>message</key>
4138// CHECK-NEXT: <string>Conversion from value of type &apos;MutableArray&lt;NSMutableString *&gt; *&apos; to incompatible type &apos;MutableArray&lt;NSString *&gt; *&apos;</string>
4139// CHECK-NEXT: </dict>
4140// CHECK-NEXT: </array>
4141// 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>
4142// CHECK-NEXT: <key>category</key><string>Core Foundation/Objective-C</string>
4143// CHECK-NEXT: <key>type</key><string>Generics</string>
4144// CHECK-NEXT: <key>check_name</key><string>core.DynamicTypePropagation</string>
4145// CHECK-NEXT: <!-- This hash is experimental and going to change! -->
4146// CHECK-NEXT: <key>issue_hash_content_of_line_in_context</key><string>0f97a618ccac913d7c8631b5b86a133e</string>
4147// CHECK-NEXT: <key>issue_context_kind</key><string>function</string>
4148// CHECK-NEXT: <key>issue_context</key><string>InferenceFromAPIWithBuggyTypes2</string>
4149// CHECK-NEXT: <key>issue_hash_function_offset</key><string>2</string>
4150// CHECK-NEXT: <key>location</key>
4151// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00004152// CHECK-NEXT: <key>line</key><integer>251</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00004153// CHECK-NEXT: <key>col</key><integer>20</integer>
4154// CHECK-NEXT: <key>file</key><integer>0</integer>
4155// CHECK-NEXT: </dict>
4156// CHECK-NEXT: </dict>
4157// CHECK-NEXT: <dict>
4158// CHECK-NEXT: <key>path</key>
4159// CHECK-NEXT: <array>
4160// CHECK-NEXT: <dict>
4161// CHECK-NEXT: <key>kind</key><string>event</string>
4162// CHECK-NEXT: <key>location</key>
4163// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00004164// CHECK-NEXT: <key>line</key><integer>255</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00004165// CHECK-NEXT: <key>col</key><integer>10</integer>
4166// CHECK-NEXT: <key>file</key><integer>0</integer>
4167// CHECK-NEXT: </dict>
4168// CHECK-NEXT: <key>ranges</key>
Gabor Horvathefec1632015-10-22 11:53:04 +00004169// CHECK-NEXT: <array>
Devin Coughlinab139a92016-12-05 16:28:47 +00004170// CHECK-NEXT: <array>
4171// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00004172// CHECK-NEXT: <key>line</key><integer>255</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00004173// CHECK-NEXT: <key>col</key><integer>10</integer>
4174// CHECK-NEXT: <key>file</key><integer>0</integer>
4175// CHECK-NEXT: </dict>
4176// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00004177// CHECK-NEXT: <key>line</key><integer>255</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00004178// CHECK-NEXT: <key>col</key><integer>10</integer>
4179// CHECK-NEXT: <key>file</key><integer>0</integer>
4180// CHECK-NEXT: </dict>
4181// CHECK-NEXT: </array>
Gabor Horvathefec1632015-10-22 11:53:04 +00004182// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +00004183// CHECK-NEXT: <key>depth</key><integer>0</integer>
4184// CHECK-NEXT: <key>extended_message</key>
4185// 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>
4186// CHECK-NEXT: <key>message</key>
4187// 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>
4188// CHECK-NEXT: </dict>
Gabor Horvathefec1632015-10-22 11:53:04 +00004189// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00004190// CHECK-NEXT: <key>kind</key><string>control</string>
4191// CHECK-NEXT: <key>edges</key>
Gabor Horvathefec1632015-10-22 11:53:04 +00004192// CHECK-NEXT: <array>
4193// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00004194// CHECK-NEXT: <key>start</key>
4195// CHECK-NEXT: <array>
4196// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00004197// CHECK-NEXT: <key>line</key><integer>255</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00004198// CHECK-NEXT: <key>col</key><integer>3</integer>
4199// CHECK-NEXT: <key>file</key><integer>0</integer>
4200// CHECK-NEXT: </dict>
4201// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00004202// CHECK-NEXT: <key>line</key><integer>255</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00004203// CHECK-NEXT: <key>col</key><integer>4</integer>
4204// CHECK-NEXT: <key>file</key><integer>0</integer>
4205// CHECK-NEXT: </dict>
4206// CHECK-NEXT: </array>
4207// CHECK-NEXT: <key>end</key>
4208// CHECK-NEXT: <array>
4209// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00004210// CHECK-NEXT: <key>line</key><integer>256</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00004211// CHECK-NEXT: <key>col</key><integer>3</integer>
4212// CHECK-NEXT: <key>file</key><integer>0</integer>
4213// CHECK-NEXT: </dict>
4214// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00004215// CHECK-NEXT: <key>line</key><integer>256</integer>
4216// CHECK-NEXT: <key>col</key><integer>25</integer>
4217// CHECK-NEXT: <key>file</key><integer>0</integer>
4218// CHECK-NEXT: </dict>
4219// CHECK-NEXT: </array>
4220// CHECK-NEXT: </dict>
4221// CHECK-NEXT: </array>
4222// CHECK-NEXT: </dict>
4223// CHECK-NEXT: <dict>
4224// CHECK-NEXT: <key>kind</key><string>event</string>
4225// CHECK-NEXT: <key>location</key>
4226// CHECK-NEXT: <dict>
4227// CHECK-NEXT: <key>line</key><integer>256</integer>
4228// CHECK-NEXT: <key>col</key><integer>27</integer>
4229// CHECK-NEXT: <key>file</key><integer>0</integer>
4230// CHECK-NEXT: </dict>
4231// CHECK-NEXT: <key>ranges</key>
4232// CHECK-NEXT: <array>
4233// CHECK-NEXT: <array>
4234// CHECK-NEXT: <dict>
4235// CHECK-NEXT: <key>line</key><integer>256</integer>
4236// CHECK-NEXT: <key>col</key><integer>27</integer>
4237// CHECK-NEXT: <key>file</key><integer>0</integer>
4238// CHECK-NEXT: </dict>
4239// CHECK-NEXT: <dict>
4240// CHECK-NEXT: <key>line</key><integer>256</integer>
4241// CHECK-NEXT: <key>col</key><integer>67</integer>
4242// CHECK-NEXT: <key>file</key><integer>0</integer>
4243// CHECK-NEXT: </dict>
4244// CHECK-NEXT: </array>
4245// CHECK-NEXT: </array>
4246// CHECK-NEXT: <key>depth</key><integer>0</integer>
4247// CHECK-NEXT: <key>extended_message</key>
4248// CHECK-NEXT: <string>Type &apos;MutableArray&lt;NSMutableString *&gt; *&apos; is inferred from implicit cast (from &apos;BuggyMutableArray&lt;NSMutableString *&gt; *&apos; to &apos;MutableArray&lt;NSMutableString *&gt; *&apos;)</string>
4249// CHECK-NEXT: <key>message</key>
4250// CHECK-NEXT: <string>Type &apos;MutableArray&lt;NSMutableString *&gt; *&apos; is inferred from implicit cast (from &apos;BuggyMutableArray&lt;NSMutableString *&gt; *&apos; to &apos;MutableArray&lt;NSMutableString *&gt; *&apos;)</string>
4251// CHECK-NEXT: </dict>
4252// CHECK-NEXT: <dict>
4253// CHECK-NEXT: <key>kind</key><string>control</string>
4254// CHECK-NEXT: <key>edges</key>
4255// CHECK-NEXT: <array>
4256// CHECK-NEXT: <dict>
4257// CHECK-NEXT: <key>start</key>
4258// CHECK-NEXT: <array>
4259// CHECK-NEXT: <dict>
4260// CHECK-NEXT: <key>line</key><integer>256</integer>
4261// CHECK-NEXT: <key>col</key><integer>3</integer>
4262// CHECK-NEXT: <key>file</key><integer>0</integer>
4263// CHECK-NEXT: </dict>
4264// CHECK-NEXT: <dict>
4265// CHECK-NEXT: <key>line</key><integer>256</integer>
4266// CHECK-NEXT: <key>col</key><integer>25</integer>
4267// CHECK-NEXT: <key>file</key><integer>0</integer>
4268// CHECK-NEXT: </dict>
4269// CHECK-NEXT: </array>
4270// CHECK-NEXT: <key>end</key>
4271// CHECK-NEXT: <array>
4272// CHECK-NEXT: <dict>
4273// CHECK-NEXT: <key>line</key><integer>257</integer>
4274// CHECK-NEXT: <key>col</key><integer>3</integer>
4275// CHECK-NEXT: <key>file</key><integer>0</integer>
4276// CHECK-NEXT: </dict>
4277// CHECK-NEXT: <dict>
4278// CHECK-NEXT: <key>line</key><integer>257</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00004279// CHECK-NEXT: <key>col</key><integer>18</integer>
4280// CHECK-NEXT: <key>file</key><integer>0</integer>
4281// CHECK-NEXT: </dict>
4282// CHECK-NEXT: </array>
Gabor Horvathefec1632015-10-22 11:53:04 +00004283// CHECK-NEXT: </dict>
4284// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +00004285// CHECK-NEXT: </dict>
Gabor Horvathefec1632015-10-22 11:53:04 +00004286// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00004287// CHECK-NEXT: <key>kind</key><string>control</string>
4288// CHECK-NEXT: <key>edges</key>
Gabor Horvathefec1632015-10-22 11:53:04 +00004289// CHECK-NEXT: <array>
4290// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00004291// CHECK-NEXT: <key>start</key>
4292// CHECK-NEXT: <array>
4293// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00004294// CHECK-NEXT: <key>line</key><integer>257</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00004295// CHECK-NEXT: <key>col</key><integer>3</integer>
4296// CHECK-NEXT: <key>file</key><integer>0</integer>
4297// CHECK-NEXT: </dict>
4298// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00004299// CHECK-NEXT: <key>line</key><integer>257</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00004300// CHECK-NEXT: <key>col</key><integer>18</integer>
4301// CHECK-NEXT: <key>file</key><integer>0</integer>
4302// CHECK-NEXT: </dict>
4303// CHECK-NEXT: </array>
4304// CHECK-NEXT: <key>end</key>
4305// CHECK-NEXT: <array>
4306// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00004307// CHECK-NEXT: <key>line</key><integer>257</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00004308// CHECK-NEXT: <key>col</key><integer>20</integer>
4309// CHECK-NEXT: <key>file</key><integer>0</integer>
4310// CHECK-NEXT: </dict>
4311// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00004312// CHECK-NEXT: <key>line</key><integer>257</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00004313// CHECK-NEXT: <key>col</key><integer>20</integer>
4314// CHECK-NEXT: <key>file</key><integer>0</integer>
4315// CHECK-NEXT: </dict>
4316// CHECK-NEXT: </array>
Gabor Horvathefec1632015-10-22 11:53:04 +00004317// CHECK-NEXT: </dict>
4318// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +00004319// CHECK-NEXT: </dict>
4320// CHECK-NEXT: <dict>
4321// CHECK-NEXT: <key>kind</key><string>event</string>
4322// CHECK-NEXT: <key>location</key>
4323// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00004324// CHECK-NEXT: <key>line</key><integer>257</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00004325// CHECK-NEXT: <key>col</key><integer>20</integer>
4326// CHECK-NEXT: <key>file</key><integer>0</integer>
4327// CHECK-NEXT: </dict>
4328// CHECK-NEXT: <key>ranges</key>
Gabor Horvathefec1632015-10-22 11:53:04 +00004329// CHECK-NEXT: <array>
Devin Coughlinab139a92016-12-05 16:28:47 +00004330// CHECK-NEXT: <array>
4331// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00004332// CHECK-NEXT: <key>line</key><integer>257</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00004333// CHECK-NEXT: <key>col</key><integer>20</integer>
4334// CHECK-NEXT: <key>file</key><integer>0</integer>
4335// CHECK-NEXT: </dict>
4336// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00004337// CHECK-NEXT: <key>line</key><integer>257</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00004338// CHECK-NEXT: <key>col</key><integer>20</integer>
4339// CHECK-NEXT: <key>file</key><integer>0</integer>
4340// CHECK-NEXT: </dict>
4341// CHECK-NEXT: </array>
Gabor Horvathefec1632015-10-22 11:53:04 +00004342// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +00004343// CHECK-NEXT: <key>depth</key><integer>0</integer>
4344// CHECK-NEXT: <key>extended_message</key>
4345// CHECK-NEXT: <string>Conversion from value of type &apos;MutableArray&lt;NSMutableString *&gt; *&apos; to incompatible type &apos;MutableArray&lt;NSString *&gt; *&apos;</string>
4346// CHECK-NEXT: <key>message</key>
4347// CHECK-NEXT: <string>Conversion from value of type &apos;MutableArray&lt;NSMutableString *&gt; *&apos; to incompatible type &apos;MutableArray&lt;NSString *&gt; *&apos;</string>
4348// CHECK-NEXT: </dict>
4349// CHECK-NEXT: </array>
4350// 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>
4351// CHECK-NEXT: <key>category</key><string>Core Foundation/Objective-C</string>
4352// CHECK-NEXT: <key>type</key><string>Generics</string>
4353// CHECK-NEXT: <key>check_name</key><string>core.DynamicTypePropagation</string>
4354// CHECK-NEXT: <!-- This hash is experimental and going to change! -->
4355// CHECK-NEXT: <key>issue_hash_content_of_line_in_context</key><string>725c54c88bb271138b1de545ee59a8aa</string>
4356// CHECK-NEXT: <key>issue_context_kind</key><string>function</string>
4357// CHECK-NEXT: <key>issue_context</key><string>InferenceFromAPIWithBuggyTypes3</string>
4358// CHECK-NEXT: <key>issue_hash_function_offset</key><string>3</string>
4359// CHECK-NEXT: <key>location</key>
4360// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00004361// CHECK-NEXT: <key>line</key><integer>257</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00004362// CHECK-NEXT: <key>col</key><integer>20</integer>
4363// CHECK-NEXT: <key>file</key><integer>0</integer>
4364// CHECK-NEXT: </dict>
4365// CHECK-NEXT: </dict>
4366// CHECK-NEXT: <dict>
4367// CHECK-NEXT: <key>path</key>
4368// CHECK-NEXT: <array>
4369// CHECK-NEXT: <dict>
4370// CHECK-NEXT: <key>kind</key><string>event</string>
4371// CHECK-NEXT: <key>location</key>
4372// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00004373// CHECK-NEXT: <key>line</key><integer>261</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00004374// CHECK-NEXT: <key>col</key><integer>45</integer>
4375// CHECK-NEXT: <key>file</key><integer>0</integer>
4376// CHECK-NEXT: </dict>
4377// CHECK-NEXT: <key>ranges</key>
Gabor Horvathefec1632015-10-22 11:53:04 +00004378// CHECK-NEXT: <array>
Devin Coughlinab139a92016-12-05 16:28:47 +00004379// CHECK-NEXT: <array>
4380// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00004381// CHECK-NEXT: <key>line</key><integer>261</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00004382// CHECK-NEXT: <key>col</key><integer>45</integer>
4383// CHECK-NEXT: <key>file</key><integer>0</integer>
4384// CHECK-NEXT: </dict>
4385// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00004386// CHECK-NEXT: <key>line</key><integer>261</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00004387// CHECK-NEXT: <key>col</key><integer>45</integer>
4388// CHECK-NEXT: <key>file</key><integer>0</integer>
4389// CHECK-NEXT: </dict>
4390// CHECK-NEXT: </array>
Gabor Horvathefec1632015-10-22 11:53:04 +00004391// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +00004392// CHECK-NEXT: <key>depth</key><integer>0</integer>
4393// CHECK-NEXT: <key>extended_message</key>
4394// 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>
4395// CHECK-NEXT: <key>message</key>
4396// 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>
4397// CHECK-NEXT: </dict>
Gabor Horvathefec1632015-10-22 11:53:04 +00004398// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00004399// CHECK-NEXT: <key>kind</key><string>control</string>
4400// CHECK-NEXT: <key>edges</key>
Gabor Horvathefec1632015-10-22 11:53:04 +00004401// CHECK-NEXT: <array>
4402// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00004403// CHECK-NEXT: <key>start</key>
4404// CHECK-NEXT: <array>
4405// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00004406// CHECK-NEXT: <key>line</key><integer>261</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00004407// CHECK-NEXT: <key>col</key><integer>3</integer>
4408// CHECK-NEXT: <key>file</key><integer>0</integer>
4409// CHECK-NEXT: </dict>
4410// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00004411// CHECK-NEXT: <key>line</key><integer>261</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00004412// CHECK-NEXT: <key>col</key><integer>19</integer>
4413// CHECK-NEXT: <key>file</key><integer>0</integer>
4414// CHECK-NEXT: </dict>
4415// CHECK-NEXT: </array>
4416// CHECK-NEXT: <key>end</key>
4417// CHECK-NEXT: <array>
4418// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00004419// CHECK-NEXT: <key>line</key><integer>262</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00004420// CHECK-NEXT: <key>col</key><integer>3</integer>
4421// CHECK-NEXT: <key>file</key><integer>0</integer>
4422// CHECK-NEXT: </dict>
4423// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00004424// CHECK-NEXT: <key>line</key><integer>262</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00004425// CHECK-NEXT: <key>col</key><integer>18</integer>
4426// CHECK-NEXT: <key>file</key><integer>0</integer>
4427// CHECK-NEXT: </dict>
4428// CHECK-NEXT: </array>
Gabor Horvathefec1632015-10-22 11:53:04 +00004429// CHECK-NEXT: </dict>
4430// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +00004431// CHECK-NEXT: </dict>
Gabor Horvathefec1632015-10-22 11:53:04 +00004432// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00004433// CHECK-NEXT: <key>kind</key><string>event</string>
4434// CHECK-NEXT: <key>location</key>
4435// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00004436// CHECK-NEXT: <key>line</key><integer>262</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00004437// CHECK-NEXT: <key>col</key><integer>20</integer>
4438// CHECK-NEXT: <key>file</key><integer>0</integer>
4439// CHECK-NEXT: </dict>
4440// CHECK-NEXT: <key>ranges</key>
4441// CHECK-NEXT: <array>
4442// CHECK-NEXT: <array>
4443// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00004444// CHECK-NEXT: <key>line</key><integer>262</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00004445// CHECK-NEXT: <key>col</key><integer>20</integer>
4446// CHECK-NEXT: <key>file</key><integer>0</integer>
4447// CHECK-NEXT: </dict>
4448// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00004449// CHECK-NEXT: <key>line</key><integer>262</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00004450// CHECK-NEXT: <key>col</key><integer>20</integer>
4451// CHECK-NEXT: <key>file</key><integer>0</integer>
4452// CHECK-NEXT: </dict>
4453// CHECK-NEXT: </array>
4454// CHECK-NEXT: </array>
4455// CHECK-NEXT: <key>depth</key><integer>0</integer>
4456// CHECK-NEXT: <key>extended_message</key>
4457// 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>
4458// CHECK-NEXT: <key>message</key>
4459// 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 +00004460// CHECK-NEXT: </dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00004461// CHECK-NEXT: <dict>
4462// CHECK-NEXT: <key>kind</key><string>control</string>
4463// CHECK-NEXT: <key>edges</key>
Gabor Horvathefec1632015-10-22 11:53:04 +00004464// CHECK-NEXT: <array>
4465// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00004466// CHECK-NEXT: <key>start</key>
4467// CHECK-NEXT: <array>
4468// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00004469// CHECK-NEXT: <key>line</key><integer>262</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00004470// CHECK-NEXT: <key>col</key><integer>3</integer>
4471// CHECK-NEXT: <key>file</key><integer>0</integer>
4472// CHECK-NEXT: </dict>
4473// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00004474// CHECK-NEXT: <key>line</key><integer>262</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00004475// CHECK-NEXT: <key>col</key><integer>18</integer>
4476// CHECK-NEXT: <key>file</key><integer>0</integer>
4477// CHECK-NEXT: </dict>
4478// CHECK-NEXT: </array>
4479// CHECK-NEXT: <key>end</key>
4480// CHECK-NEXT: <array>
4481// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00004482// CHECK-NEXT: <key>line</key><integer>263</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00004483// CHECK-NEXT: <key>col</key><integer>3</integer>
4484// CHECK-NEXT: <key>file</key><integer>0</integer>
4485// CHECK-NEXT: </dict>
4486// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00004487// CHECK-NEXT: <key>line</key><integer>263</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00004488// CHECK-NEXT: <key>col</key><integer>25</integer>
4489// CHECK-NEXT: <key>file</key><integer>0</integer>
4490// CHECK-NEXT: </dict>
4491// CHECK-NEXT: </array>
Gabor Horvathefec1632015-10-22 11:53:04 +00004492// CHECK-NEXT: </dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00004493// CHECK-NEXT: </array>
4494// CHECK-NEXT: </dict>
4495// CHECK-NEXT: <dict>
4496// CHECK-NEXT: <key>kind</key><string>control</string>
4497// CHECK-NEXT: <key>edges</key>
4498// CHECK-NEXT: <array>
Gabor Horvathefec1632015-10-22 11:53:04 +00004499// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00004500// CHECK-NEXT: <key>start</key>
4501// CHECK-NEXT: <array>
4502// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00004503// CHECK-NEXT: <key>line</key><integer>263</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00004504// CHECK-NEXT: <key>col</key><integer>3</integer>
4505// CHECK-NEXT: <key>file</key><integer>0</integer>
4506// CHECK-NEXT: </dict>
4507// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00004508// CHECK-NEXT: <key>line</key><integer>263</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00004509// CHECK-NEXT: <key>col</key><integer>25</integer>
4510// CHECK-NEXT: <key>file</key><integer>0</integer>
4511// CHECK-NEXT: </dict>
4512// CHECK-NEXT: </array>
4513// CHECK-NEXT: <key>end</key>
4514// CHECK-NEXT: <array>
4515// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00004516// CHECK-NEXT: <key>line</key><integer>263</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00004517// CHECK-NEXT: <key>col</key><integer>27</integer>
4518// CHECK-NEXT: <key>file</key><integer>0</integer>
4519// CHECK-NEXT: </dict>
4520// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00004521// CHECK-NEXT: <key>line</key><integer>263</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00004522// CHECK-NEXT: <key>col</key><integer>27</integer>
4523// CHECK-NEXT: <key>file</key><integer>0</integer>
4524// CHECK-NEXT: </dict>
4525// CHECK-NEXT: </array>
Gabor Horvathefec1632015-10-22 11:53:04 +00004526// CHECK-NEXT: </dict>
4527// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +00004528// CHECK-NEXT: </dict>
4529// CHECK-NEXT: <dict>
4530// CHECK-NEXT: <key>kind</key><string>event</string>
4531// CHECK-NEXT: <key>location</key>
4532// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00004533// CHECK-NEXT: <key>line</key><integer>263</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00004534// CHECK-NEXT: <key>col</key><integer>27</integer>
4535// CHECK-NEXT: <key>file</key><integer>0</integer>
4536// CHECK-NEXT: </dict>
4537// CHECK-NEXT: <key>ranges</key>
Gabor Horvathefec1632015-10-22 11:53:04 +00004538// CHECK-NEXT: <array>
Devin Coughlinab139a92016-12-05 16:28:47 +00004539// CHECK-NEXT: <array>
4540// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00004541// CHECK-NEXT: <key>line</key><integer>263</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00004542// CHECK-NEXT: <key>col</key><integer>27</integer>
4543// CHECK-NEXT: <key>file</key><integer>0</integer>
4544// CHECK-NEXT: </dict>
4545// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00004546// CHECK-NEXT: <key>line</key><integer>263</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00004547// CHECK-NEXT: <key>col</key><integer>27</integer>
4548// CHECK-NEXT: <key>file</key><integer>0</integer>
4549// CHECK-NEXT: </dict>
4550// CHECK-NEXT: </array>
Gabor Horvathefec1632015-10-22 11:53:04 +00004551// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +00004552// CHECK-NEXT: <key>depth</key><integer>0</integer>
4553// CHECK-NEXT: <key>extended_message</key>
4554// CHECK-NEXT: <string>Conversion from value of type &apos;MutableArray&lt;NSString *&gt; *&apos; to incompatible type &apos;MutableArray&lt;NSMutableString *&gt; *&apos;</string>
4555// CHECK-NEXT: <key>message</key>
4556// CHECK-NEXT: <string>Conversion from value of type &apos;MutableArray&lt;NSString *&gt; *&apos; to incompatible type &apos;MutableArray&lt;NSMutableString *&gt; *&apos;</string>
4557// CHECK-NEXT: </dict>
4558// CHECK-NEXT: </array>
4559// 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>
4560// CHECK-NEXT: <key>category</key><string>Core Foundation/Objective-C</string>
4561// CHECK-NEXT: <key>type</key><string>Generics</string>
4562// CHECK-NEXT: <key>check_name</key><string>core.DynamicTypePropagation</string>
4563// CHECK-NEXT: <!-- This hash is experimental and going to change! -->
4564// CHECK-NEXT: <key>issue_hash_content_of_line_in_context</key><string>fb867af384c612fe5c09f821127eeaf0</string>
4565// CHECK-NEXT: <key>issue_context_kind</key><string>function</string>
4566// CHECK-NEXT: <key>issue_context</key><string>InferenceFromAPIWithBuggyTypes4</string>
4567// CHECK-NEXT: <key>issue_hash_function_offset</key><string>3</string>
4568// CHECK-NEXT: <key>location</key>
4569// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00004570// CHECK-NEXT: <key>line</key><integer>263</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00004571// CHECK-NEXT: <key>col</key><integer>27</integer>
4572// CHECK-NEXT: <key>file</key><integer>0</integer>
4573// CHECK-NEXT: </dict>
4574// CHECK-NEXT: </dict>
4575// CHECK-NEXT: <dict>
4576// CHECK-NEXT: <key>path</key>
4577// CHECK-NEXT: <array>
Gabor Horvathefec1632015-10-22 11:53:04 +00004578// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00004579// CHECK-NEXT: <key>kind</key><string>control</string>
4580// CHECK-NEXT: <key>edges</key>
Gabor Horvathefec1632015-10-22 11:53:04 +00004581// CHECK-NEXT: <array>
4582// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00004583// CHECK-NEXT: <key>start</key>
4584// CHECK-NEXT: <array>
4585// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00004586// CHECK-NEXT: <key>line</key><integer>275</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00004587// CHECK-NEXT: <key>col</key><integer>3</integer>
4588// CHECK-NEXT: <key>file</key><integer>0</integer>
4589// CHECK-NEXT: </dict>
4590// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00004591// CHECK-NEXT: <key>line</key><integer>275</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00004592// CHECK-NEXT: <key>col</key><integer>9</integer>
4593// CHECK-NEXT: <key>file</key><integer>0</integer>
4594// CHECK-NEXT: </dict>
4595// CHECK-NEXT: </array>
4596// CHECK-NEXT: <key>end</key>
4597// CHECK-NEXT: <array>
4598// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00004599// CHECK-NEXT: <key>line</key><integer>276</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00004600// CHECK-NEXT: <key>col</key><integer>3</integer>
4601// CHECK-NEXT: <key>file</key><integer>0</integer>
4602// CHECK-NEXT: </dict>
4603// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00004604// CHECK-NEXT: <key>line</key><integer>276</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00004605// CHECK-NEXT: <key>col</key><integer>10</integer>
4606// CHECK-NEXT: <key>file</key><integer>0</integer>
4607// CHECK-NEXT: </dict>
4608// CHECK-NEXT: </array>
Gabor Horvathefec1632015-10-22 11:53:04 +00004609// CHECK-NEXT: </dict>
4610// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +00004611// CHECK-NEXT: </dict>
Gabor Horvathefec1632015-10-22 11:53:04 +00004612// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00004613// CHECK-NEXT: <key>kind</key><string>control</string>
4614// CHECK-NEXT: <key>edges</key>
Gabor Horvathefec1632015-10-22 11:53:04 +00004615// CHECK-NEXT: <array>
4616// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00004617// CHECK-NEXT: <key>start</key>
4618// CHECK-NEXT: <array>
4619// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00004620// CHECK-NEXT: <key>line</key><integer>276</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00004621// CHECK-NEXT: <key>col</key><integer>3</integer>
4622// CHECK-NEXT: <key>file</key><integer>0</integer>
4623// CHECK-NEXT: </dict>
4624// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00004625// CHECK-NEXT: <key>line</key><integer>276</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00004626// CHECK-NEXT: <key>col</key><integer>10</integer>
4627// CHECK-NEXT: <key>file</key><integer>0</integer>
4628// CHECK-NEXT: </dict>
4629// CHECK-NEXT: </array>
4630// CHECK-NEXT: <key>end</key>
4631// CHECK-NEXT: <array>
4632// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00004633// CHECK-NEXT: <key>line</key><integer>276</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00004634// CHECK-NEXT: <key>col</key><integer>19</integer>
4635// CHECK-NEXT: <key>file</key><integer>0</integer>
4636// CHECK-NEXT: </dict>
4637// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00004638// CHECK-NEXT: <key>line</key><integer>276</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00004639// CHECK-NEXT: <key>col</key><integer>19</integer>
4640// CHECK-NEXT: <key>file</key><integer>0</integer>
4641// CHECK-NEXT: </dict>
4642// CHECK-NEXT: </array>
Gabor Horvathefec1632015-10-22 11:53:04 +00004643// CHECK-NEXT: </dict>
4644// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +00004645// CHECK-NEXT: </dict>
4646// CHECK-NEXT: <dict>
4647// CHECK-NEXT: <key>kind</key><string>event</string>
4648// CHECK-NEXT: <key>location</key>
4649// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00004650// CHECK-NEXT: <key>line</key><integer>276</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00004651// CHECK-NEXT: <key>col</key><integer>19</integer>
4652// CHECK-NEXT: <key>file</key><integer>0</integer>
4653// CHECK-NEXT: </dict>
4654// CHECK-NEXT: <key>ranges</key>
Gabor Horvathefec1632015-10-22 11:53:04 +00004655// CHECK-NEXT: <array>
Devin Coughlinab139a92016-12-05 16:28:47 +00004656// CHECK-NEXT: <array>
4657// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00004658// CHECK-NEXT: <key>line</key><integer>276</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00004659// CHECK-NEXT: <key>col</key><integer>19</integer>
4660// CHECK-NEXT: <key>file</key><integer>0</integer>
4661// CHECK-NEXT: </dict>
4662// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00004663// CHECK-NEXT: <key>line</key><integer>276</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00004664// CHECK-NEXT: <key>col</key><integer>38</integer>
4665// CHECK-NEXT: <key>file</key><integer>0</integer>
4666// CHECK-NEXT: </dict>
4667// CHECK-NEXT: </array>
Gabor Horvathefec1632015-10-22 11:53:04 +00004668// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +00004669// CHECK-NEXT: <key>depth</key><integer>0</integer>
4670// CHECK-NEXT: <key>extended_message</key>
4671// CHECK-NEXT: <string>Type &apos;NSNumber *&apos; is inferred from this context</string>
4672// CHECK-NEXT: <key>message</key>
4673// CHECK-NEXT: <string>Type &apos;NSNumber *&apos; is inferred from this context</string>
4674// CHECK-NEXT: </dict>
4675// CHECK-NEXT: <dict>
4676// CHECK-NEXT: <key>kind</key><string>event</string>
4677// CHECK-NEXT: <key>location</key>
4678// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00004679// CHECK-NEXT: <key>line</key><integer>276</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00004680// CHECK-NEXT: <key>col</key><integer>19</integer>
4681// CHECK-NEXT: <key>file</key><integer>0</integer>
4682// CHECK-NEXT: </dict>
4683// CHECK-NEXT: <key>ranges</key>
Gabor Horvathefec1632015-10-22 11:53:04 +00004684// CHECK-NEXT: <array>
Devin Coughlinab139a92016-12-05 16:28:47 +00004685// CHECK-NEXT: <array>
4686// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00004687// CHECK-NEXT: <key>line</key><integer>276</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00004688// CHECK-NEXT: <key>col</key><integer>19</integer>
4689// CHECK-NEXT: <key>file</key><integer>0</integer>
4690// CHECK-NEXT: </dict>
4691// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00004692// CHECK-NEXT: <key>line</key><integer>276</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00004693// CHECK-NEXT: <key>col</key><integer>38</integer>
4694// CHECK-NEXT: <key>file</key><integer>0</integer>
4695// CHECK-NEXT: </dict>
4696// CHECK-NEXT: </array>
Gabor Horvathefec1632015-10-22 11:53:04 +00004697// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +00004698// CHECK-NEXT: <key>depth</key><integer>0</integer>
4699// CHECK-NEXT: <key>extended_message</key>
4700// CHECK-NEXT: <string>Object has a dynamic type &apos;NSNumber *&apos; which is incompatible with static type &apos;NSString *&apos;</string>
4701// CHECK-NEXT: <key>message</key>
4702// CHECK-NEXT: <string>Object has a dynamic type &apos;NSNumber *&apos; which is incompatible with static type &apos;NSString *&apos;</string>
4703// CHECK-NEXT: </dict>
4704// CHECK-NEXT: </array>
4705// CHECK-NEXT: <key>description</key><string>Object has a dynamic type &apos;NSNumber *&apos; which is incompatible with static type &apos;NSString *&apos;</string>
4706// CHECK-NEXT: <key>category</key><string>Type Error</string>
4707// CHECK-NEXT: <key>type</key><string>Dynamic and static type mismatch</string>
4708// CHECK-NEXT: <key>check_name</key><string>alpha.core.DynamicTypeChecker</string>
4709// CHECK-NEXT: <!-- This hash is experimental and going to change! -->
4710// CHECK-NEXT: <key>issue_hash_content_of_line_in_context</key><string>2e9f738345d9fa7dae2324ff7accd1ae</string>
4711// CHECK-NEXT: <key>issue_context_kind</key><string>function</string>
4712// CHECK-NEXT: <key>issue_context</key><string>workWithProperties</string>
4713// CHECK-NEXT: <key>issue_hash_function_offset</key><string>2</string>
4714// CHECK-NEXT: <key>location</key>
4715// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00004716// CHECK-NEXT: <key>line</key><integer>276</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00004717// CHECK-NEXT: <key>col</key><integer>19</integer>
4718// CHECK-NEXT: <key>file</key><integer>0</integer>
4719// CHECK-NEXT: </dict>
4720// CHECK-NEXT: </dict>
4721// CHECK-NEXT: <dict>
4722// CHECK-NEXT: <key>path</key>
4723// CHECK-NEXT: <array>
Gabor Horvathefec1632015-10-22 11:53:04 +00004724// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00004725// CHECK-NEXT: <key>kind</key><string>control</string>
4726// CHECK-NEXT: <key>edges</key>
Gabor Horvathefec1632015-10-22 11:53:04 +00004727// CHECK-NEXT: <array>
4728// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00004729// CHECK-NEXT: <key>start</key>
4730// CHECK-NEXT: <array>
4731// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00004732// CHECK-NEXT: <key>line</key><integer>275</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00004733// CHECK-NEXT: <key>col</key><integer>3</integer>
4734// CHECK-NEXT: <key>file</key><integer>0</integer>
4735// CHECK-NEXT: </dict>
4736// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00004737// CHECK-NEXT: <key>line</key><integer>275</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00004738// CHECK-NEXT: <key>col</key><integer>9</integer>
4739// CHECK-NEXT: <key>file</key><integer>0</integer>
4740// CHECK-NEXT: </dict>
4741// CHECK-NEXT: </array>
4742// CHECK-NEXT: <key>end</key>
4743// CHECK-NEXT: <array>
4744// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00004745// CHECK-NEXT: <key>line</key><integer>278</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00004746// CHECK-NEXT: <key>col</key><integer>3</integer>
4747// CHECK-NEXT: <key>file</key><integer>0</integer>
4748// CHECK-NEXT: </dict>
4749// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00004750// CHECK-NEXT: <key>line</key><integer>278</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00004751// CHECK-NEXT: <key>col</key><integer>5</integer>
4752// CHECK-NEXT: <key>file</key><integer>0</integer>
4753// CHECK-NEXT: </dict>
4754// CHECK-NEXT: </array>
Gabor Horvathefec1632015-10-22 11:53:04 +00004755// CHECK-NEXT: </dict>
4756// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +00004757// CHECK-NEXT: </dict>
Gabor Horvathefec1632015-10-22 11:53:04 +00004758// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00004759// CHECK-NEXT: <key>kind</key><string>control</string>
4760// CHECK-NEXT: <key>edges</key>
Gabor Horvathefec1632015-10-22 11:53:04 +00004761// CHECK-NEXT: <array>
4762// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00004763// CHECK-NEXT: <key>start</key>
4764// CHECK-NEXT: <array>
4765// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00004766// CHECK-NEXT: <key>line</key><integer>278</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00004767// CHECK-NEXT: <key>col</key><integer>3</integer>
4768// CHECK-NEXT: <key>file</key><integer>0</integer>
4769// CHECK-NEXT: </dict>
4770// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00004771// CHECK-NEXT: <key>line</key><integer>278</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00004772// CHECK-NEXT: <key>col</key><integer>5</integer>
4773// CHECK-NEXT: <key>file</key><integer>0</integer>
4774// CHECK-NEXT: </dict>
4775// CHECK-NEXT: </array>
4776// CHECK-NEXT: <key>end</key>
4777// CHECK-NEXT: <array>
4778// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00004779// CHECK-NEXT: <key>line</key><integer>278</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00004780// CHECK-NEXT: <key>col</key><integer>9</integer>
4781// CHECK-NEXT: <key>file</key><integer>0</integer>
4782// CHECK-NEXT: </dict>
4783// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00004784// CHECK-NEXT: <key>line</key><integer>278</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00004785// CHECK-NEXT: <key>col</key><integer>9</integer>
4786// CHECK-NEXT: <key>file</key><integer>0</integer>
4787// CHECK-NEXT: </dict>
4788// CHECK-NEXT: </array>
Gabor Horvathefec1632015-10-22 11:53:04 +00004789// CHECK-NEXT: </dict>
4790// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +00004791// CHECK-NEXT: </dict>
4792// CHECK-NEXT: <dict>
4793// CHECK-NEXT: <key>kind</key><string>event</string>
4794// CHECK-NEXT: <key>location</key>
4795// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00004796// CHECK-NEXT: <key>line</key><integer>278</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00004797// CHECK-NEXT: <key>col</key><integer>9</integer>
4798// CHECK-NEXT: <key>file</key><integer>0</integer>
4799// CHECK-NEXT: </dict>
4800// CHECK-NEXT: <key>ranges</key>
Gabor Horvathefec1632015-10-22 11:53:04 +00004801// CHECK-NEXT: <array>
Devin Coughlinab139a92016-12-05 16:28:47 +00004802// CHECK-NEXT: <array>
4803// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00004804// CHECK-NEXT: <key>line</key><integer>278</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00004805// CHECK-NEXT: <key>col</key><integer>9</integer>
4806// CHECK-NEXT: <key>file</key><integer>0</integer>
4807// CHECK-NEXT: </dict>
4808// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00004809// CHECK-NEXT: <key>line</key><integer>278</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00004810// CHECK-NEXT: <key>col</key><integer>23</integer>
4811// CHECK-NEXT: <key>file</key><integer>0</integer>
4812// CHECK-NEXT: </dict>
4813// CHECK-NEXT: </array>
Gabor Horvathefec1632015-10-22 11:53:04 +00004814// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +00004815// CHECK-NEXT: <key>depth</key><integer>0</integer>
4816// CHECK-NEXT: <key>extended_message</key>
4817// CHECK-NEXT: <string>Type &apos;NSNumber *&apos; is inferred from this context</string>
4818// CHECK-NEXT: <key>message</key>
4819// CHECK-NEXT: <string>Type &apos;NSNumber *&apos; is inferred from this context</string>
4820// CHECK-NEXT: </dict>
4821// CHECK-NEXT: <dict>
4822// CHECK-NEXT: <key>kind</key><string>event</string>
4823// CHECK-NEXT: <key>location</key>
4824// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00004825// CHECK-NEXT: <key>line</key><integer>278</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00004826// CHECK-NEXT: <key>col</key><integer>9</integer>
4827// CHECK-NEXT: <key>file</key><integer>0</integer>
4828// CHECK-NEXT: </dict>
4829// CHECK-NEXT: <key>ranges</key>
Gabor Horvathefec1632015-10-22 11:53:04 +00004830// CHECK-NEXT: <array>
Devin Coughlinab139a92016-12-05 16:28:47 +00004831// CHECK-NEXT: <array>
4832// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00004833// CHECK-NEXT: <key>line</key><integer>278</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00004834// CHECK-NEXT: <key>col</key><integer>9</integer>
4835// CHECK-NEXT: <key>file</key><integer>0</integer>
4836// CHECK-NEXT: </dict>
4837// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00004838// CHECK-NEXT: <key>line</key><integer>278</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00004839// CHECK-NEXT: <key>col</key><integer>23</integer>
4840// CHECK-NEXT: <key>file</key><integer>0</integer>
4841// CHECK-NEXT: </dict>
4842// CHECK-NEXT: </array>
Gabor Horvathefec1632015-10-22 11:53:04 +00004843// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +00004844// CHECK-NEXT: <key>depth</key><integer>0</integer>
4845// CHECK-NEXT: <key>extended_message</key>
4846// CHECK-NEXT: <string>Object has a dynamic type &apos;NSNumber *&apos; which is incompatible with static type &apos;NSString *&apos;</string>
4847// CHECK-NEXT: <key>message</key>
4848// CHECK-NEXT: <string>Object has a dynamic type &apos;NSNumber *&apos; which is incompatible with static type &apos;NSString *&apos;</string>
4849// CHECK-NEXT: </dict>
4850// CHECK-NEXT: </array>
4851// CHECK-NEXT: <key>description</key><string>Object has a dynamic type &apos;NSNumber *&apos; which is incompatible with static type &apos;NSString *&apos;</string>
4852// CHECK-NEXT: <key>category</key><string>Type Error</string>
4853// CHECK-NEXT: <key>type</key><string>Dynamic and static type mismatch</string>
4854// CHECK-NEXT: <key>check_name</key><string>alpha.core.DynamicTypeChecker</string>
4855// CHECK-NEXT: <!-- This hash is experimental and going to change! -->
4856// CHECK-NEXT: <key>issue_hash_content_of_line_in_context</key><string>d85392b4efadf710b8da65a043a65e24</string>
4857// CHECK-NEXT: <key>issue_context_kind</key><string>function</string>
4858// CHECK-NEXT: <key>issue_context</key><string>workWithProperties</string>
4859// CHECK-NEXT: <key>issue_hash_function_offset</key><string>4</string>
4860// CHECK-NEXT: <key>location</key>
4861// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00004862// CHECK-NEXT: <key>line</key><integer>278</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00004863// CHECK-NEXT: <key>col</key><integer>9</integer>
4864// CHECK-NEXT: <key>file</key><integer>0</integer>
4865// CHECK-NEXT: </dict>
4866// CHECK-NEXT: </dict>
4867// CHECK-NEXT: <dict>
4868// CHECK-NEXT: <key>path</key>
4869// CHECK-NEXT: <array>
Gabor Horvathefec1632015-10-22 11:53:04 +00004870// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00004871// CHECK-NEXT: <key>kind</key><string>control</string>
4872// CHECK-NEXT: <key>edges</key>
Gabor Horvathefec1632015-10-22 11:53:04 +00004873// CHECK-NEXT: <array>
4874// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00004875// CHECK-NEXT: <key>start</key>
4876// CHECK-NEXT: <array>
4877// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00004878// CHECK-NEXT: <key>line</key><integer>275</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00004879// CHECK-NEXT: <key>col</key><integer>3</integer>
4880// CHECK-NEXT: <key>file</key><integer>0</integer>
4881// CHECK-NEXT: </dict>
4882// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00004883// CHECK-NEXT: <key>line</key><integer>275</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00004884// CHECK-NEXT: <key>col</key><integer>9</integer>
4885// CHECK-NEXT: <key>file</key><integer>0</integer>
4886// CHECK-NEXT: </dict>
4887// CHECK-NEXT: </array>
4888// CHECK-NEXT: <key>end</key>
4889// CHECK-NEXT: <array>
4890// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00004891// CHECK-NEXT: <key>line</key><integer>280</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00004892// CHECK-NEXT: <key>col</key><integer>3</integer>
4893// CHECK-NEXT: <key>file</key><integer>0</integer>
4894// CHECK-NEXT: </dict>
4895// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00004896// CHECK-NEXT: <key>line</key><integer>280</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00004897// CHECK-NEXT: <key>col</key><integer>5</integer>
4898// CHECK-NEXT: <key>file</key><integer>0</integer>
4899// CHECK-NEXT: </dict>
4900// CHECK-NEXT: </array>
Gabor Horvathefec1632015-10-22 11:53:04 +00004901// CHECK-NEXT: </dict>
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: <dict>
4905// CHECK-NEXT: <key>kind</key><string>control</string>
4906// CHECK-NEXT: <key>edges</key>
Gabor Horvathefec1632015-10-22 11:53:04 +00004907// CHECK-NEXT: <array>
4908// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00004909// CHECK-NEXT: <key>start</key>
4910// CHECK-NEXT: <array>
4911// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00004912// CHECK-NEXT: <key>line</key><integer>280</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00004913// CHECK-NEXT: <key>col</key><integer>3</integer>
4914// CHECK-NEXT: <key>file</key><integer>0</integer>
4915// CHECK-NEXT: </dict>
4916// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00004917// CHECK-NEXT: <key>line</key><integer>280</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00004918// CHECK-NEXT: <key>col</key><integer>5</integer>
4919// CHECK-NEXT: <key>file</key><integer>0</integer>
4920// CHECK-NEXT: </dict>
4921// CHECK-NEXT: </array>
4922// CHECK-NEXT: <key>end</key>
4923// CHECK-NEXT: <array>
4924// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00004925// CHECK-NEXT: <key>line</key><integer>280</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00004926// CHECK-NEXT: <key>col</key><integer>11</integer>
4927// CHECK-NEXT: <key>file</key><integer>0</integer>
4928// CHECK-NEXT: </dict>
4929// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00004930// CHECK-NEXT: <key>line</key><integer>280</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00004931// CHECK-NEXT: <key>col</key><integer>21</integer>
4932// CHECK-NEXT: <key>file</key><integer>0</integer>
4933// CHECK-NEXT: </dict>
4934// CHECK-NEXT: </array>
Gabor Horvathefec1632015-10-22 11:53:04 +00004935// CHECK-NEXT: </dict>
4936// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +00004937// CHECK-NEXT: </dict>
4938// CHECK-NEXT: <dict>
4939// CHECK-NEXT: <key>kind</key><string>event</string>
4940// CHECK-NEXT: <key>location</key>
4941// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00004942// CHECK-NEXT: <key>line</key><integer>280</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00004943// CHECK-NEXT: <key>col</key><integer>11</integer>
4944// CHECK-NEXT: <key>file</key><integer>0</integer>
4945// CHECK-NEXT: </dict>
4946// CHECK-NEXT: <key>ranges</key>
Gabor Horvathefec1632015-10-22 11:53:04 +00004947// CHECK-NEXT: <array>
Devin Coughlinab139a92016-12-05 16:28:47 +00004948// CHECK-NEXT: <array>
4949// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00004950// CHECK-NEXT: <key>line</key><integer>280</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00004951// CHECK-NEXT: <key>col</key><integer>11</integer>
4952// CHECK-NEXT: <key>file</key><integer>0</integer>
4953// CHECK-NEXT: </dict>
4954// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00004955// CHECK-NEXT: <key>line</key><integer>280</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00004956// CHECK-NEXT: <key>col</key><integer>21</integer>
4957// CHECK-NEXT: <key>file</key><integer>0</integer>
4958// CHECK-NEXT: </dict>
4959// CHECK-NEXT: </array>
Gabor Horvathefec1632015-10-22 11:53:04 +00004960// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +00004961// CHECK-NEXT: <key>depth</key><integer>0</integer>
4962// CHECK-NEXT: <key>extended_message</key>
4963// CHECK-NEXT: <string>Type &apos;NSNumber *&apos; is inferred from this context</string>
4964// CHECK-NEXT: <key>message</key>
4965// CHECK-NEXT: <string>Type &apos;NSNumber *&apos; is inferred from this context</string>
4966// CHECK-NEXT: </dict>
4967// CHECK-NEXT: <dict>
4968// CHECK-NEXT: <key>kind</key><string>event</string>
4969// CHECK-NEXT: <key>location</key>
4970// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00004971// CHECK-NEXT: <key>line</key><integer>280</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00004972// CHECK-NEXT: <key>col</key><integer>9</integer>
4973// CHECK-NEXT: <key>file</key><integer>0</integer>
4974// CHECK-NEXT: </dict>
4975// CHECK-NEXT: <key>ranges</key>
Gabor Horvathefec1632015-10-22 11:53:04 +00004976// CHECK-NEXT: <array>
Devin Coughlinab139a92016-12-05 16:28:47 +00004977// CHECK-NEXT: <array>
4978// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00004979// CHECK-NEXT: <key>line</key><integer>280</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00004980// CHECK-NEXT: <key>col</key><integer>9</integer>
4981// CHECK-NEXT: <key>file</key><integer>0</integer>
4982// CHECK-NEXT: </dict>
4983// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00004984// CHECK-NEXT: <key>line</key><integer>280</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00004985// CHECK-NEXT: <key>col</key><integer>21</integer>
4986// CHECK-NEXT: <key>file</key><integer>0</integer>
4987// CHECK-NEXT: </dict>
4988// CHECK-NEXT: </array>
Gabor Horvathefec1632015-10-22 11:53:04 +00004989// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +00004990// CHECK-NEXT: <key>depth</key><integer>0</integer>
4991// CHECK-NEXT: <key>extended_message</key>
4992// CHECK-NEXT: <string>Object has a dynamic type &apos;NSNumber *&apos; which is incompatible with static type &apos;NSString *&apos;</string>
4993// CHECK-NEXT: <key>message</key>
4994// CHECK-NEXT: <string>Object has a dynamic type &apos;NSNumber *&apos; which is incompatible with static type &apos;NSString *&apos;</string>
4995// CHECK-NEXT: </dict>
4996// CHECK-NEXT: </array>
4997// CHECK-NEXT: <key>description</key><string>Object has a dynamic type &apos;NSNumber *&apos; which is incompatible with static type &apos;NSString *&apos;</string>
4998// CHECK-NEXT: <key>category</key><string>Type Error</string>
4999// CHECK-NEXT: <key>type</key><string>Dynamic and static type mismatch</string>
5000// CHECK-NEXT: <key>check_name</key><string>alpha.core.DynamicTypeChecker</string>
5001// CHECK-NEXT: <!-- This hash is experimental and going to change! -->
5002// CHECK-NEXT: <key>issue_hash_content_of_line_in_context</key><string>456c6227549a5e577088c9dce4cea452</string>
5003// CHECK-NEXT: <key>issue_context_kind</key><string>function</string>
5004// CHECK-NEXT: <key>issue_context</key><string>workWithProperties</string>
5005// CHECK-NEXT: <key>issue_hash_function_offset</key><string>6</string>
5006// CHECK-NEXT: <key>location</key>
5007// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00005008// CHECK-NEXT: <key>line</key><integer>280</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00005009// CHECK-NEXT: <key>col</key><integer>9</integer>
5010// CHECK-NEXT: <key>file</key><integer>0</integer>
5011// CHECK-NEXT: </dict>
5012// CHECK-NEXT: </dict>
5013// CHECK-NEXT: <dict>
5014// CHECK-NEXT: <key>path</key>
5015// CHECK-NEXT: <array>
Gabor Horvathefec1632015-10-22 11:53:04 +00005016// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00005017// CHECK-NEXT: <key>kind</key><string>control</string>
5018// CHECK-NEXT: <key>edges</key>
Gabor Horvathefec1632015-10-22 11:53:04 +00005019// CHECK-NEXT: <array>
5020// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00005021// CHECK-NEXT: <key>start</key>
5022// CHECK-NEXT: <array>
5023// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00005024// CHECK-NEXT: <key>line</key><integer>275</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00005025// CHECK-NEXT: <key>col</key><integer>3</integer>
5026// CHECK-NEXT: <key>file</key><integer>0</integer>
5027// CHECK-NEXT: </dict>
5028// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00005029// CHECK-NEXT: <key>line</key><integer>275</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00005030// CHECK-NEXT: <key>col</key><integer>9</integer>
5031// CHECK-NEXT: <key>file</key><integer>0</integer>
5032// CHECK-NEXT: </dict>
5033// CHECK-NEXT: </array>
5034// CHECK-NEXT: <key>end</key>
5035// CHECK-NEXT: <array>
5036// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00005037// CHECK-NEXT: <key>line</key><integer>282</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00005038// CHECK-NEXT: <key>col</key><integer>3</integer>
5039// CHECK-NEXT: <key>file</key><integer>0</integer>
5040// CHECK-NEXT: </dict>
5041// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00005042// CHECK-NEXT: <key>line</key><integer>282</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00005043// CHECK-NEXT: <key>col</key><integer>5</integer>
5044// CHECK-NEXT: <key>file</key><integer>0</integer>
5045// CHECK-NEXT: </dict>
5046// CHECK-NEXT: </array>
Gabor Horvathefec1632015-10-22 11:53:04 +00005047// CHECK-NEXT: </dict>
5048// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +00005049// CHECK-NEXT: </dict>
Gabor Horvathefec1632015-10-22 11:53:04 +00005050// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00005051// CHECK-NEXT: <key>kind</key><string>control</string>
5052// CHECK-NEXT: <key>edges</key>
Gabor Horvathefec1632015-10-22 11:53:04 +00005053// CHECK-NEXT: <array>
5054// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00005055// CHECK-NEXT: <key>start</key>
5056// CHECK-NEXT: <array>
5057// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00005058// CHECK-NEXT: <key>line</key><integer>282</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00005059// CHECK-NEXT: <key>col</key><integer>3</integer>
5060// CHECK-NEXT: <key>file</key><integer>0</integer>
5061// CHECK-NEXT: </dict>
5062// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00005063// CHECK-NEXT: <key>line</key><integer>282</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00005064// CHECK-NEXT: <key>col</key><integer>5</integer>
5065// CHECK-NEXT: <key>file</key><integer>0</integer>
5066// CHECK-NEXT: </dict>
5067// CHECK-NEXT: </array>
5068// CHECK-NEXT: <key>end</key>
5069// CHECK-NEXT: <array>
5070// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00005071// CHECK-NEXT: <key>line</key><integer>282</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00005072// CHECK-NEXT: <key>col</key><integer>9</integer>
5073// CHECK-NEXT: <key>file</key><integer>0</integer>
5074// CHECK-NEXT: </dict>
5075// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00005076// CHECK-NEXT: <key>line</key><integer>282</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00005077// CHECK-NEXT: <key>col</key><integer>9</integer>
5078// CHECK-NEXT: <key>file</key><integer>0</integer>
5079// CHECK-NEXT: </dict>
5080// CHECK-NEXT: </array>
Gabor Horvathefec1632015-10-22 11:53:04 +00005081// CHECK-NEXT: </dict>
5082// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +00005083// CHECK-NEXT: </dict>
5084// CHECK-NEXT: <dict>
5085// CHECK-NEXT: <key>kind</key><string>event</string>
5086// CHECK-NEXT: <key>location</key>
5087// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00005088// CHECK-NEXT: <key>line</key><integer>282</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00005089// CHECK-NEXT: <key>col</key><integer>9</integer>
5090// CHECK-NEXT: <key>file</key><integer>0</integer>
5091// CHECK-NEXT: </dict>
5092// CHECK-NEXT: <key>ranges</key>
Gabor Horvathefec1632015-10-22 11:53:04 +00005093// CHECK-NEXT: <array>
Devin Coughlinab139a92016-12-05 16:28:47 +00005094// CHECK-NEXT: <array>
5095// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00005096// CHECK-NEXT: <key>line</key><integer>282</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00005097// CHECK-NEXT: <key>col</key><integer>9</integer>
5098// CHECK-NEXT: <key>file</key><integer>0</integer>
5099// CHECK-NEXT: </dict>
5100// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00005101// CHECK-NEXT: <key>line</key><integer>282</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00005102// CHECK-NEXT: <key>col</key><integer>9</integer>
5103// CHECK-NEXT: <key>file</key><integer>0</integer>
5104// CHECK-NEXT: </dict>
5105// CHECK-NEXT: </array>
Gabor Horvathefec1632015-10-22 11:53:04 +00005106// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +00005107// CHECK-NEXT: <key>depth</key><integer>0</integer>
5108// CHECK-NEXT: <key>extended_message</key>
5109// CHECK-NEXT: <string>Type &apos;NSNumber *&apos; is inferred from this context</string>
5110// CHECK-NEXT: <key>message</key>
5111// CHECK-NEXT: <string>Type &apos;NSNumber *&apos; is inferred from this context</string>
5112// CHECK-NEXT: </dict>
5113// CHECK-NEXT: <dict>
5114// CHECK-NEXT: <key>kind</key><string>event</string>
5115// CHECK-NEXT: <key>location</key>
5116// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00005117// CHECK-NEXT: <key>line</key><integer>282</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00005118// CHECK-NEXT: <key>col</key><integer>9</integer>
5119// CHECK-NEXT: <key>file</key><integer>0</integer>
5120// CHECK-NEXT: </dict>
5121// CHECK-NEXT: <key>ranges</key>
Gabor Horvathefec1632015-10-22 11:53:04 +00005122// CHECK-NEXT: <array>
Devin Coughlinab139a92016-12-05 16:28:47 +00005123// CHECK-NEXT: <array>
5124// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00005125// CHECK-NEXT: <key>line</key><integer>282</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00005126// CHECK-NEXT: <key>col</key><integer>9</integer>
5127// CHECK-NEXT: <key>file</key><integer>0</integer>
5128// CHECK-NEXT: </dict>
5129// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00005130// CHECK-NEXT: <key>line</key><integer>282</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00005131// CHECK-NEXT: <key>col</key><integer>12</integer>
5132// CHECK-NEXT: <key>file</key><integer>0</integer>
5133// CHECK-NEXT: </dict>
5134// CHECK-NEXT: </array>
Gabor Horvathefec1632015-10-22 11:53:04 +00005135// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +00005136// CHECK-NEXT: <key>depth</key><integer>0</integer>
5137// CHECK-NEXT: <key>extended_message</key>
5138// CHECK-NEXT: <string>Object has a dynamic type &apos;NSNumber *&apos; which is incompatible with static type &apos;NSString *&apos;</string>
5139// CHECK-NEXT: <key>message</key>
5140// CHECK-NEXT: <string>Object has a dynamic type &apos;NSNumber *&apos; which is incompatible with static type &apos;NSString *&apos;</string>
5141// CHECK-NEXT: </dict>
5142// CHECK-NEXT: </array>
5143// CHECK-NEXT: <key>description</key><string>Object has a dynamic type &apos;NSNumber *&apos; which is incompatible with static type &apos;NSString *&apos;</string>
5144// CHECK-NEXT: <key>category</key><string>Type Error</string>
5145// CHECK-NEXT: <key>type</key><string>Dynamic and static type mismatch</string>
5146// CHECK-NEXT: <key>check_name</key><string>alpha.core.DynamicTypeChecker</string>
5147// CHECK-NEXT: <!-- This hash is experimental and going to change! -->
5148// CHECK-NEXT: <key>issue_hash_content_of_line_in_context</key><string>df7f090d2b72ac07bc2351177ed6552d</string>
5149// CHECK-NEXT: <key>issue_context_kind</key><string>function</string>
5150// CHECK-NEXT: <key>issue_context</key><string>workWithProperties</string>
5151// CHECK-NEXT: <key>issue_hash_function_offset</key><string>8</string>
5152// CHECK-NEXT: <key>location</key>
5153// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00005154// CHECK-NEXT: <key>line</key><integer>282</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00005155// CHECK-NEXT: <key>col</key><integer>9</integer>
5156// CHECK-NEXT: <key>file</key><integer>0</integer>
5157// CHECK-NEXT: </dict>
5158// CHECK-NEXT: </dict>
5159// CHECK-NEXT: <dict>
5160// CHECK-NEXT: <key>path</key>
5161// CHECK-NEXT: <array>
Gabor Horvathefec1632015-10-22 11:53:04 +00005162// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00005163// CHECK-NEXT: <key>kind</key><string>event</string>
5164// CHECK-NEXT: <key>location</key>
5165// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00005166// CHECK-NEXT: <key>line</key><integer>288</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00005167// CHECK-NEXT: <key>col</key><integer>7</integer>
5168// CHECK-NEXT: <key>file</key><integer>0</integer>
5169// CHECK-NEXT: </dict>
5170// CHECK-NEXT: <key>ranges</key>
5171// CHECK-NEXT: <array>
5172// CHECK-NEXT: <array>
5173// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00005174// CHECK-NEXT: <key>line</key><integer>288</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00005175// CHECK-NEXT: <key>col</key><integer>7</integer>
5176// CHECK-NEXT: <key>file</key><integer>0</integer>
5177// CHECK-NEXT: </dict>
5178// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00005179// CHECK-NEXT: <key>line</key><integer>288</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00005180// CHECK-NEXT: <key>col</key><integer>7</integer>
5181// CHECK-NEXT: <key>file</key><integer>0</integer>
5182// CHECK-NEXT: </dict>
5183// CHECK-NEXT: </array>
5184// CHECK-NEXT: </array>
5185// CHECK-NEXT: <key>depth</key><integer>0</integer>
5186// CHECK-NEXT: <key>extended_message</key>
5187// 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>
5188// CHECK-NEXT: <key>message</key>
5189// 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 +00005190// CHECK-NEXT: </dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00005191// CHECK-NEXT: <dict>
5192// CHECK-NEXT: <key>kind</key><string>control</string>
5193// CHECK-NEXT: <key>edges</key>
Gabor Horvathefec1632015-10-22 11:53:04 +00005194// CHECK-NEXT: <array>
5195// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00005196// CHECK-NEXT: <key>start</key>
5197// CHECK-NEXT: <array>
5198// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00005199// CHECK-NEXT: <key>line</key><integer>288</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00005200// CHECK-NEXT: <key>col</key><integer>3</integer>
5201// CHECK-NEXT: <key>file</key><integer>0</integer>
5202// CHECK-NEXT: </dict>
5203// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00005204// CHECK-NEXT: <key>line</key><integer>288</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00005205// CHECK-NEXT: <key>col</key><integer>3</integer>
5206// CHECK-NEXT: <key>file</key><integer>0</integer>
5207// CHECK-NEXT: </dict>
5208// CHECK-NEXT: </array>
5209// CHECK-NEXT: <key>end</key>
5210// CHECK-NEXT: <array>
5211// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00005212// CHECK-NEXT: <key>line</key><integer>289</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00005213// CHECK-NEXT: <key>col</key><integer>3</integer>
5214// CHECK-NEXT: <key>file</key><integer>0</integer>
5215// CHECK-NEXT: </dict>
5216// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00005217// CHECK-NEXT: <key>line</key><integer>289</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00005218// CHECK-NEXT: <key>col</key><integer>4</integer>
5219// CHECK-NEXT: <key>file</key><integer>0</integer>
5220// CHECK-NEXT: </dict>
5221// CHECK-NEXT: </array>
Gabor Horvathefec1632015-10-22 11:53:04 +00005222// CHECK-NEXT: </dict>
5223// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +00005224// CHECK-NEXT: </dict>
Gabor Horvathefec1632015-10-22 11:53:04 +00005225// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00005226// CHECK-NEXT: <key>kind</key><string>control</string>
5227// CHECK-NEXT: <key>edges</key>
Gabor Horvathefec1632015-10-22 11:53:04 +00005228// CHECK-NEXT: <array>
5229// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00005230// CHECK-NEXT: <key>start</key>
5231// CHECK-NEXT: <array>
5232// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00005233// CHECK-NEXT: <key>line</key><integer>289</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00005234// CHECK-NEXT: <key>col</key><integer>3</integer>
5235// CHECK-NEXT: <key>file</key><integer>0</integer>
5236// CHECK-NEXT: </dict>
5237// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00005238// CHECK-NEXT: <key>line</key><integer>289</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00005239// CHECK-NEXT: <key>col</key><integer>4</integer>
5240// CHECK-NEXT: <key>file</key><integer>0</integer>
5241// CHECK-NEXT: </dict>
5242// CHECK-NEXT: </array>
5243// CHECK-NEXT: <key>end</key>
5244// CHECK-NEXT: <array>
5245// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00005246// CHECK-NEXT: <key>line</key><integer>289</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00005247// CHECK-NEXT: <key>col</key><integer>7</integer>
5248// CHECK-NEXT: <key>file</key><integer>0</integer>
5249// CHECK-NEXT: </dict>
5250// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00005251// CHECK-NEXT: <key>line</key><integer>289</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00005252// CHECK-NEXT: <key>col</key><integer>16</integer>
5253// CHECK-NEXT: <key>file</key><integer>0</integer>
5254// CHECK-NEXT: </dict>
5255// CHECK-NEXT: </array>
Gabor Horvathefec1632015-10-22 11:53:04 +00005256// CHECK-NEXT: </dict>
5257// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +00005258// CHECK-NEXT: </dict>
Gabor Horvathefec1632015-10-22 11:53:04 +00005259// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00005260// CHECK-NEXT: <key>kind</key><string>event</string>
5261// CHECK-NEXT: <key>location</key>
5262// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00005263// CHECK-NEXT: <key>line</key><integer>289</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00005264// CHECK-NEXT: <key>col</key><integer>7</integer>
5265// CHECK-NEXT: <key>file</key><integer>0</integer>
5266// CHECK-NEXT: </dict>
5267// CHECK-NEXT: <key>ranges</key>
5268// CHECK-NEXT: <array>
5269// CHECK-NEXT: <array>
5270// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00005271// CHECK-NEXT: <key>line</key><integer>289</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00005272// CHECK-NEXT: <key>col</key><integer>7</integer>
5273// CHECK-NEXT: <key>file</key><integer>0</integer>
5274// CHECK-NEXT: </dict>
5275// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00005276// CHECK-NEXT: <key>line</key><integer>289</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00005277// CHECK-NEXT: <key>col</key><integer>23</integer>
5278// CHECK-NEXT: <key>file</key><integer>0</integer>
5279// CHECK-NEXT: </dict>
5280// CHECK-NEXT: </array>
5281// CHECK-NEXT: </array>
5282// CHECK-NEXT: <key>depth</key><integer>0</integer>
5283// CHECK-NEXT: <key>extended_message</key>
5284// CHECK-NEXT: <string>Assuming the condition is true</string>
5285// CHECK-NEXT: <key>message</key>
5286// CHECK-NEXT: <string>Assuming the condition is true</string>
Gabor Horvathefec1632015-10-22 11:53:04 +00005287// CHECK-NEXT: </dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00005288// CHECK-NEXT: <dict>
5289// CHECK-NEXT: <key>kind</key><string>control</string>
5290// CHECK-NEXT: <key>edges</key>
Gabor Horvathefec1632015-10-22 11:53:04 +00005291// CHECK-NEXT: <array>
5292// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00005293// CHECK-NEXT: <key>start</key>
5294// CHECK-NEXT: <array>
5295// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00005296// CHECK-NEXT: <key>line</key><integer>289</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00005297// CHECK-NEXT: <key>col</key><integer>7</integer>
5298// CHECK-NEXT: <key>file</key><integer>0</integer>
5299// CHECK-NEXT: </dict>
5300// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00005301// CHECK-NEXT: <key>line</key><integer>289</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00005302// CHECK-NEXT: <key>col</key><integer>16</integer>
5303// CHECK-NEXT: <key>file</key><integer>0</integer>
5304// CHECK-NEXT: </dict>
5305// CHECK-NEXT: </array>
5306// CHECK-NEXT: <key>end</key>
5307// CHECK-NEXT: <array>
5308// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00005309// CHECK-NEXT: <key>line</key><integer>290</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00005310// CHECK-NEXT: <key>col</key><integer>5</integer>
5311// CHECK-NEXT: <key>file</key><integer>0</integer>
5312// CHECK-NEXT: </dict>
5313// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00005314// CHECK-NEXT: <key>line</key><integer>290</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00005315// CHECK-NEXT: <key>col</key><integer>5</integer>
5316// CHECK-NEXT: <key>file</key><integer>0</integer>
5317// CHECK-NEXT: </dict>
5318// CHECK-NEXT: </array>
Gabor Horvathefec1632015-10-22 11:53:04 +00005319// CHECK-NEXT: </dict>
5320// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +00005321// CHECK-NEXT: </dict>
Artem Dergachev0c334062016-10-05 08:19:49 +00005322// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00005323// CHECK-NEXT: <key>kind</key><string>control</string>
5324// CHECK-NEXT: <key>edges</key>
Artem Dergachev0c334062016-10-05 08:19:49 +00005325// CHECK-NEXT: <array>
5326// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00005327// CHECK-NEXT: <key>start</key>
5328// CHECK-NEXT: <array>
5329// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00005330// CHECK-NEXT: <key>line</key><integer>290</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00005331// CHECK-NEXT: <key>col</key><integer>5</integer>
5332// CHECK-NEXT: <key>file</key><integer>0</integer>
5333// CHECK-NEXT: </dict>
5334// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00005335// CHECK-NEXT: <key>line</key><integer>290</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00005336// CHECK-NEXT: <key>col</key><integer>5</integer>
5337// CHECK-NEXT: <key>file</key><integer>0</integer>
5338// CHECK-NEXT: </dict>
5339// CHECK-NEXT: </array>
5340// CHECK-NEXT: <key>end</key>
5341// CHECK-NEXT: <array>
5342// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00005343// CHECK-NEXT: <key>line</key><integer>291</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00005344// CHECK-NEXT: <key>col</key><integer>5</integer>
5345// CHECK-NEXT: <key>file</key><integer>0</integer>
5346// CHECK-NEXT: </dict>
5347// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00005348// CHECK-NEXT: <key>line</key><integer>291</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00005349// CHECK-NEXT: <key>col</key><integer>5</integer>
5350// CHECK-NEXT: <key>file</key><integer>0</integer>
5351// CHECK-NEXT: </dict>
5352// CHECK-NEXT: </array>
Artem Dergachev0c334062016-10-05 08:19:49 +00005353// CHECK-NEXT: </dict>
5354// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +00005355// CHECK-NEXT: </dict>
5356// CHECK-NEXT: <dict>
5357// CHECK-NEXT: <key>kind</key><string>event</string>
5358// CHECK-NEXT: <key>location</key>
5359// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00005360// CHECK-NEXT: <key>line</key><integer>291</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00005361// CHECK-NEXT: <key>col</key><integer>5</integer>
5362// CHECK-NEXT: <key>file</key><integer>0</integer>
5363// CHECK-NEXT: </dict>
5364// CHECK-NEXT: <key>ranges</key>
Artem Dergachev0c334062016-10-05 08:19:49 +00005365// CHECK-NEXT: <array>
Devin Coughlinab139a92016-12-05 16:28:47 +00005366// CHECK-NEXT: <array>
5367// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00005368// CHECK-NEXT: <key>line</key><integer>291</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00005369// CHECK-NEXT: <key>col</key><integer>19</integer>
5370// CHECK-NEXT: <key>file</key><integer>0</integer>
5371// CHECK-NEXT: </dict>
5372// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00005373// CHECK-NEXT: <key>line</key><integer>291</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00005374// CHECK-NEXT: <key>col</key><integer>41</integer>
5375// CHECK-NEXT: <key>file</key><integer>0</integer>
5376// CHECK-NEXT: </dict>
5377// CHECK-NEXT: </array>
Gabor Horvathefec1632015-10-22 11:53:04 +00005378// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +00005379// CHECK-NEXT: <key>depth</key><integer>0</integer>
5380// CHECK-NEXT: <key>extended_message</key>
5381// CHECK-NEXT: <string>Conversion from value of type &apos;NSString *&apos; to incompatible type &apos;NSMutableString *&apos;</string>
5382// CHECK-NEXT: <key>message</key>
5383// CHECK-NEXT: <string>Conversion from value of type &apos;NSString *&apos; to incompatible type &apos;NSMutableString *&apos;</string>
5384// CHECK-NEXT: </dict>
5385// CHECK-NEXT: </array>
5386// CHECK-NEXT: <key>description</key><string>Conversion from value of type &apos;NSString *&apos; to incompatible type &apos;NSMutableString *&apos;</string>
5387// CHECK-NEXT: <key>category</key><string>Core Foundation/Objective-C</string>
5388// CHECK-NEXT: <key>type</key><string>Generics</string>
5389// CHECK-NEXT: <key>check_name</key><string>core.DynamicTypePropagation</string>
5390// CHECK-NEXT: <!-- This hash is experimental and going to change! -->
5391// CHECK-NEXT: <key>issue_hash_content_of_line_in_context</key><string>a0fa75143d7a7ac234292642a6d93360</string>
5392// CHECK-NEXT: <key>issue_context_kind</key><string>function</string>
5393// CHECK-NEXT: <key>issue_context</key><string>findMethodDeclInTrackedType</string>
5394// CHECK-NEXT: <key>issue_hash_function_offset</key><string>4</string>
5395// CHECK-NEXT: <key>location</key>
5396// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00005397// CHECK-NEXT: <key>line</key><integer>291</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00005398// CHECK-NEXT: <key>col</key><integer>5</integer>
5399// CHECK-NEXT: <key>file</key><integer>0</integer>
5400// CHECK-NEXT: </dict>
5401// CHECK-NEXT: </dict>
5402// CHECK-NEXT: <dict>
5403// CHECK-NEXT: <key>path</key>
5404// CHECK-NEXT: <array>
5405// CHECK-NEXT: <dict>
5406// CHECK-NEXT: <key>kind</key><string>event</string>
5407// CHECK-NEXT: <key>location</key>
5408// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00005409// CHECK-NEXT: <key>line</key><integer>300</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00005410// CHECK-NEXT: <key>col</key><integer>7</integer>
5411// CHECK-NEXT: <key>file</key><integer>0</integer>
5412// CHECK-NEXT: </dict>
5413// CHECK-NEXT: <key>ranges</key>
Gabor Horvathefec1632015-10-22 11:53:04 +00005414// CHECK-NEXT: <array>
Devin Coughlinab139a92016-12-05 16:28:47 +00005415// CHECK-NEXT: <array>
5416// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00005417// CHECK-NEXT: <key>line</key><integer>300</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00005418// CHECK-NEXT: <key>col</key><integer>7</integer>
5419// CHECK-NEXT: <key>file</key><integer>0</integer>
5420// CHECK-NEXT: </dict>
5421// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00005422// CHECK-NEXT: <key>line</key><integer>300</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00005423// CHECK-NEXT: <key>col</key><integer>7</integer>
5424// CHECK-NEXT: <key>file</key><integer>0</integer>
5425// CHECK-NEXT: </dict>
5426// CHECK-NEXT: </array>
Gabor Horvathefec1632015-10-22 11:53:04 +00005427// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +00005428// CHECK-NEXT: <key>depth</key><integer>0</integer>
5429// CHECK-NEXT: <key>extended_message</key>
5430// 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>
5431// CHECK-NEXT: <key>message</key>
5432// 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>
5433// CHECK-NEXT: </dict>
Gabor Horvathefec1632015-10-22 11:53:04 +00005434// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00005435// CHECK-NEXT: <key>kind</key><string>control</string>
5436// CHECK-NEXT: <key>edges</key>
Gabor Horvathefec1632015-10-22 11:53:04 +00005437// CHECK-NEXT: <array>
5438// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00005439// CHECK-NEXT: <key>start</key>
5440// CHECK-NEXT: <array>
5441// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00005442// CHECK-NEXT: <key>line</key><integer>300</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00005443// CHECK-NEXT: <key>col</key><integer>3</integer>
5444// CHECK-NEXT: <key>file</key><integer>0</integer>
5445// CHECK-NEXT: </dict>
5446// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00005447// CHECK-NEXT: <key>line</key><integer>300</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00005448// CHECK-NEXT: <key>col</key><integer>3</integer>
5449// CHECK-NEXT: <key>file</key><integer>0</integer>
5450// CHECK-NEXT: </dict>
5451// CHECK-NEXT: </array>
5452// CHECK-NEXT: <key>end</key>
5453// CHECK-NEXT: <array>
5454// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00005455// CHECK-NEXT: <key>line</key><integer>301</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00005456// CHECK-NEXT: <key>col</key><integer>3</integer>
5457// CHECK-NEXT: <key>file</key><integer>0</integer>
5458// CHECK-NEXT: </dict>
5459// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00005460// CHECK-NEXT: <key>line</key><integer>301</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00005461// CHECK-NEXT: <key>col</key><integer>4</integer>
5462// CHECK-NEXT: <key>file</key><integer>0</integer>
5463// CHECK-NEXT: </dict>
5464// CHECK-NEXT: </array>
Gabor Horvathefec1632015-10-22 11:53:04 +00005465// CHECK-NEXT: </dict>
5466// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +00005467// CHECK-NEXT: </dict>
Gabor Horvathefec1632015-10-22 11:53:04 +00005468// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00005469// CHECK-NEXT: <key>kind</key><string>control</string>
5470// CHECK-NEXT: <key>edges</key>
Gabor Horvathefec1632015-10-22 11:53:04 +00005471// CHECK-NEXT: <array>
5472// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00005473// CHECK-NEXT: <key>start</key>
5474// CHECK-NEXT: <array>
5475// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00005476// CHECK-NEXT: <key>line</key><integer>301</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00005477// CHECK-NEXT: <key>col</key><integer>3</integer>
5478// CHECK-NEXT: <key>file</key><integer>0</integer>
5479// CHECK-NEXT: </dict>
5480// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00005481// CHECK-NEXT: <key>line</key><integer>301</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00005482// CHECK-NEXT: <key>col</key><integer>4</integer>
5483// CHECK-NEXT: <key>file</key><integer>0</integer>
5484// CHECK-NEXT: </dict>
5485// CHECK-NEXT: </array>
5486// CHECK-NEXT: <key>end</key>
5487// CHECK-NEXT: <array>
5488// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00005489// CHECK-NEXT: <key>line</key><integer>301</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00005490// CHECK-NEXT: <key>col</key><integer>7</integer>
5491// CHECK-NEXT: <key>file</key><integer>0</integer>
5492// CHECK-NEXT: </dict>
5493// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00005494// CHECK-NEXT: <key>line</key><integer>301</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00005495// CHECK-NEXT: <key>col</key><integer>16</integer>
5496// CHECK-NEXT: <key>file</key><integer>0</integer>
5497// CHECK-NEXT: </dict>
5498// CHECK-NEXT: </array>
Gabor Horvathefec1632015-10-22 11:53:04 +00005499// CHECK-NEXT: </dict>
5500// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +00005501// CHECK-NEXT: </dict>
5502// CHECK-NEXT: <dict>
5503// CHECK-NEXT: <key>kind</key><string>event</string>
5504// CHECK-NEXT: <key>location</key>
5505// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00005506// CHECK-NEXT: <key>line</key><integer>301</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00005507// CHECK-NEXT: <key>col</key><integer>7</integer>
5508// CHECK-NEXT: <key>file</key><integer>0</integer>
5509// CHECK-NEXT: </dict>
5510// CHECK-NEXT: <key>ranges</key>
Gabor Horvathefec1632015-10-22 11:53:04 +00005511// CHECK-NEXT: <array>
Devin Coughlinab139a92016-12-05 16:28:47 +00005512// CHECK-NEXT: <array>
5513// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00005514// CHECK-NEXT: <key>line</key><integer>301</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00005515// CHECK-NEXT: <key>col</key><integer>7</integer>
5516// CHECK-NEXT: <key>file</key><integer>0</integer>
5517// CHECK-NEXT: </dict>
5518// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00005519// CHECK-NEXT: <key>line</key><integer>301</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00005520// CHECK-NEXT: <key>col</key><integer>23</integer>
5521// CHECK-NEXT: <key>file</key><integer>0</integer>
5522// CHECK-NEXT: </dict>
5523// CHECK-NEXT: </array>
Artem Dergachev0c334062016-10-05 08:19:49 +00005524// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +00005525// CHECK-NEXT: <key>depth</key><integer>0</integer>
5526// CHECK-NEXT: <key>extended_message</key>
5527// CHECK-NEXT: <string>Assuming the condition is true</string>
5528// CHECK-NEXT: <key>message</key>
5529// CHECK-NEXT: <string>Assuming the condition is true</string>
5530// CHECK-NEXT: </dict>
Artem Dergachev0c334062016-10-05 08:19:49 +00005531// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00005532// CHECK-NEXT: <key>kind</key><string>control</string>
5533// CHECK-NEXT: <key>edges</key>
Artem Dergachev0c334062016-10-05 08:19:49 +00005534// CHECK-NEXT: <array>
5535// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00005536// CHECK-NEXT: <key>start</key>
5537// CHECK-NEXT: <array>
5538// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00005539// CHECK-NEXT: <key>line</key><integer>301</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00005540// CHECK-NEXT: <key>col</key><integer>7</integer>
5541// CHECK-NEXT: <key>file</key><integer>0</integer>
5542// CHECK-NEXT: </dict>
5543// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00005544// CHECK-NEXT: <key>line</key><integer>301</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00005545// CHECK-NEXT: <key>col</key><integer>16</integer>
5546// CHECK-NEXT: <key>file</key><integer>0</integer>
5547// CHECK-NEXT: </dict>
5548// CHECK-NEXT: </array>
5549// CHECK-NEXT: <key>end</key>
5550// CHECK-NEXT: <array>
5551// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00005552// CHECK-NEXT: <key>line</key><integer>302</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00005553// CHECK-NEXT: <key>col</key><integer>5</integer>
5554// CHECK-NEXT: <key>file</key><integer>0</integer>
5555// CHECK-NEXT: </dict>
5556// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00005557// CHECK-NEXT: <key>line</key><integer>302</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00005558// CHECK-NEXT: <key>col</key><integer>5</integer>
5559// CHECK-NEXT: <key>file</key><integer>0</integer>
5560// CHECK-NEXT: </dict>
5561// CHECK-NEXT: </array>
Artem Dergachev0c334062016-10-05 08:19:49 +00005562// CHECK-NEXT: </dict>
5563// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +00005564// CHECK-NEXT: </dict>
5565// CHECK-NEXT: <dict>
5566// CHECK-NEXT: <key>kind</key><string>event</string>
5567// CHECK-NEXT: <key>location</key>
5568// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00005569// CHECK-NEXT: <key>line</key><integer>302</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00005570// CHECK-NEXT: <key>col</key><integer>5</integer>
5571// CHECK-NEXT: <key>file</key><integer>0</integer>
5572// CHECK-NEXT: </dict>
5573// CHECK-NEXT: <key>ranges</key>
Artem Dergachev0c334062016-10-05 08:19:49 +00005574// CHECK-NEXT: <array>
Devin Coughlinab139a92016-12-05 16:28:47 +00005575// CHECK-NEXT: <array>
5576// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00005577// CHECK-NEXT: <key>line</key><integer>302</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00005578// CHECK-NEXT: <key>col</key><integer>19</integer>
5579// CHECK-NEXT: <key>file</key><integer>0</integer>
5580// CHECK-NEXT: </dict>
5581// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00005582// CHECK-NEXT: <key>line</key><integer>302</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00005583// CHECK-NEXT: <key>col</key><integer>41</integer>
5584// CHECK-NEXT: <key>file</key><integer>0</integer>
5585// CHECK-NEXT: </dict>
5586// CHECK-NEXT: </array>
Gabor Horvathefec1632015-10-22 11:53:04 +00005587// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +00005588// CHECK-NEXT: <key>depth</key><integer>0</integer>
5589// CHECK-NEXT: <key>extended_message</key>
5590// CHECK-NEXT: <string>Conversion from value of type &apos;NSString *&apos; to incompatible type &apos;NSMutableString *&apos;</string>
5591// CHECK-NEXT: <key>message</key>
5592// CHECK-NEXT: <string>Conversion from value of type &apos;NSString *&apos; to incompatible type &apos;NSMutableString *&apos;</string>
5593// CHECK-NEXT: </dict>
5594// CHECK-NEXT: </array>
5595// CHECK-NEXT: <key>description</key><string>Conversion from value of type &apos;NSString *&apos; to incompatible type &apos;NSMutableString *&apos;</string>
5596// CHECK-NEXT: <key>category</key><string>Core Foundation/Objective-C</string>
5597// CHECK-NEXT: <key>type</key><string>Generics</string>
5598// CHECK-NEXT: <key>check_name</key><string>core.DynamicTypePropagation</string>
5599// CHECK-NEXT: <!-- This hash is experimental and going to change! -->
5600// CHECK-NEXT: <key>issue_hash_content_of_line_in_context</key><string>d0b99c8523e81ec43ba4ea80aeedef1b</string>
5601// CHECK-NEXT: <key>issue_context_kind</key><string>function</string>
5602// CHECK-NEXT: <key>issue_context</key><string>findMethodDeclInTrackedType2</string>
5603// CHECK-NEXT: <key>issue_hash_function_offset</key><string>3</string>
5604// CHECK-NEXT: <key>location</key>
5605// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00005606// CHECK-NEXT: <key>line</key><integer>302</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00005607// CHECK-NEXT: <key>col</key><integer>5</integer>
5608// CHECK-NEXT: <key>file</key><integer>0</integer>
5609// CHECK-NEXT: </dict>
5610// CHECK-NEXT: </dict>
5611// CHECK-NEXT: <dict>
5612// CHECK-NEXT: <key>path</key>
5613// CHECK-NEXT: <array>
Gabor Horvathefec1632015-10-22 11:53:04 +00005614// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00005615// CHECK-NEXT: <key>kind</key><string>control</string>
5616// CHECK-NEXT: <key>edges</key>
Gabor Horvathefec1632015-10-22 11:53:04 +00005617// CHECK-NEXT: <array>
5618// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00005619// CHECK-NEXT: <key>start</key>
5620// CHECK-NEXT: <array>
5621// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00005622// CHECK-NEXT: <key>line</key><integer>326</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00005623// CHECK-NEXT: <key>col</key><integer>3</integer>
5624// CHECK-NEXT: <key>file</key><integer>0</integer>
5625// CHECK-NEXT: </dict>
5626// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00005627// CHECK-NEXT: <key>line</key><integer>326</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00005628// CHECK-NEXT: <key>col</key><integer>7</integer>
5629// CHECK-NEXT: <key>file</key><integer>0</integer>
5630// CHECK-NEXT: </dict>
5631// CHECK-NEXT: </array>
5632// CHECK-NEXT: <key>end</key>
5633// CHECK-NEXT: <array>
5634// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00005635// CHECK-NEXT: <key>line</key><integer>327</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00005636// CHECK-NEXT: <key>col</key><integer>3</integer>
5637// CHECK-NEXT: <key>file</key><integer>0</integer>
5638// CHECK-NEXT: </dict>
5639// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00005640// CHECK-NEXT: <key>line</key><integer>327</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00005641// CHECK-NEXT: <key>col</key><integer>9</integer>
5642// CHECK-NEXT: <key>file</key><integer>0</integer>
5643// CHECK-NEXT: </dict>
5644// CHECK-NEXT: </array>
Gabor Horvathefec1632015-10-22 11:53:04 +00005645// CHECK-NEXT: </dict>
5646// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +00005647// CHECK-NEXT: </dict>
Gabor Horvathefec1632015-10-22 11:53:04 +00005648// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00005649// CHECK-NEXT: <key>kind</key><string>control</string>
5650// CHECK-NEXT: <key>edges</key>
Gabor Horvathefec1632015-10-22 11:53:04 +00005651// CHECK-NEXT: <array>
5652// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00005653// CHECK-NEXT: <key>start</key>
5654// CHECK-NEXT: <array>
5655// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00005656// CHECK-NEXT: <key>line</key><integer>327</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00005657// CHECK-NEXT: <key>col</key><integer>3</integer>
5658// CHECK-NEXT: <key>file</key><integer>0</integer>
5659// CHECK-NEXT: </dict>
5660// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00005661// CHECK-NEXT: <key>line</key><integer>327</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00005662// CHECK-NEXT: <key>col</key><integer>9</integer>
5663// CHECK-NEXT: <key>file</key><integer>0</integer>
5664// CHECK-NEXT: </dict>
5665// CHECK-NEXT: </array>
5666// CHECK-NEXT: <key>end</key>
5667// CHECK-NEXT: <array>
5668// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00005669// CHECK-NEXT: <key>line</key><integer>327</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00005670// CHECK-NEXT: <key>col</key><integer>28</integer>
5671// CHECK-NEXT: <key>file</key><integer>0</integer>
5672// CHECK-NEXT: </dict>
5673// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00005674// CHECK-NEXT: <key>line</key><integer>327</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00005675// CHECK-NEXT: <key>col</key><integer>28</integer>
5676// CHECK-NEXT: <key>file</key><integer>0</integer>
5677// CHECK-NEXT: </dict>
5678// CHECK-NEXT: </array>
Gabor Horvathefec1632015-10-22 11:53:04 +00005679// CHECK-NEXT: </dict>
5680// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +00005681// CHECK-NEXT: </dict>
5682// CHECK-NEXT: <dict>
5683// CHECK-NEXT: <key>kind</key><string>event</string>
5684// CHECK-NEXT: <key>location</key>
5685// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00005686// CHECK-NEXT: <key>line</key><integer>327</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00005687// CHECK-NEXT: <key>col</key><integer>28</integer>
5688// CHECK-NEXT: <key>file</key><integer>0</integer>
5689// CHECK-NEXT: </dict>
5690// CHECK-NEXT: <key>ranges</key>
Gabor Horvathefec1632015-10-22 11:53:04 +00005691// CHECK-NEXT: <array>
Devin Coughlinab139a92016-12-05 16:28:47 +00005692// CHECK-NEXT: <array>
5693// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00005694// CHECK-NEXT: <key>line</key><integer>327</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00005695// CHECK-NEXT: <key>col</key><integer>28</integer>
5696// CHECK-NEXT: <key>file</key><integer>0</integer>
5697// CHECK-NEXT: </dict>
5698// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00005699// CHECK-NEXT: <key>line</key><integer>327</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00005700// CHECK-NEXT: <key>col</key><integer>39</integer>
5701// CHECK-NEXT: <key>file</key><integer>0</integer>
5702// CHECK-NEXT: </dict>
5703// CHECK-NEXT: </array>
Gabor Horvathefec1632015-10-22 11:53:04 +00005704// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +00005705// CHECK-NEXT: <key>depth</key><integer>0</integer>
5706// CHECK-NEXT: <key>extended_message</key>
5707// CHECK-NEXT: <string>Type &apos;NSArray&lt;NSString *&gt; *&apos; is inferred from this context</string>
5708// CHECK-NEXT: <key>message</key>
5709// CHECK-NEXT: <string>Type &apos;NSArray&lt;NSString *&gt; *&apos; is inferred from this context</string>
5710// CHECK-NEXT: </dict>
Gabor Horvathefec1632015-10-22 11:53:04 +00005711// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00005712// CHECK-NEXT: <key>kind</key><string>event</string>
5713// CHECK-NEXT: <key>location</key>
5714// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00005715// CHECK-NEXT: <key>line</key><integer>327</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00005716// CHECK-NEXT: <key>col</key><integer>28</integer>
5717// CHECK-NEXT: <key>file</key><integer>0</integer>
5718// CHECK-NEXT: </dict>
5719// CHECK-NEXT: <key>ranges</key>
5720// CHECK-NEXT: <array>
5721// CHECK-NEXT: <array>
5722// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00005723// CHECK-NEXT: <key>line</key><integer>327</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00005724// CHECK-NEXT: <key>col</key><integer>28</integer>
5725// CHECK-NEXT: <key>file</key><integer>0</integer>
5726// CHECK-NEXT: </dict>
5727// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00005728// CHECK-NEXT: <key>line</key><integer>327</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00005729// CHECK-NEXT: <key>col</key><integer>39</integer>
5730// CHECK-NEXT: <key>file</key><integer>0</integer>
5731// CHECK-NEXT: </dict>
5732// CHECK-NEXT: </array>
5733// CHECK-NEXT: </array>
5734// CHECK-NEXT: <key>depth</key><integer>0</integer>
5735// CHECK-NEXT: <key>extended_message</key>
5736// CHECK-NEXT: <string>Conversion from value of type &apos;NSArray&lt;NSString *&gt; *&apos; to incompatible type &apos;NSArray&lt;NSNumber *&gt; *&apos;</string>
5737// CHECK-NEXT: <key>message</key>
5738// 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 +00005739// CHECK-NEXT: </dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00005740// CHECK-NEXT: </array>
5741// 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>
5742// CHECK-NEXT: <key>category</key><string>Core Foundation/Objective-C</string>
5743// CHECK-NEXT: <key>type</key><string>Generics</string>
5744// CHECK-NEXT: <key>check_name</key><string>core.DynamicTypePropagation</string>
5745// CHECK-NEXT: <!-- This hash is experimental and going to change! -->
5746// CHECK-NEXT: <key>issue_hash_content_of_line_in_context</key><string>46aa94b866747bcbe1ded581da7a2633</string>
5747// CHECK-NEXT: <key>issue_context_kind</key><string>function</string>
5748// CHECK-NEXT: <key>issue_context</key><string>trackedClassVariables</string>
5749// CHECK-NEXT: <key>issue_hash_function_offset</key><string>2</string>
5750// CHECK-NEXT: <key>location</key>
5751// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00005752// CHECK-NEXT: <key>line</key><integer>327</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00005753// CHECK-NEXT: <key>col</key><integer>28</integer>
5754// CHECK-NEXT: <key>file</key><integer>0</integer>
5755// CHECK-NEXT: </dict>
5756// CHECK-NEXT: </dict>
5757// CHECK-NEXT: <dict>
5758// CHECK-NEXT: <key>path</key>
5759// CHECK-NEXT: <array>
5760// CHECK-NEXT: <dict>
5761// CHECK-NEXT: <key>kind</key><string>control</string>
5762// CHECK-NEXT: <key>edges</key>
Gabor Horvathefec1632015-10-22 11:53:04 +00005763// CHECK-NEXT: <array>
5764// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00005765// CHECK-NEXT: <key>start</key>
5766// CHECK-NEXT: <array>
5767// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00005768// CHECK-NEXT: <key>line</key><integer>326</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00005769// CHECK-NEXT: <key>col</key><integer>3</integer>
5770// CHECK-NEXT: <key>file</key><integer>0</integer>
5771// CHECK-NEXT: </dict>
5772// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00005773// CHECK-NEXT: <key>line</key><integer>326</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00005774// CHECK-NEXT: <key>col</key><integer>7</integer>
5775// CHECK-NEXT: <key>file</key><integer>0</integer>
5776// CHECK-NEXT: </dict>
5777// CHECK-NEXT: </array>
5778// CHECK-NEXT: <key>end</key>
5779// CHECK-NEXT: <array>
5780// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00005781// CHECK-NEXT: <key>line</key><integer>328</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00005782// CHECK-NEXT: <key>col</key><integer>3</integer>
5783// CHECK-NEXT: <key>file</key><integer>0</integer>
5784// CHECK-NEXT: </dict>
5785// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00005786// CHECK-NEXT: <key>line</key><integer>328</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00005787// CHECK-NEXT: <key>col</key><integer>3</integer>
5788// CHECK-NEXT: <key>file</key><integer>0</integer>
5789// CHECK-NEXT: </dict>
5790// CHECK-NEXT: </array>
Gabor Horvathefec1632015-10-22 11:53:04 +00005791// CHECK-NEXT: </dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00005792// CHECK-NEXT: </array>
5793// CHECK-NEXT: </dict>
5794// CHECK-NEXT: <dict>
5795// CHECK-NEXT: <key>kind</key><string>control</string>
5796// CHECK-NEXT: <key>edges</key>
5797// CHECK-NEXT: <array>
Gabor Horvathefec1632015-10-22 11:53:04 +00005798// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00005799// CHECK-NEXT: <key>start</key>
5800// CHECK-NEXT: <array>
5801// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00005802// CHECK-NEXT: <key>line</key><integer>328</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00005803// CHECK-NEXT: <key>col</key><integer>3</integer>
5804// CHECK-NEXT: <key>file</key><integer>0</integer>
5805// CHECK-NEXT: </dict>
5806// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00005807// CHECK-NEXT: <key>line</key><integer>328</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00005808// CHECK-NEXT: <key>col</key><integer>3</integer>
5809// CHECK-NEXT: <key>file</key><integer>0</integer>
5810// CHECK-NEXT: </dict>
5811// CHECK-NEXT: </array>
5812// CHECK-NEXT: <key>end</key>
5813// CHECK-NEXT: <array>
5814// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00005815// CHECK-NEXT: <key>line</key><integer>328</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00005816// CHECK-NEXT: <key>col</key><integer>7</integer>
5817// CHECK-NEXT: <key>file</key><integer>0</integer>
5818// CHECK-NEXT: </dict>
5819// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00005820// CHECK-NEXT: <key>line</key><integer>328</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00005821// CHECK-NEXT: <key>col</key><integer>7</integer>
5822// CHECK-NEXT: <key>file</key><integer>0</integer>
5823// CHECK-NEXT: </dict>
5824// CHECK-NEXT: </array>
Gabor Horvathefec1632015-10-22 11:53:04 +00005825// CHECK-NEXT: </dict>
5826// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +00005827// CHECK-NEXT: </dict>
5828// CHECK-NEXT: <dict>
5829// CHECK-NEXT: <key>kind</key><string>event</string>
5830// CHECK-NEXT: <key>location</key>
5831// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00005832// CHECK-NEXT: <key>line</key><integer>328</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00005833// CHECK-NEXT: <key>col</key><integer>7</integer>
5834// CHECK-NEXT: <key>file</key><integer>0</integer>
5835// CHECK-NEXT: </dict>
5836// CHECK-NEXT: <key>ranges</key>
Gabor Horvathefec1632015-10-22 11:53:04 +00005837// CHECK-NEXT: <array>
Devin Coughlinab139a92016-12-05 16:28:47 +00005838// CHECK-NEXT: <array>
5839// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00005840// CHECK-NEXT: <key>line</key><integer>328</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00005841// CHECK-NEXT: <key>col</key><integer>7</integer>
5842// CHECK-NEXT: <key>file</key><integer>0</integer>
5843// CHECK-NEXT: </dict>
5844// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00005845// CHECK-NEXT: <key>line</key><integer>328</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00005846// CHECK-NEXT: <key>col</key><integer>19</integer>
5847// CHECK-NEXT: <key>file</key><integer>0</integer>
5848// CHECK-NEXT: </dict>
5849// CHECK-NEXT: </array>
Gabor Horvathefec1632015-10-22 11:53:04 +00005850// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +00005851// CHECK-NEXT: <key>depth</key><integer>0</integer>
5852// CHECK-NEXT: <key>extended_message</key>
5853// CHECK-NEXT: <string>Type &apos;NSArray&lt;NSString *&gt; *&apos; is inferred from this context</string>
5854// CHECK-NEXT: <key>message</key>
5855// CHECK-NEXT: <string>Type &apos;NSArray&lt;NSString *&gt; *&apos; is inferred from this context</string>
5856// CHECK-NEXT: </dict>
5857// CHECK-NEXT: <dict>
5858// CHECK-NEXT: <key>kind</key><string>event</string>
5859// CHECK-NEXT: <key>location</key>
5860// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00005861// CHECK-NEXT: <key>line</key><integer>328</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00005862// CHECK-NEXT: <key>col</key><integer>7</integer>
5863// CHECK-NEXT: <key>file</key><integer>0</integer>
5864// CHECK-NEXT: </dict>
5865// CHECK-NEXT: <key>ranges</key>
Gabor Horvathefec1632015-10-22 11:53:04 +00005866// CHECK-NEXT: <array>
Devin Coughlinab139a92016-12-05 16:28:47 +00005867// CHECK-NEXT: <array>
5868// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00005869// CHECK-NEXT: <key>line</key><integer>328</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00005870// CHECK-NEXT: <key>col</key><integer>7</integer>
5871// CHECK-NEXT: <key>file</key><integer>0</integer>
5872// CHECK-NEXT: </dict>
5873// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00005874// CHECK-NEXT: <key>line</key><integer>328</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00005875// CHECK-NEXT: <key>col</key><integer>19</integer>
5876// CHECK-NEXT: <key>file</key><integer>0</integer>
5877// CHECK-NEXT: </dict>
5878// CHECK-NEXT: </array>
Gabor Horvathefec1632015-10-22 11:53:04 +00005879// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +00005880// CHECK-NEXT: <key>depth</key><integer>0</integer>
5881// CHECK-NEXT: <key>extended_message</key>
5882// CHECK-NEXT: <string>Conversion from value of type &apos;NSArray&lt;NSString *&gt; *&apos; to incompatible type &apos;NSArray&lt;NSNumber *&gt; *&apos;</string>
5883// CHECK-NEXT: <key>message</key>
5884// CHECK-NEXT: <string>Conversion from value of type &apos;NSArray&lt;NSString *&gt; *&apos; to incompatible type &apos;NSArray&lt;NSNumber *&gt; *&apos;</string>
5885// CHECK-NEXT: </dict>
5886// CHECK-NEXT: </array>
5887// 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>
5888// CHECK-NEXT: <key>category</key><string>Core Foundation/Objective-C</string>
5889// CHECK-NEXT: <key>type</key><string>Generics</string>
5890// CHECK-NEXT: <key>check_name</key><string>core.DynamicTypePropagation</string>
5891// CHECK-NEXT: <!-- This hash is experimental and going to change! -->
5892// CHECK-NEXT: <key>issue_hash_content_of_line_in_context</key><string>a759006d1ce88e15fcd6de6a29e2579c</string>
5893// CHECK-NEXT: <key>issue_context_kind</key><string>function</string>
5894// CHECK-NEXT: <key>issue_context</key><string>trackedClassVariables</string>
5895// CHECK-NEXT: <key>issue_hash_function_offset</key><string>3</string>
5896// CHECK-NEXT: <key>location</key>
5897// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00005898// CHECK-NEXT: <key>line</key><integer>328</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00005899// CHECK-NEXT: <key>col</key><integer>7</integer>
5900// CHECK-NEXT: <key>file</key><integer>0</integer>
5901// CHECK-NEXT: </dict>
5902// CHECK-NEXT: </dict>
5903// CHECK-NEXT: <dict>
5904// CHECK-NEXT: <key>path</key>
5905// CHECK-NEXT: <array>
Gabor Horvathefec1632015-10-22 11:53:04 +00005906// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00005907// CHECK-NEXT: <key>kind</key><string>event</string>
5908// CHECK-NEXT: <key>location</key>
5909// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00005910// CHECK-NEXT: <key>line</key><integer>332</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00005911// CHECK-NEXT: <key>col</key><integer>13</integer>
5912// CHECK-NEXT: <key>file</key><integer>0</integer>
5913// CHECK-NEXT: </dict>
5914// CHECK-NEXT: <key>ranges</key>
5915// CHECK-NEXT: <array>
5916// CHECK-NEXT: <array>
5917// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00005918// CHECK-NEXT: <key>line</key><integer>332</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00005919// CHECK-NEXT: <key>col</key><integer>13</integer>
5920// CHECK-NEXT: <key>file</key><integer>0</integer>
5921// CHECK-NEXT: </dict>
5922// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00005923// CHECK-NEXT: <key>line</key><integer>332</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00005924// CHECK-NEXT: <key>col</key><integer>15</integer>
5925// CHECK-NEXT: <key>file</key><integer>0</integer>
5926// CHECK-NEXT: </dict>
5927// CHECK-NEXT: </array>
5928// CHECK-NEXT: </array>
5929// CHECK-NEXT: <key>depth</key><integer>0</integer>
5930// CHECK-NEXT: <key>extended_message</key>
5931// 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>
5932// CHECK-NEXT: <key>message</key>
5933// 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 +00005934// CHECK-NEXT: </dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00005935// CHECK-NEXT: <dict>
5936// CHECK-NEXT: <key>kind</key><string>control</string>
5937// CHECK-NEXT: <key>edges</key>
Gabor Horvathefec1632015-10-22 11:53:04 +00005938// CHECK-NEXT: <array>
5939// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00005940// CHECK-NEXT: <key>start</key>
5941// CHECK-NEXT: <array>
5942// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00005943// CHECK-NEXT: <key>line</key><integer>332</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00005944// CHECK-NEXT: <key>col</key><integer>3</integer>
5945// CHECK-NEXT: <key>file</key><integer>0</integer>
5946// CHECK-NEXT: </dict>
5947// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00005948// CHECK-NEXT: <key>line</key><integer>332</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00005949// CHECK-NEXT: <key>col</key><integer>4</integer>
5950// CHECK-NEXT: <key>file</key><integer>0</integer>
5951// CHECK-NEXT: </dict>
5952// CHECK-NEXT: </array>
5953// CHECK-NEXT: <key>end</key>
5954// CHECK-NEXT: <array>
5955// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00005956// CHECK-NEXT: <key>line</key><integer>333</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00005957// CHECK-NEXT: <key>col</key><integer>3</integer>
5958// CHECK-NEXT: <key>file</key><integer>0</integer>
5959// CHECK-NEXT: </dict>
5960// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00005961// CHECK-NEXT: <key>line</key><integer>333</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00005962// CHECK-NEXT: <key>col</key><integer>3</integer>
5963// CHECK-NEXT: <key>file</key><integer>0</integer>
5964// CHECK-NEXT: </dict>
5965// CHECK-NEXT: </array>
Gabor Horvathefec1632015-10-22 11:53:04 +00005966// CHECK-NEXT: </dict>
5967// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +00005968// CHECK-NEXT: </dict>
Gabor Horvathefec1632015-10-22 11:53:04 +00005969// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00005970// CHECK-NEXT: <key>kind</key><string>control</string>
5971// CHECK-NEXT: <key>edges</key>
Gabor Horvathefec1632015-10-22 11:53:04 +00005972// CHECK-NEXT: <array>
5973// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00005974// CHECK-NEXT: <key>start</key>
5975// CHECK-NEXT: <array>
5976// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00005977// CHECK-NEXT: <key>line</key><integer>333</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00005978// CHECK-NEXT: <key>col</key><integer>3</integer>
5979// CHECK-NEXT: <key>file</key><integer>0</integer>
5980// CHECK-NEXT: </dict>
5981// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00005982// CHECK-NEXT: <key>line</key><integer>333</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00005983// CHECK-NEXT: <key>col</key><integer>3</integer>
5984// CHECK-NEXT: <key>file</key><integer>0</integer>
5985// CHECK-NEXT: </dict>
5986// CHECK-NEXT: </array>
5987// CHECK-NEXT: <key>end</key>
5988// CHECK-NEXT: <array>
5989// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00005990// CHECK-NEXT: <key>line</key><integer>333</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00005991// CHECK-NEXT: <key>col</key><integer>18</integer>
5992// CHECK-NEXT: <key>file</key><integer>0</integer>
5993// CHECK-NEXT: </dict>
5994// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00005995// CHECK-NEXT: <key>line</key><integer>333</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00005996// CHECK-NEXT: <key>col</key><integer>21</integer>
5997// CHECK-NEXT: <key>file</key><integer>0</integer>
5998// CHECK-NEXT: </dict>
5999// CHECK-NEXT: </array>
Gabor Horvathefec1632015-10-22 11:53:04 +00006000// CHECK-NEXT: </dict>
6001// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +00006002// CHECK-NEXT: </dict>
6003// CHECK-NEXT: <dict>
6004// CHECK-NEXT: <key>kind</key><string>event</string>
6005// CHECK-NEXT: <key>location</key>
6006// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00006007// CHECK-NEXT: <key>line</key><integer>333</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00006008// CHECK-NEXT: <key>col</key><integer>18</integer>
6009// CHECK-NEXT: <key>file</key><integer>0</integer>
6010// CHECK-NEXT: </dict>
6011// CHECK-NEXT: <key>ranges</key>
Gabor Horvathefec1632015-10-22 11:53:04 +00006012// CHECK-NEXT: <array>
Devin Coughlinab139a92016-12-05 16:28:47 +00006013// CHECK-NEXT: <array>
6014// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00006015// CHECK-NEXT: <key>line</key><integer>333</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00006016// CHECK-NEXT: <key>col</key><integer>18</integer>
6017// CHECK-NEXT: <key>file</key><integer>0</integer>
6018// CHECK-NEXT: </dict>
6019// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00006020// CHECK-NEXT: <key>line</key><integer>333</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00006021// CHECK-NEXT: <key>col</key><integer>21</integer>
6022// CHECK-NEXT: <key>file</key><integer>0</integer>
6023// CHECK-NEXT: </dict>
6024// CHECK-NEXT: </array>
Gabor Horvathefec1632015-10-22 11:53:04 +00006025// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +00006026// CHECK-NEXT: <key>depth</key><integer>0</integer>
6027// CHECK-NEXT: <key>extended_message</key>
6028// CHECK-NEXT: <string>Conversion from value of type &apos;NSArray&lt;NSString *&gt; *&apos; to incompatible type &apos;NSArray&lt;NSNumber *&gt; *&apos;</string>
6029// CHECK-NEXT: <key>message</key>
6030// CHECK-NEXT: <string>Conversion from value of type &apos;NSArray&lt;NSString *&gt; *&apos; to incompatible type &apos;NSArray&lt;NSNumber *&gt; *&apos;</string>
6031// CHECK-NEXT: </dict>
6032// CHECK-NEXT: </array>
6033// 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>
6034// CHECK-NEXT: <key>category</key><string>Core Foundation/Objective-C</string>
6035// CHECK-NEXT: <key>type</key><string>Generics</string>
6036// CHECK-NEXT: <key>check_name</key><string>core.DynamicTypePropagation</string>
6037// CHECK-NEXT: <!-- This hash is experimental and going to change! -->
6038// CHECK-NEXT: <key>issue_hash_content_of_line_in_context</key><string>4bb1729ff86647750b458e6f8d883f08</string>
6039// CHECK-NEXT: <key>issue_context_kind</key><string>function</string>
6040// CHECK-NEXT: <key>issue_context</key><string>nestedCollections</string>
6041// CHECK-NEXT: <key>issue_hash_function_offset</key><string>2</string>
6042// CHECK-NEXT: <key>location</key>
6043// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00006044// CHECK-NEXT: <key>line</key><integer>333</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00006045// CHECK-NEXT: <key>col</key><integer>18</integer>
6046// CHECK-NEXT: <key>file</key><integer>0</integer>
6047// CHECK-NEXT: </dict>
6048// CHECK-NEXT: </dict>
6049// CHECK-NEXT: <dict>
6050// CHECK-NEXT: <key>path</key>
6051// CHECK-NEXT: <array>
Gabor Horvathefec1632015-10-22 11:53:04 +00006052// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00006053// CHECK-NEXT: <key>kind</key><string>control</string>
6054// CHECK-NEXT: <key>edges</key>
Gabor Horvathefec1632015-10-22 11:53:04 +00006055// CHECK-NEXT: <array>
6056// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00006057// CHECK-NEXT: <key>start</key>
6058// CHECK-NEXT: <array>
6059// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00006060// CHECK-NEXT: <key>line</key><integer>345</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00006061// CHECK-NEXT: <key>col</key><integer>3</integer>
6062// CHECK-NEXT: <key>file</key><integer>0</integer>
6063// CHECK-NEXT: </dict>
6064// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00006065// CHECK-NEXT: <key>line</key><integer>345</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00006066// CHECK-NEXT: <key>col</key><integer>9</integer>
6067// CHECK-NEXT: <key>file</key><integer>0</integer>
6068// CHECK-NEXT: </dict>
6069// CHECK-NEXT: </array>
6070// CHECK-NEXT: <key>end</key>
6071// CHECK-NEXT: <array>
6072// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00006073// CHECK-NEXT: <key>line</key><integer>346</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00006074// CHECK-NEXT: <key>col</key><integer>3</integer>
6075// CHECK-NEXT: <key>file</key><integer>0</integer>
6076// CHECK-NEXT: </dict>
6077// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00006078// CHECK-NEXT: <key>line</key><integer>346</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00006079// CHECK-NEXT: <key>col</key><integer>4</integer>
6080// CHECK-NEXT: <key>file</key><integer>0</integer>
6081// CHECK-NEXT: </dict>
6082// CHECK-NEXT: </array>
Gabor Horvathefec1632015-10-22 11:53:04 +00006083// CHECK-NEXT: </dict>
6084// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +00006085// CHECK-NEXT: </dict>
Gabor Horvathefec1632015-10-22 11:53:04 +00006086// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00006087// CHECK-NEXT: <key>kind</key><string>event</string>
6088// CHECK-NEXT: <key>location</key>
6089// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00006090// CHECK-NEXT: <key>line</key><integer>346</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00006091// CHECK-NEXT: <key>col</key><integer>10</integer>
6092// CHECK-NEXT: <key>file</key><integer>0</integer>
6093// CHECK-NEXT: </dict>
6094// CHECK-NEXT: <key>ranges</key>
6095// CHECK-NEXT: <array>
6096// CHECK-NEXT: <array>
6097// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00006098// CHECK-NEXT: <key>line</key><integer>346</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00006099// CHECK-NEXT: <key>col</key><integer>10</integer>
6100// CHECK-NEXT: <key>file</key><integer>0</integer>
6101// CHECK-NEXT: </dict>
6102// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00006103// CHECK-NEXT: <key>line</key><integer>346</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00006104// CHECK-NEXT: <key>col</key><integer>29</integer>
6105// CHECK-NEXT: <key>file</key><integer>0</integer>
6106// CHECK-NEXT: </dict>
6107// CHECK-NEXT: </array>
6108// CHECK-NEXT: </array>
6109// CHECK-NEXT: <key>depth</key><integer>0</integer>
6110// CHECK-NEXT: <key>extended_message</key>
6111// CHECK-NEXT: <string>Type &apos;NSArray&lt;NSString *&gt; *&apos; is inferred from this context</string>
6112// CHECK-NEXT: <key>message</key>
6113// CHECK-NEXT: <string>Type &apos;NSArray&lt;NSString *&gt; *&apos; is inferred from this context</string>
Gabor Horvathefec1632015-10-22 11:53:04 +00006114// CHECK-NEXT: </dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00006115// CHECK-NEXT: <dict>
6116// CHECK-NEXT: <key>kind</key><string>control</string>
6117// CHECK-NEXT: <key>edges</key>
Gabor Horvathefec1632015-10-22 11:53:04 +00006118// CHECK-NEXT: <array>
6119// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00006120// CHECK-NEXT: <key>start</key>
6121// CHECK-NEXT: <array>
6122// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00006123// CHECK-NEXT: <key>line</key><integer>346</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00006124// CHECK-NEXT: <key>col</key><integer>3</integer>
6125// CHECK-NEXT: <key>file</key><integer>0</integer>
6126// CHECK-NEXT: </dict>
6127// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00006128// CHECK-NEXT: <key>line</key><integer>346</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00006129// CHECK-NEXT: <key>col</key><integer>4</integer>
6130// CHECK-NEXT: <key>file</key><integer>0</integer>
6131// CHECK-NEXT: </dict>
6132// CHECK-NEXT: </array>
6133// CHECK-NEXT: <key>end</key>
6134// CHECK-NEXT: <array>
6135// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00006136// CHECK-NEXT: <key>line</key><integer>347</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00006137// CHECK-NEXT: <key>col</key><integer>3</integer>
6138// CHECK-NEXT: <key>file</key><integer>0</integer>
6139// CHECK-NEXT: </dict>
6140// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00006141// CHECK-NEXT: <key>line</key><integer>347</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00006142// CHECK-NEXT: <key>col</key><integer>9</integer>
6143// CHECK-NEXT: <key>file</key><integer>0</integer>
6144// CHECK-NEXT: </dict>
6145// CHECK-NEXT: </array>
Gabor Horvathefec1632015-10-22 11:53:04 +00006146// CHECK-NEXT: </dict>
6147// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +00006148// CHECK-NEXT: </dict>
Gabor Horvathefec1632015-10-22 11:53:04 +00006149// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00006150// CHECK-NEXT: <key>kind</key><string>control</string>
6151// CHECK-NEXT: <key>edges</key>
Gabor Horvathefec1632015-10-22 11:53:04 +00006152// CHECK-NEXT: <array>
6153// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00006154// CHECK-NEXT: <key>start</key>
6155// CHECK-NEXT: <array>
6156// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00006157// CHECK-NEXT: <key>line</key><integer>347</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00006158// CHECK-NEXT: <key>col</key><integer>3</integer>
6159// CHECK-NEXT: <key>file</key><integer>0</integer>
6160// CHECK-NEXT: </dict>
6161// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00006162// CHECK-NEXT: <key>line</key><integer>347</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00006163// CHECK-NEXT: <key>col</key><integer>9</integer>
6164// CHECK-NEXT: <key>file</key><integer>0</integer>
6165// CHECK-NEXT: </dict>
6166// CHECK-NEXT: </array>
6167// CHECK-NEXT: <key>end</key>
6168// CHECK-NEXT: <array>
6169// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00006170// CHECK-NEXT: <key>line</key><integer>347</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00006171// CHECK-NEXT: <key>col</key><integer>30</integer>
6172// CHECK-NEXT: <key>file</key><integer>0</integer>
6173// CHECK-NEXT: </dict>
6174// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00006175// CHECK-NEXT: <key>line</key><integer>347</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00006176// CHECK-NEXT: <key>col</key><integer>30</integer>
6177// CHECK-NEXT: <key>file</key><integer>0</integer>
6178// CHECK-NEXT: </dict>
6179// CHECK-NEXT: </array>
Gabor Horvathefec1632015-10-22 11:53:04 +00006180// CHECK-NEXT: </dict>
6181// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +00006182// CHECK-NEXT: </dict>
6183// CHECK-NEXT: <dict>
6184// CHECK-NEXT: <key>kind</key><string>event</string>
6185// CHECK-NEXT: <key>location</key>
6186// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00006187// CHECK-NEXT: <key>line</key><integer>347</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00006188// CHECK-NEXT: <key>col</key><integer>30</integer>
6189// CHECK-NEXT: <key>file</key><integer>0</integer>
6190// CHECK-NEXT: </dict>
6191// CHECK-NEXT: <key>ranges</key>
Gabor Horvathefec1632015-10-22 11:53:04 +00006192// CHECK-NEXT: <array>
Devin Coughlinab139a92016-12-05 16:28:47 +00006193// CHECK-NEXT: <array>
6194// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00006195// CHECK-NEXT: <key>line</key><integer>347</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00006196// CHECK-NEXT: <key>col</key><integer>30</integer>
6197// CHECK-NEXT: <key>file</key><integer>0</integer>
6198// CHECK-NEXT: </dict>
6199// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00006200// CHECK-NEXT: <key>line</key><integer>347</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00006201// CHECK-NEXT: <key>col</key><integer>30</integer>
6202// CHECK-NEXT: <key>file</key><integer>0</integer>
6203// CHECK-NEXT: </dict>
6204// CHECK-NEXT: </array>
Gabor Horvathefec1632015-10-22 11:53:04 +00006205// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +00006206// CHECK-NEXT: <key>depth</key><integer>0</integer>
6207// CHECK-NEXT: <key>extended_message</key>
6208// CHECK-NEXT: <string>Conversion from value of type &apos;NSArray&lt;NSString *&gt; *&apos; to incompatible type &apos;NSArray&lt;NSNumber *&gt; *&apos;</string>
6209// CHECK-NEXT: <key>message</key>
6210// CHECK-NEXT: <string>Conversion from value of type &apos;NSArray&lt;NSString *&gt; *&apos; to incompatible type &apos;NSArray&lt;NSNumber *&gt; *&apos;</string>
6211// CHECK-NEXT: </dict>
6212// CHECK-NEXT: </array>
6213// 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>
6214// CHECK-NEXT: <key>category</key><string>Core Foundation/Objective-C</string>
6215// CHECK-NEXT: <key>type</key><string>Generics</string>
6216// CHECK-NEXT: <key>check_name</key><string>core.DynamicTypePropagation</string>
6217// CHECK-NEXT: <!-- This hash is experimental and going to change! -->
6218// CHECK-NEXT: <key>issue_hash_content_of_line_in_context</key><string>38831553eaecfb6c02b51e71d21ec6ea</string>
6219// CHECK-NEXT: <key>issue_context_kind</key><string>function</string>
6220// CHECK-NEXT: <key>issue_context</key><string>returnCollectionToIdVariable</string>
6221// CHECK-NEXT: <key>issue_hash_function_offset</key><string>3</string>
6222// CHECK-NEXT: <key>location</key>
6223// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00006224// CHECK-NEXT: <key>line</key><integer>347</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00006225// CHECK-NEXT: <key>col</key><integer>30</integer>
6226// CHECK-NEXT: <key>file</key><integer>0</integer>
6227// CHECK-NEXT: </dict>
6228// CHECK-NEXT: </dict>
6229// CHECK-NEXT: <dict>
6230// CHECK-NEXT: <key>path</key>
6231// CHECK-NEXT: <array>
Gabor Horvathefec1632015-10-22 11:53:04 +00006232// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00006233// CHECK-NEXT: <key>kind</key><string>control</string>
6234// CHECK-NEXT: <key>edges</key>
Gabor Horvathefec1632015-10-22 11:53:04 +00006235// CHECK-NEXT: <array>
6236// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00006237// CHECK-NEXT: <key>start</key>
6238// CHECK-NEXT: <array>
6239// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00006240// CHECK-NEXT: <key>line</key><integer>351</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00006241// CHECK-NEXT: <key>col</key><integer>3</integer>
6242// CHECK-NEXT: <key>file</key><integer>0</integer>
6243// CHECK-NEXT: </dict>
6244// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00006245// CHECK-NEXT: <key>line</key><integer>351</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00006246// CHECK-NEXT: <key>col</key><integer>9</integer>
6247// CHECK-NEXT: <key>file</key><integer>0</integer>
6248// CHECK-NEXT: </dict>
6249// CHECK-NEXT: </array>
6250// CHECK-NEXT: <key>end</key>
6251// CHECK-NEXT: <array>
6252// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00006253// CHECK-NEXT: <key>line</key><integer>352</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00006254// CHECK-NEXT: <key>col</key><integer>3</integer>
6255// CHECK-NEXT: <key>file</key><integer>0</integer>
6256// CHECK-NEXT: </dict>
6257// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00006258// CHECK-NEXT: <key>line</key><integer>352</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00006259// CHECK-NEXT: <key>col</key><integer>9</integer>
6260// CHECK-NEXT: <key>file</key><integer>0</integer>
6261// CHECK-NEXT: </dict>
6262// CHECK-NEXT: </array>
Gabor Horvathefec1632015-10-22 11:53:04 +00006263// CHECK-NEXT: </dict>
6264// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +00006265// CHECK-NEXT: </dict>
6266// CHECK-NEXT: <dict>
6267// CHECK-NEXT: <key>kind</key><string>event</string>
6268// CHECK-NEXT: <key>location</key>
6269// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00006270// CHECK-NEXT: <key>line</key><integer>352</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00006271// CHECK-NEXT: <key>col</key><integer>16</integer>
6272// CHECK-NEXT: <key>file</key><integer>0</integer>
6273// CHECK-NEXT: </dict>
6274// CHECK-NEXT: <key>ranges</key>
Gabor Horvathefec1632015-10-22 11:53:04 +00006275// CHECK-NEXT: <array>
Devin Coughlinab139a92016-12-05 16:28:47 +00006276// CHECK-NEXT: <array>
6277// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00006278// CHECK-NEXT: <key>line</key><integer>352</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00006279// CHECK-NEXT: <key>col</key><integer>16</integer>
6280// CHECK-NEXT: <key>file</key><integer>0</integer>
6281// CHECK-NEXT: </dict>
6282// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00006283// CHECK-NEXT: <key>line</key><integer>352</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00006284// CHECK-NEXT: <key>col</key><integer>35</integer>
6285// CHECK-NEXT: <key>file</key><integer>0</integer>
6286// CHECK-NEXT: </dict>
6287// CHECK-NEXT: </array>
Gabor Horvathefec1632015-10-22 11:53:04 +00006288// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +00006289// CHECK-NEXT: <key>depth</key><integer>0</integer>
6290// CHECK-NEXT: <key>extended_message</key>
6291// CHECK-NEXT: <string>Type &apos;NSArray&lt;NSString *&gt; *&apos; is inferred from this context</string>
6292// CHECK-NEXT: <key>message</key>
6293// CHECK-NEXT: <string>Type &apos;NSArray&lt;NSString *&gt; *&apos; is inferred from this context</string>
6294// CHECK-NEXT: </dict>
Gabor Horvathefec1632015-10-22 11:53:04 +00006295// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00006296// CHECK-NEXT: <key>kind</key><string>control</string>
6297// CHECK-NEXT: <key>edges</key>
Gabor Horvathefec1632015-10-22 11:53:04 +00006298// CHECK-NEXT: <array>
6299// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00006300// CHECK-NEXT: <key>start</key>
6301// CHECK-NEXT: <array>
6302// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00006303// CHECK-NEXT: <key>line</key><integer>352</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00006304// CHECK-NEXT: <key>col</key><integer>3</integer>
6305// CHECK-NEXT: <key>file</key><integer>0</integer>
6306// CHECK-NEXT: </dict>
6307// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00006308// CHECK-NEXT: <key>line</key><integer>352</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00006309// CHECK-NEXT: <key>col</key><integer>9</integer>
6310// CHECK-NEXT: <key>file</key><integer>0</integer>
6311// CHECK-NEXT: </dict>
6312// CHECK-NEXT: </array>
6313// CHECK-NEXT: <key>end</key>
6314// CHECK-NEXT: <array>
6315// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00006316// CHECK-NEXT: <key>line</key><integer>353</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00006317// CHECK-NEXT: <key>col</key><integer>3</integer>
6318// CHECK-NEXT: <key>file</key><integer>0</integer>
6319// CHECK-NEXT: </dict>
6320// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00006321// CHECK-NEXT: <key>line</key><integer>353</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00006322// CHECK-NEXT: <key>col</key><integer>9</integer>
6323// CHECK-NEXT: <key>file</key><integer>0</integer>
6324// CHECK-NEXT: </dict>
6325// CHECK-NEXT: </array>
Gabor Horvathefec1632015-10-22 11:53:04 +00006326// CHECK-NEXT: </dict>
6327// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +00006328// CHECK-NEXT: </dict>
Gabor Horvathefec1632015-10-22 11:53:04 +00006329// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00006330// CHECK-NEXT: <key>kind</key><string>control</string>
6331// CHECK-NEXT: <key>edges</key>
Gabor Horvathefec1632015-10-22 11:53:04 +00006332// CHECK-NEXT: <array>
6333// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00006334// CHECK-NEXT: <key>start</key>
6335// CHECK-NEXT: <array>
6336// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00006337// CHECK-NEXT: <key>line</key><integer>353</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00006338// CHECK-NEXT: <key>col</key><integer>3</integer>
6339// CHECK-NEXT: <key>file</key><integer>0</integer>
6340// CHECK-NEXT: </dict>
6341// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00006342// CHECK-NEXT: <key>line</key><integer>353</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00006343// CHECK-NEXT: <key>col</key><integer>9</integer>
6344// CHECK-NEXT: <key>file</key><integer>0</integer>
6345// CHECK-NEXT: </dict>
6346// CHECK-NEXT: </array>
6347// CHECK-NEXT: <key>end</key>
6348// CHECK-NEXT: <array>
6349// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00006350// CHECK-NEXT: <key>line</key><integer>353</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00006351// CHECK-NEXT: <key>col</key><integer>30</integer>
6352// CHECK-NEXT: <key>file</key><integer>0</integer>
6353// CHECK-NEXT: </dict>
6354// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00006355// CHECK-NEXT: <key>line</key><integer>353</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00006356// CHECK-NEXT: <key>col</key><integer>30</integer>
6357// CHECK-NEXT: <key>file</key><integer>0</integer>
6358// CHECK-NEXT: </dict>
6359// CHECK-NEXT: </array>
Gabor Horvathefec1632015-10-22 11:53:04 +00006360// CHECK-NEXT: </dict>
6361// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +00006362// CHECK-NEXT: </dict>
6363// CHECK-NEXT: <dict>
6364// CHECK-NEXT: <key>kind</key><string>event</string>
6365// CHECK-NEXT: <key>location</key>
6366// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00006367// CHECK-NEXT: <key>line</key><integer>353</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00006368// CHECK-NEXT: <key>col</key><integer>30</integer>
6369// CHECK-NEXT: <key>file</key><integer>0</integer>
6370// CHECK-NEXT: </dict>
6371// CHECK-NEXT: <key>ranges</key>
Gabor Horvathefec1632015-10-22 11:53:04 +00006372// CHECK-NEXT: <array>
Devin Coughlinab139a92016-12-05 16:28:47 +00006373// CHECK-NEXT: <array>
6374// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00006375// CHECK-NEXT: <key>line</key><integer>353</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00006376// CHECK-NEXT: <key>col</key><integer>30</integer>
6377// CHECK-NEXT: <key>file</key><integer>0</integer>
6378// CHECK-NEXT: </dict>
6379// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00006380// CHECK-NEXT: <key>line</key><integer>353</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00006381// CHECK-NEXT: <key>col</key><integer>30</integer>
6382// CHECK-NEXT: <key>file</key><integer>0</integer>
6383// CHECK-NEXT: </dict>
6384// CHECK-NEXT: </array>
Gabor Horvathefec1632015-10-22 11:53:04 +00006385// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +00006386// CHECK-NEXT: <key>depth</key><integer>0</integer>
6387// CHECK-NEXT: <key>extended_message</key>
6388// CHECK-NEXT: <string>Conversion from value of type &apos;NSArray&lt;NSString *&gt; *&apos; to incompatible type &apos;NSArray&lt;NSNumber *&gt; *&apos;</string>
6389// CHECK-NEXT: <key>message</key>
6390// CHECK-NEXT: <string>Conversion from value of type &apos;NSArray&lt;NSString *&gt; *&apos; to incompatible type &apos;NSArray&lt;NSNumber *&gt; *&apos;</string>
6391// CHECK-NEXT: </dict>
6392// CHECK-NEXT: </array>
6393// 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>
6394// CHECK-NEXT: <key>category</key><string>Core Foundation/Objective-C</string>
6395// CHECK-NEXT: <key>type</key><string>Generics</string>
6396// CHECK-NEXT: <key>check_name</key><string>core.DynamicTypePropagation</string>
6397// CHECK-NEXT: <!-- This hash is experimental and going to change! -->
6398// CHECK-NEXT: <key>issue_hash_content_of_line_in_context</key><string>9fcbd4dcf212f004877292aa5085322b</string>
6399// CHECK-NEXT: <key>issue_context_kind</key><string>function</string>
6400// CHECK-NEXT: <key>issue_context</key><string>eraseSpecialization</string>
6401// CHECK-NEXT: <key>issue_hash_function_offset</key><string>3</string>
6402// CHECK-NEXT: <key>location</key>
6403// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00006404// CHECK-NEXT: <key>line</key><integer>353</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00006405// CHECK-NEXT: <key>col</key><integer>30</integer>
6406// CHECK-NEXT: <key>file</key><integer>0</integer>
6407// CHECK-NEXT: </dict>
6408// CHECK-NEXT: </dict>
6409// CHECK-NEXT: <dict>
6410// CHECK-NEXT: <key>path</key>
6411// CHECK-NEXT: <array>
Gabor Horvathefec1632015-10-22 11:53:04 +00006412// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00006413// CHECK-NEXT: <key>kind</key><string>control</string>
6414// CHECK-NEXT: <key>edges</key>
Gabor Horvathefec1632015-10-22 11:53:04 +00006415// CHECK-NEXT: <array>
6416// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00006417// CHECK-NEXT: <key>start</key>
6418// CHECK-NEXT: <array>
6419// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00006420// CHECK-NEXT: <key>line</key><integer>357</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00006421// CHECK-NEXT: <key>col</key><integer>3</integer>
6422// CHECK-NEXT: <key>file</key><integer>0</integer>
6423// CHECK-NEXT: </dict>
6424// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00006425// CHECK-NEXT: <key>line</key><integer>357</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00006426// CHECK-NEXT: <key>col</key><integer>9</integer>
6427// CHECK-NEXT: <key>file</key><integer>0</integer>
6428// CHECK-NEXT: </dict>
6429// CHECK-NEXT: </array>
6430// CHECK-NEXT: <key>end</key>
6431// CHECK-NEXT: <array>
6432// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00006433// CHECK-NEXT: <key>line</key><integer>358</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00006434// CHECK-NEXT: <key>col</key><integer>3</integer>
6435// CHECK-NEXT: <key>file</key><integer>0</integer>
6436// CHECK-NEXT: </dict>
6437// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00006438// CHECK-NEXT: <key>line</key><integer>358</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00006439// CHECK-NEXT: <key>col</key><integer>7</integer>
6440// CHECK-NEXT: <key>file</key><integer>0</integer>
6441// CHECK-NEXT: </dict>
6442// CHECK-NEXT: </array>
Gabor Horvathefec1632015-10-22 11:53:04 +00006443// CHECK-NEXT: </dict>
6444// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +00006445// CHECK-NEXT: </dict>
Gabor Horvathefec1632015-10-22 11:53:04 +00006446// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00006447// CHECK-NEXT: <key>kind</key><string>control</string>
6448// CHECK-NEXT: <key>edges</key>
Gabor Horvathefec1632015-10-22 11:53:04 +00006449// CHECK-NEXT: <array>
6450// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00006451// CHECK-NEXT: <key>start</key>
6452// CHECK-NEXT: <array>
6453// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00006454// CHECK-NEXT: <key>line</key><integer>358</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00006455// CHECK-NEXT: <key>col</key><integer>3</integer>
6456// CHECK-NEXT: <key>file</key><integer>0</integer>
6457// CHECK-NEXT: </dict>
6458// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00006459// CHECK-NEXT: <key>line</key><integer>358</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00006460// CHECK-NEXT: <key>col</key><integer>7</integer>
6461// CHECK-NEXT: <key>file</key><integer>0</integer>
6462// CHECK-NEXT: </dict>
6463// CHECK-NEXT: </array>
6464// CHECK-NEXT: <key>end</key>
6465// CHECK-NEXT: <array>
6466// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00006467// CHECK-NEXT: <key>line</key><integer>358</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00006468// CHECK-NEXT: <key>col</key><integer>14</integer>
6469// CHECK-NEXT: <key>file</key><integer>0</integer>
6470// CHECK-NEXT: </dict>
6471// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00006472// CHECK-NEXT: <key>line</key><integer>358</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00006473// CHECK-NEXT: <key>col</key><integer>14</integer>
6474// CHECK-NEXT: <key>file</key><integer>0</integer>
6475// CHECK-NEXT: </dict>
6476// CHECK-NEXT: </array>
Gabor Horvathefec1632015-10-22 11:53:04 +00006477// CHECK-NEXT: </dict>
6478// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +00006479// CHECK-NEXT: </dict>
6480// CHECK-NEXT: <dict>
6481// CHECK-NEXT: <key>kind</key><string>event</string>
6482// CHECK-NEXT: <key>location</key>
6483// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00006484// CHECK-NEXT: <key>line</key><integer>358</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00006485// CHECK-NEXT: <key>col</key><integer>14</integer>
6486// CHECK-NEXT: <key>file</key><integer>0</integer>
6487// CHECK-NEXT: </dict>
6488// CHECK-NEXT: <key>ranges</key>
Gabor Horvathefec1632015-10-22 11:53:04 +00006489// CHECK-NEXT: <array>
Devin Coughlinab139a92016-12-05 16:28:47 +00006490// CHECK-NEXT: <array>
6491// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00006492// CHECK-NEXT: <key>line</key><integer>358</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00006493// CHECK-NEXT: <key>col</key><integer>14</integer>
6494// CHECK-NEXT: <key>file</key><integer>0</integer>
6495// CHECK-NEXT: </dict>
6496// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00006497// CHECK-NEXT: <key>line</key><integer>358</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00006498// CHECK-NEXT: <key>col</key><integer>33</integer>
6499// CHECK-NEXT: <key>file</key><integer>0</integer>
6500// CHECK-NEXT: </dict>
6501// CHECK-NEXT: </array>
Gabor Horvathefec1632015-10-22 11:53:04 +00006502// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +00006503// CHECK-NEXT: <key>depth</key><integer>0</integer>
6504// CHECK-NEXT: <key>extended_message</key>
6505// CHECK-NEXT: <string>Type &apos;NSArray&lt;NSString *&gt; *&apos; is inferred from this context</string>
6506// CHECK-NEXT: <key>message</key>
6507// CHECK-NEXT: <string>Type &apos;NSArray&lt;NSString *&gt; *&apos; is inferred from this context</string>
6508// CHECK-NEXT: </dict>
6509// CHECK-NEXT: <dict>
6510// CHECK-NEXT: <key>kind</key><string>event</string>
6511// CHECK-NEXT: <key>location</key>
6512// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00006513// CHECK-NEXT: <key>line</key><integer>358</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00006514// CHECK-NEXT: <key>col</key><integer>14</integer>
6515// CHECK-NEXT: <key>file</key><integer>0</integer>
6516// CHECK-NEXT: </dict>
6517// CHECK-NEXT: <key>ranges</key>
Gabor Horvathefec1632015-10-22 11:53:04 +00006518// CHECK-NEXT: <array>
Devin Coughlinab139a92016-12-05 16:28:47 +00006519// CHECK-NEXT: <array>
6520// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00006521// CHECK-NEXT: <key>line</key><integer>358</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00006522// CHECK-NEXT: <key>col</key><integer>14</integer>
6523// CHECK-NEXT: <key>file</key><integer>0</integer>
6524// CHECK-NEXT: </dict>
6525// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00006526// CHECK-NEXT: <key>line</key><integer>358</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00006527// CHECK-NEXT: <key>col</key><integer>33</integer>
6528// CHECK-NEXT: <key>file</key><integer>0</integer>
6529// CHECK-NEXT: </dict>
6530// CHECK-NEXT: </array>
Gabor Horvathefec1632015-10-22 11:53:04 +00006531// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +00006532// CHECK-NEXT: <key>depth</key><integer>0</integer>
6533// CHECK-NEXT: <key>extended_message</key>
6534// CHECK-NEXT: <string>Object has a dynamic type &apos;NSArray&lt;NSString *&gt; *&apos; which is incompatible with static type &apos;NSSet *&apos;</string>
6535// CHECK-NEXT: <key>message</key>
6536// CHECK-NEXT: <string>Object has a dynamic type &apos;NSArray&lt;NSString *&gt; *&apos; which is incompatible with static type &apos;NSSet *&apos;</string>
6537// CHECK-NEXT: </dict>
6538// CHECK-NEXT: </array>
6539// 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>
6540// CHECK-NEXT: <key>category</key><string>Type Error</string>
6541// CHECK-NEXT: <key>type</key><string>Dynamic and static type mismatch</string>
6542// CHECK-NEXT: <key>check_name</key><string>alpha.core.DynamicTypeChecker</string>
6543// CHECK-NEXT: <!-- This hash is experimental and going to change! -->
6544// CHECK-NEXT: <key>issue_hash_content_of_line_in_context</key><string>be6714fed24af6e7ac522b87a5098de0</string>
6545// CHECK-NEXT: <key>issue_context_kind</key><string>function</string>
6546// CHECK-NEXT: <key>issue_context</key><string>returnToUnrelatedType</string>
6547// CHECK-NEXT: <key>issue_hash_function_offset</key><string>2</string>
6548// CHECK-NEXT: <key>location</key>
6549// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00006550// CHECK-NEXT: <key>line</key><integer>358</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00006551// CHECK-NEXT: <key>col</key><integer>14</integer>
6552// CHECK-NEXT: <key>file</key><integer>0</integer>
6553// CHECK-NEXT: </dict>
6554// CHECK-NEXT: </dict>
6555// CHECK-NEXT: <dict>
6556// CHECK-NEXT: <key>path</key>
6557// CHECK-NEXT: <array>
Gabor Horvathefec1632015-10-22 11:53:04 +00006558// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00006559// CHECK-NEXT: <key>kind</key><string>control</string>
6560// CHECK-NEXT: <key>edges</key>
Gabor Horvathefec1632015-10-22 11:53:04 +00006561// CHECK-NEXT: <array>
6562// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00006563// CHECK-NEXT: <key>start</key>
6564// CHECK-NEXT: <array>
6565// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00006566// CHECK-NEXT: <key>line</key><integer>363</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00006567// CHECK-NEXT: <key>col</key><integer>3</integer>
6568// CHECK-NEXT: <key>file</key><integer>0</integer>
6569// CHECK-NEXT: </dict>
6570// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00006571// CHECK-NEXT: <key>line</key><integer>363</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00006572// CHECK-NEXT: <key>col</key><integer>9</integer>
6573// CHECK-NEXT: <key>file</key><integer>0</integer>
6574// CHECK-NEXT: </dict>
6575// CHECK-NEXT: </array>
6576// CHECK-NEXT: <key>end</key>
6577// CHECK-NEXT: <array>
6578// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00006579// CHECK-NEXT: <key>line</key><integer>364</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00006580// CHECK-NEXT: <key>col</key><integer>3</integer>
6581// CHECK-NEXT: <key>file</key><integer>0</integer>
6582// CHECK-NEXT: </dict>
6583// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00006584// CHECK-NEXT: <key>line</key><integer>364</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00006585// CHECK-NEXT: <key>col</key><integer>4</integer>
6586// CHECK-NEXT: <key>file</key><integer>0</integer>
6587// CHECK-NEXT: </dict>
6588// CHECK-NEXT: </array>
Gabor Horvathefec1632015-10-22 11:53:04 +00006589// CHECK-NEXT: </dict>
6590// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +00006591// CHECK-NEXT: </dict>
Gabor Horvathefec1632015-10-22 11:53:04 +00006592// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00006593// CHECK-NEXT: <key>kind</key><string>event</string>
6594// CHECK-NEXT: <key>location</key>
6595// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00006596// CHECK-NEXT: <key>line</key><integer>364</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00006597// CHECK-NEXT: <key>col</key><integer>10</integer>
6598// CHECK-NEXT: <key>file</key><integer>0</integer>
6599// CHECK-NEXT: </dict>
6600// CHECK-NEXT: <key>ranges</key>
6601// CHECK-NEXT: <array>
6602// CHECK-NEXT: <array>
6603// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00006604// CHECK-NEXT: <key>line</key><integer>364</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00006605// CHECK-NEXT: <key>col</key><integer>10</integer>
6606// CHECK-NEXT: <key>file</key><integer>0</integer>
6607// CHECK-NEXT: </dict>
6608// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00006609// CHECK-NEXT: <key>line</key><integer>364</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00006610// CHECK-NEXT: <key>col</key><integer>29</integer>
6611// CHECK-NEXT: <key>file</key><integer>0</integer>
6612// CHECK-NEXT: </dict>
6613// CHECK-NEXT: </array>
6614// CHECK-NEXT: </array>
6615// CHECK-NEXT: <key>depth</key><integer>0</integer>
6616// CHECK-NEXT: <key>extended_message</key>
6617// CHECK-NEXT: <string>Type &apos;NSString *&apos; is inferred from this context</string>
6618// CHECK-NEXT: <key>message</key>
6619// CHECK-NEXT: <string>Type &apos;NSString *&apos; is inferred from this context</string>
Gabor Horvathefec1632015-10-22 11:53:04 +00006620// CHECK-NEXT: </dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00006621// CHECK-NEXT: <dict>
6622// CHECK-NEXT: <key>kind</key><string>control</string>
6623// CHECK-NEXT: <key>edges</key>
Gabor Horvathefec1632015-10-22 11:53:04 +00006624// CHECK-NEXT: <array>
6625// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00006626// CHECK-NEXT: <key>start</key>
6627// CHECK-NEXT: <array>
6628// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00006629// CHECK-NEXT: <key>line</key><integer>364</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00006630// CHECK-NEXT: <key>col</key><integer>3</integer>
6631// CHECK-NEXT: <key>file</key><integer>0</integer>
6632// CHECK-NEXT: </dict>
6633// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00006634// CHECK-NEXT: <key>line</key><integer>364</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00006635// CHECK-NEXT: <key>col</key><integer>4</integer>
6636// CHECK-NEXT: <key>file</key><integer>0</integer>
6637// CHECK-NEXT: </dict>
6638// CHECK-NEXT: </array>
6639// CHECK-NEXT: <key>end</key>
6640// CHECK-NEXT: <array>
6641// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00006642// CHECK-NEXT: <key>line</key><integer>365</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00006643// CHECK-NEXT: <key>col</key><integer>3</integer>
6644// CHECK-NEXT: <key>file</key><integer>0</integer>
6645// CHECK-NEXT: </dict>
6646// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00006647// CHECK-NEXT: <key>line</key><integer>365</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00006648// CHECK-NEXT: <key>col</key><integer>10</integer>
6649// CHECK-NEXT: <key>file</key><integer>0</integer>
6650// CHECK-NEXT: </dict>
6651// CHECK-NEXT: </array>
Gabor Horvathefec1632015-10-22 11:53:04 +00006652// CHECK-NEXT: </dict>
6653// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +00006654// CHECK-NEXT: </dict>
Gabor Horvathefec1632015-10-22 11:53:04 +00006655// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00006656// CHECK-NEXT: <key>kind</key><string>control</string>
6657// CHECK-NEXT: <key>edges</key>
Gabor Horvathefec1632015-10-22 11:53:04 +00006658// CHECK-NEXT: <array>
6659// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00006660// CHECK-NEXT: <key>start</key>
6661// CHECK-NEXT: <array>
6662// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00006663// CHECK-NEXT: <key>line</key><integer>365</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00006664// CHECK-NEXT: <key>col</key><integer>3</integer>
6665// CHECK-NEXT: <key>file</key><integer>0</integer>
6666// CHECK-NEXT: </dict>
6667// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00006668// CHECK-NEXT: <key>line</key><integer>365</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00006669// CHECK-NEXT: <key>col</key><integer>10</integer>
6670// CHECK-NEXT: <key>file</key><integer>0</integer>
6671// CHECK-NEXT: </dict>
6672// CHECK-NEXT: </array>
6673// CHECK-NEXT: <key>end</key>
6674// CHECK-NEXT: <array>
6675// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00006676// CHECK-NEXT: <key>line</key><integer>365</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00006677// CHECK-NEXT: <key>col</key><integer>19</integer>
6678// CHECK-NEXT: <key>file</key><integer>0</integer>
6679// CHECK-NEXT: </dict>
6680// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00006681// CHECK-NEXT: <key>line</key><integer>365</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00006682// CHECK-NEXT: <key>col</key><integer>19</integer>
6683// CHECK-NEXT: <key>file</key><integer>0</integer>
6684// CHECK-NEXT: </dict>
6685// CHECK-NEXT: </array>
Gabor Horvathefec1632015-10-22 11:53:04 +00006686// CHECK-NEXT: </dict>
6687// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +00006688// CHECK-NEXT: </dict>
6689// CHECK-NEXT: <dict>
6690// CHECK-NEXT: <key>kind</key><string>event</string>
6691// CHECK-NEXT: <key>location</key>
6692// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00006693// CHECK-NEXT: <key>line</key><integer>365</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00006694// CHECK-NEXT: <key>col</key><integer>19</integer>
6695// CHECK-NEXT: <key>file</key><integer>0</integer>
6696// CHECK-NEXT: </dict>
6697// CHECK-NEXT: <key>ranges</key>
Gabor Horvathefec1632015-10-22 11:53:04 +00006698// CHECK-NEXT: <array>
Devin Coughlinab139a92016-12-05 16:28:47 +00006699// CHECK-NEXT: <array>
6700// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00006701// CHECK-NEXT: <key>line</key><integer>365</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00006702// CHECK-NEXT: <key>col</key><integer>19</integer>
6703// CHECK-NEXT: <key>file</key><integer>0</integer>
6704// CHECK-NEXT: </dict>
6705// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00006706// CHECK-NEXT: <key>line</key><integer>365</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00006707// CHECK-NEXT: <key>col</key><integer>19</integer>
6708// CHECK-NEXT: <key>file</key><integer>0</integer>
6709// CHECK-NEXT: </dict>
6710// CHECK-NEXT: </array>
Gabor Horvathefec1632015-10-22 11:53:04 +00006711// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +00006712// CHECK-NEXT: <key>depth</key><integer>0</integer>
6713// CHECK-NEXT: <key>extended_message</key>
6714// CHECK-NEXT: <string>Object has a dynamic type &apos;NSString *&apos; which is incompatible with static type &apos;NSNumber *&apos;</string>
6715// CHECK-NEXT: <key>message</key>
6716// CHECK-NEXT: <string>Object has a dynamic type &apos;NSString *&apos; which is incompatible with static type &apos;NSNumber *&apos;</string>
6717// CHECK-NEXT: </dict>
6718// CHECK-NEXT: </array>
6719// CHECK-NEXT: <key>description</key><string>Object has a dynamic type &apos;NSString *&apos; which is incompatible with static type &apos;NSNumber *&apos;</string>
6720// CHECK-NEXT: <key>category</key><string>Type Error</string>
6721// CHECK-NEXT: <key>type</key><string>Dynamic and static type mismatch</string>
6722// CHECK-NEXT: <key>check_name</key><string>alpha.core.DynamicTypeChecker</string>
6723// CHECK-NEXT: <!-- This hash is experimental and going to change! -->
6724// CHECK-NEXT: <key>issue_hash_content_of_line_in_context</key><string>5e96ef711c8f115bc64f69baa3f6ea7a</string>
6725// CHECK-NEXT: <key>issue_context_kind</key><string>function</string>
6726// CHECK-NEXT: <key>issue_context</key><string>returnToIdVariable</string>
6727// CHECK-NEXT: <key>issue_hash_function_offset</key><string>3</string>
6728// CHECK-NEXT: <key>location</key>
6729// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00006730// CHECK-NEXT: <key>line</key><integer>365</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00006731// CHECK-NEXT: <key>col</key><integer>19</integer>
6732// CHECK-NEXT: <key>file</key><integer>0</integer>
6733// CHECK-NEXT: </dict>
6734// CHECK-NEXT: </dict>
6735// CHECK-NEXT: <dict>
6736// CHECK-NEXT: <key>path</key>
6737// CHECK-NEXT: <array>
6738// CHECK-NEXT: <dict>
6739// CHECK-NEXT: <key>kind</key><string>event</string>
6740// CHECK-NEXT: <key>location</key>
6741// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00006742// CHECK-NEXT: <key>line</key><integer>374</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00006743// CHECK-NEXT: <key>col</key><integer>12</integer>
6744// CHECK-NEXT: <key>file</key><integer>0</integer>
6745// CHECK-NEXT: </dict>
6746// CHECK-NEXT: <key>ranges</key>
Gabor Horvathefec1632015-10-22 11:53:04 +00006747// CHECK-NEXT: <array>
Devin Coughlinab139a92016-12-05 16:28:47 +00006748// CHECK-NEXT: <array>
6749// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00006750// CHECK-NEXT: <key>line</key><integer>374</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00006751// CHECK-NEXT: <key>col</key><integer>12</integer>
6752// CHECK-NEXT: <key>file</key><integer>0</integer>
6753// CHECK-NEXT: </dict>
6754// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00006755// CHECK-NEXT: <key>line</key><integer>374</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00006756// CHECK-NEXT: <key>col</key><integer>12</integer>
6757// CHECK-NEXT: <key>file</key><integer>0</integer>
6758// CHECK-NEXT: </dict>
6759// CHECK-NEXT: </array>
Gabor Horvathefec1632015-10-22 11:53:04 +00006760// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +00006761// CHECK-NEXT: <key>depth</key><integer>0</integer>
6762// CHECK-NEXT: <key>extended_message</key>
6763// 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>
6764// CHECK-NEXT: <key>message</key>
6765// 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>
6766// CHECK-NEXT: </dict>
Gabor Horvathefec1632015-10-22 11:53:04 +00006767// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00006768// CHECK-NEXT: <key>kind</key><string>control</string>
6769// CHECK-NEXT: <key>edges</key>
Gabor Horvathefec1632015-10-22 11:53:04 +00006770// CHECK-NEXT: <array>
6771// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00006772// CHECK-NEXT: <key>start</key>
6773// CHECK-NEXT: <array>
6774// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00006775// CHECK-NEXT: <key>line</key><integer>374</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00006776// CHECK-NEXT: <key>col</key><integer>3</integer>
6777// CHECK-NEXT: <key>file</key><integer>0</integer>
6778// CHECK-NEXT: </dict>
6779// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00006780// CHECK-NEXT: <key>line</key><integer>374</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00006781// CHECK-NEXT: <key>col</key><integer>4</integer>
6782// CHECK-NEXT: <key>file</key><integer>0</integer>
6783// CHECK-NEXT: </dict>
6784// CHECK-NEXT: </array>
6785// CHECK-NEXT: <key>end</key>
6786// CHECK-NEXT: <array>
6787// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00006788// CHECK-NEXT: <key>line</key><integer>375</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00006789// CHECK-NEXT: <key>col</key><integer>3</integer>
6790// CHECK-NEXT: <key>file</key><integer>0</integer>
6791// CHECK-NEXT: </dict>
6792// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00006793// CHECK-NEXT: <key>line</key><integer>375</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00006794// CHECK-NEXT: <key>col</key><integer>3</integer>
6795// CHECK-NEXT: <key>file</key><integer>0</integer>
6796// CHECK-NEXT: </dict>
6797// CHECK-NEXT: </array>
Gabor Horvathefec1632015-10-22 11:53:04 +00006798// CHECK-NEXT: </dict>
6799// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +00006800// CHECK-NEXT: </dict>
Devin Coughlinc1bfafd2016-05-11 20:28:41 +00006801// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00006802// CHECK-NEXT: <key>kind</key><string>control</string>
6803// CHECK-NEXT: <key>edges</key>
Devin Coughlinc1bfafd2016-05-11 20:28:41 +00006804// CHECK-NEXT: <array>
6805// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00006806// CHECK-NEXT: <key>start</key>
6807// CHECK-NEXT: <array>
6808// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00006809// CHECK-NEXT: <key>line</key><integer>375</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00006810// CHECK-NEXT: <key>col</key><integer>3</integer>
6811// CHECK-NEXT: <key>file</key><integer>0</integer>
6812// CHECK-NEXT: </dict>
6813// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00006814// CHECK-NEXT: <key>line</key><integer>375</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00006815// CHECK-NEXT: <key>col</key><integer>3</integer>
6816// CHECK-NEXT: <key>file</key><integer>0</integer>
6817// CHECK-NEXT: </dict>
6818// CHECK-NEXT: </array>
6819// CHECK-NEXT: <key>end</key>
6820// CHECK-NEXT: <array>
6821// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00006822// CHECK-NEXT: <key>line</key><integer>375</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00006823// CHECK-NEXT: <key>col</key><integer>7</integer>
6824// CHECK-NEXT: <key>file</key><integer>0</integer>
6825// CHECK-NEXT: </dict>
6826// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00006827// CHECK-NEXT: <key>line</key><integer>375</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00006828// CHECK-NEXT: <key>col</key><integer>9</integer>
6829// CHECK-NEXT: <key>file</key><integer>0</integer>
6830// CHECK-NEXT: </dict>
6831// CHECK-NEXT: </array>
Devin Coughlinc1bfafd2016-05-11 20:28:41 +00006832// CHECK-NEXT: </dict>
6833// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +00006834// CHECK-NEXT: </dict>
6835// CHECK-NEXT: <dict>
6836// CHECK-NEXT: <key>kind</key><string>event</string>
6837// CHECK-NEXT: <key>location</key>
6838// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00006839// CHECK-NEXT: <key>line</key><integer>375</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00006840// CHECK-NEXT: <key>col</key><integer>7</integer>
6841// CHECK-NEXT: <key>file</key><integer>0</integer>
6842// CHECK-NEXT: </dict>
6843// CHECK-NEXT: <key>ranges</key>
Devin Coughlinc1bfafd2016-05-11 20:28:41 +00006844// CHECK-NEXT: <array>
Devin Coughlinab139a92016-12-05 16:28:47 +00006845// CHECK-NEXT: <array>
6846// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00006847// CHECK-NEXT: <key>line</key><integer>375</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00006848// CHECK-NEXT: <key>col</key><integer>7</integer>
6849// CHECK-NEXT: <key>file</key><integer>0</integer>
6850// CHECK-NEXT: </dict>
6851// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00006852// CHECK-NEXT: <key>line</key><integer>375</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00006853// CHECK-NEXT: <key>col</key><integer>9</integer>
6854// CHECK-NEXT: <key>file</key><integer>0</integer>
6855// CHECK-NEXT: </dict>
6856// CHECK-NEXT: </array>
Devin Coughlinc1bfafd2016-05-11 20:28:41 +00006857// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +00006858// CHECK-NEXT: <key>depth</key><integer>0</integer>
6859// CHECK-NEXT: <key>extended_message</key>
6860// CHECK-NEXT: <string>Conversion from value of type &apos;UnrelatedTypeGeneric&lt;NSString *&gt; *&apos; to incompatible type &apos;NSArray&lt;NSString *&gt; *&apos;</string>
6861// CHECK-NEXT: <key>message</key>
6862// CHECK-NEXT: <string>Conversion from value of type &apos;UnrelatedTypeGeneric&lt;NSString *&gt; *&apos; to incompatible type &apos;NSArray&lt;NSString *&gt; *&apos;</string>
6863// CHECK-NEXT: </dict>
6864// CHECK-NEXT: </array>
6865// 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>
6866// CHECK-NEXT: <key>category</key><string>Core Foundation/Objective-C</string>
6867// CHECK-NEXT: <key>type</key><string>Generics</string>
6868// CHECK-NEXT: <key>check_name</key><string>core.DynamicTypePropagation</string>
6869// CHECK-NEXT: <!-- This hash is experimental and going to change! -->
6870// CHECK-NEXT: <key>issue_hash_content_of_line_in_context</key><string>8347f65fb51a85ccd462d75ffd761078</string>
6871// CHECK-NEXT: <key>issue_context_kind</key><string>function</string>
6872// CHECK-NEXT: <key>issue_context</key><string>testGetMostInformativeDerivedForId</string>
6873// CHECK-NEXT: <key>issue_hash_function_offset</key><string>2</string>
6874// CHECK-NEXT: <key>location</key>
6875// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00006876// CHECK-NEXT: <key>line</key><integer>375</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00006877// CHECK-NEXT: <key>col</key><integer>7</integer>
6878// CHECK-NEXT: <key>file</key><integer>0</integer>
6879// CHECK-NEXT: </dict>
6880// CHECK-NEXT: </dict>
6881// CHECK-NEXT: <dict>
6882// CHECK-NEXT: <key>path</key>
6883// CHECK-NEXT: <array>
6884// CHECK-NEXT: <dict>
6885// CHECK-NEXT: <key>kind</key><string>event</string>
6886// CHECK-NEXT: <key>location</key>
6887// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00006888// CHECK-NEXT: <key>line</key><integer>374</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00006889// CHECK-NEXT: <key>col</key><integer>12</integer>
6890// CHECK-NEXT: <key>file</key><integer>0</integer>
6891// CHECK-NEXT: </dict>
6892// CHECK-NEXT: <key>ranges</key>
Devin Coughlinc1bfafd2016-05-11 20:28:41 +00006893// CHECK-NEXT: <array>
Devin Coughlinab139a92016-12-05 16:28:47 +00006894// CHECK-NEXT: <array>
6895// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00006896// CHECK-NEXT: <key>line</key><integer>374</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00006897// CHECK-NEXT: <key>col</key><integer>12</integer>
6898// CHECK-NEXT: <key>file</key><integer>0</integer>
6899// CHECK-NEXT: </dict>
6900// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00006901// CHECK-NEXT: <key>line</key><integer>374</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00006902// CHECK-NEXT: <key>col</key><integer>12</integer>
6903// CHECK-NEXT: <key>file</key><integer>0</integer>
6904// CHECK-NEXT: </dict>
6905// CHECK-NEXT: </array>
Devin Coughlinc1bfafd2016-05-11 20:28:41 +00006906// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +00006907// CHECK-NEXT: <key>depth</key><integer>0</integer>
6908// CHECK-NEXT: <key>extended_message</key>
6909// 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>
6910// CHECK-NEXT: <key>message</key>
6911// 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>
6912// CHECK-NEXT: </dict>
Devin Coughlinc1bfafd2016-05-11 20:28:41 +00006913// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00006914// CHECK-NEXT: <key>kind</key><string>control</string>
6915// CHECK-NEXT: <key>edges</key>
Devin Coughlinc1bfafd2016-05-11 20:28:41 +00006916// CHECK-NEXT: <array>
6917// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00006918// CHECK-NEXT: <key>start</key>
6919// CHECK-NEXT: <array>
6920// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00006921// CHECK-NEXT: <key>line</key><integer>374</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00006922// CHECK-NEXT: <key>col</key><integer>3</integer>
6923// CHECK-NEXT: <key>file</key><integer>0</integer>
6924// CHECK-NEXT: </dict>
6925// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00006926// CHECK-NEXT: <key>line</key><integer>374</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00006927// CHECK-NEXT: <key>col</key><integer>4</integer>
6928// CHECK-NEXT: <key>file</key><integer>0</integer>
6929// CHECK-NEXT: </dict>
6930// CHECK-NEXT: </array>
6931// CHECK-NEXT: <key>end</key>
6932// CHECK-NEXT: <array>
6933// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00006934// CHECK-NEXT: <key>line</key><integer>380</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00006935// CHECK-NEXT: <key>col</key><integer>3</integer>
6936// CHECK-NEXT: <key>file</key><integer>0</integer>
6937// CHECK-NEXT: </dict>
6938// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00006939// CHECK-NEXT: <key>line</key><integer>380</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00006940// CHECK-NEXT: <key>col</key><integer>3</integer>
6941// CHECK-NEXT: <key>file</key><integer>0</integer>
6942// CHECK-NEXT: </dict>
6943// CHECK-NEXT: </array>
Devin Coughlinc1bfafd2016-05-11 20:28:41 +00006944// CHECK-NEXT: </dict>
6945// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +00006946// CHECK-NEXT: </dict>
Devin Coughlinc1bfafd2016-05-11 20:28:41 +00006947// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00006948// CHECK-NEXT: <key>kind</key><string>event</string>
6949// CHECK-NEXT: <key>location</key>
6950// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00006951// CHECK-NEXT: <key>line</key><integer>380</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00006952// CHECK-NEXT: <key>col</key><integer>3</integer>
6953// CHECK-NEXT: <key>file</key><integer>0</integer>
6954// CHECK-NEXT: </dict>
6955// CHECK-NEXT: <key>ranges</key>
6956// CHECK-NEXT: <array>
6957// CHECK-NEXT: <array>
6958// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00006959// CHECK-NEXT: <key>line</key><integer>380</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00006960// CHECK-NEXT: <key>col</key><integer>16</integer>
6961// CHECK-NEXT: <key>file</key><integer>0</integer>
6962// CHECK-NEXT: </dict>
6963// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00006964// CHECK-NEXT: <key>line</key><integer>380</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00006965// CHECK-NEXT: <key>col</key><integer>38</integer>
6966// CHECK-NEXT: <key>file</key><integer>0</integer>
6967// CHECK-NEXT: </dict>
6968// CHECK-NEXT: </array>
6969// CHECK-NEXT: </array>
6970// CHECK-NEXT: <key>depth</key><integer>0</integer>
6971// CHECK-NEXT: <key>extended_message</key>
6972// CHECK-NEXT: <string>Conversion from value of type &apos;NSNumber *&apos; to incompatible type &apos;NSString *&apos;</string>
6973// CHECK-NEXT: <key>message</key>
6974// 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 +00006975// CHECK-NEXT: </dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00006976// CHECK-NEXT: </array>
6977// CHECK-NEXT: <key>description</key><string>Conversion from value of type &apos;NSNumber *&apos; to incompatible type &apos;NSString *&apos;</string>
6978// CHECK-NEXT: <key>category</key><string>Core Foundation/Objective-C</string>
6979// CHECK-NEXT: <key>type</key><string>Generics</string>
6980// CHECK-NEXT: <key>check_name</key><string>core.DynamicTypePropagation</string>
6981// CHECK-NEXT: <!-- This hash is experimental and going to change! -->
6982// CHECK-NEXT: <key>issue_hash_content_of_line_in_context</key><string>6528db66f562ac0c2a94933f3ca5f6a8</string>
6983// CHECK-NEXT: <key>issue_context_kind</key><string>function</string>
6984// CHECK-NEXT: <key>issue_context</key><string>testGetMostInformativeDerivedForId</string>
6985// CHECK-NEXT: <key>issue_hash_function_offset</key><string>7</string>
6986// CHECK-NEXT: <key>location</key>
6987// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00006988// CHECK-NEXT: <key>line</key><integer>380</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00006989// CHECK-NEXT: <key>col</key><integer>3</integer>
6990// CHECK-NEXT: <key>file</key><integer>0</integer>
6991// CHECK-NEXT: </dict>
6992// CHECK-NEXT: </dict>
6993// CHECK-NEXT: <dict>
6994// CHECK-NEXT: <key>path</key>
6995// CHECK-NEXT: <array>
6996// CHECK-NEXT: <dict>
6997// CHECK-NEXT: <key>kind</key><string>control</string>
6998// CHECK-NEXT: <key>edges</key>
Devin Coughlinc1bfafd2016-05-11 20:28:41 +00006999// CHECK-NEXT: <array>
7000// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00007001// CHECK-NEXT: <key>start</key>
7002// CHECK-NEXT: <array>
7003// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00007004// CHECK-NEXT: <key>line</key><integer>389</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00007005// CHECK-NEXT: <key>col</key><integer>3</integer>
7006// CHECK-NEXT: <key>file</key><integer>0</integer>
7007// CHECK-NEXT: </dict>
7008// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00007009// CHECK-NEXT: <key>line</key><integer>389</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00007010// CHECK-NEXT: <key>col</key><integer>9</integer>
7011// CHECK-NEXT: <key>file</key><integer>0</integer>
7012// CHECK-NEXT: </dict>
7013// CHECK-NEXT: </array>
7014// CHECK-NEXT: <key>end</key>
7015// CHECK-NEXT: <array>
7016// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00007017// CHECK-NEXT: <key>line</key><integer>391</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00007018// CHECK-NEXT: <key>col</key><integer>3</integer>
7019// CHECK-NEXT: <key>file</key><integer>0</integer>
7020// CHECK-NEXT: </dict>
7021// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00007022// CHECK-NEXT: <key>line</key><integer>391</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00007023// CHECK-NEXT: <key>col</key><integer>9</integer>
7024// CHECK-NEXT: <key>file</key><integer>0</integer>
7025// CHECK-NEXT: </dict>
7026// CHECK-NEXT: </array>
Devin Coughlinc1bfafd2016-05-11 20:28:41 +00007027// CHECK-NEXT: </dict>
7028// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +00007029// CHECK-NEXT: </dict>
Devin Coughlinc1bfafd2016-05-11 20:28:41 +00007030// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00007031// CHECK-NEXT: <key>kind</key><string>control</string>
7032// CHECK-NEXT: <key>edges</key>
Devin Coughlinc1bfafd2016-05-11 20:28:41 +00007033// CHECK-NEXT: <array>
7034// CHECK-NEXT: <dict>
Devin Coughlinab139a92016-12-05 16:28:47 +00007035// CHECK-NEXT: <key>start</key>
7036// CHECK-NEXT: <array>
7037// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00007038// CHECK-NEXT: <key>line</key><integer>391</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00007039// CHECK-NEXT: <key>col</key><integer>3</integer>
7040// CHECK-NEXT: <key>file</key><integer>0</integer>
7041// CHECK-NEXT: </dict>
7042// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00007043// CHECK-NEXT: <key>line</key><integer>391</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00007044// CHECK-NEXT: <key>col</key><integer>9</integer>
7045// CHECK-NEXT: <key>file</key><integer>0</integer>
7046// CHECK-NEXT: </dict>
7047// CHECK-NEXT: </array>
7048// CHECK-NEXT: <key>end</key>
7049// CHECK-NEXT: <array>
7050// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00007051// CHECK-NEXT: <key>line</key><integer>391</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00007052// CHECK-NEXT: <key>col</key><integer>70</integer>
7053// CHECK-NEXT: <key>file</key><integer>0</integer>
7054// CHECK-NEXT: </dict>
7055// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00007056// CHECK-NEXT: <key>line</key><integer>391</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00007057// CHECK-NEXT: <key>col</key><integer>79</integer>
7058// CHECK-NEXT: <key>file</key><integer>0</integer>
7059// CHECK-NEXT: </dict>
7060// CHECK-NEXT: </array>
Devin Coughlinc1bfafd2016-05-11 20:28:41 +00007061// CHECK-NEXT: </dict>
7062// CHECK-NEXT: </array>
Devin Coughlinab139a92016-12-05 16:28:47 +00007063// CHECK-NEXT: </dict>
7064// CHECK-NEXT: <dict>
7065// CHECK-NEXT: <key>kind</key><string>event</string>
7066// CHECK-NEXT: <key>location</key>
7067// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00007068// CHECK-NEXT: <key>line</key><integer>391</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00007069// CHECK-NEXT: <key>col</key><integer>70</integer>
7070// CHECK-NEXT: <key>file</key><integer>0</integer>
7071// CHECK-NEXT: </dict>
7072// CHECK-NEXT: <key>ranges</key>
7073// CHECK-NEXT: <array>
7074// CHECK-NEXT: <array>
7075// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00007076// CHECK-NEXT: <key>line</key><integer>391</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00007077// CHECK-NEXT: <key>col</key><integer>70</integer>
7078// CHECK-NEXT: <key>file</key><integer>0</integer>
7079// CHECK-NEXT: </dict>
7080// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00007081// CHECK-NEXT: <key>line</key><integer>391</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00007082// CHECK-NEXT: <key>col</key><integer>79</integer>
7083// CHECK-NEXT: <key>file</key><integer>0</integer>
7084// CHECK-NEXT: </dict>
7085// CHECK-NEXT: </array>
7086// CHECK-NEXT: </array>
7087// CHECK-NEXT: <key>depth</key><integer>0</integer>
7088// CHECK-NEXT: <key>extended_message</key>
7089// CHECK-NEXT: <string>Object has a dynamic type &apos;NSNumber *&apos; which is incompatible with static type &apos;NSString *&apos;</string>
7090// CHECK-NEXT: <key>message</key>
7091// CHECK-NEXT: <string>Object has a dynamic type &apos;NSNumber *&apos; which is incompatible with static type &apos;NSString *&apos;</string>
7092// CHECK-NEXT: </dict>
7093// CHECK-NEXT: </array>
7094// CHECK-NEXT: <key>description</key><string>Object has a dynamic type &apos;NSNumber *&apos; which is incompatible with static type &apos;NSString *&apos;</string>
7095// CHECK-NEXT: <key>category</key><string>Type Error</string>
7096// CHECK-NEXT: <key>type</key><string>Dynamic and static type mismatch</string>
7097// CHECK-NEXT: <key>check_name</key><string>alpha.core.DynamicTypeChecker</string>
7098// CHECK-NEXT: <!-- This hash is experimental and going to change! -->
7099// CHECK-NEXT: <key>issue_hash_content_of_line_in_context</key><string>56326e7b73d049256717eba7005ccc4d</string>
7100// CHECK-NEXT: <key>issue_context_kind</key><string>function</string>
7101// CHECK-NEXT: <key>issue_context</key><string>testArgumentAfterUpcastWithCovariantTypeParameter</string>
7102// CHECK-NEXT: <key>issue_hash_function_offset</key><string>3</string>
7103// CHECK-NEXT: <key>location</key>
7104// CHECK-NEXT: <dict>
Devin Coughlin5df6b942017-11-13 17:35:29 +00007105// CHECK-NEXT: <key>line</key><integer>391</integer>
Devin Coughlinab139a92016-12-05 16:28:47 +00007106// CHECK-NEXT: <key>col</key><integer>70</integer>
7107// CHECK-NEXT: <key>file</key><integer>0</integer>
7108// CHECK-NEXT: </dict>
7109// CHECK-NEXT: </dict>
7110// CHECK-NEXT: </array>