// RUN: %clang_cc1 -analyze -analyzer-checker=core,alpha.osx.cocoa.ObjCGenerics,alpha.core.DynamicTypeChecker -verify -Wno-objc-method-access %s // RUN: %clang_cc1 -analyze -analyzer-checker=core,alpha.osx.cocoa.ObjCGenerics,alpha.core.DynamicTypeChecker -verify -Wno-objc-method-access %s -analyzer-output=plist -o %t.plist // RUN: FileCheck --input-file %t.plist %s #if !__has_feature(objc_generics) # error Compiler does not support Objective-C generics? #endif #if !__has_feature(objc_generics_variance) # error Compiler does not support co- and contr-variance? #endif #define nil 0 typedef unsigned long NSUInteger; typedef int BOOL; @protocol NSObject + (id)alloc; - (id)init; @end @protocol NSCopying @end __attribute__((objc_root_class)) @interface NSObject @end @interface NSString : NSObject @end @interface NSMutableString : NSString @end @interface NSNumber : NSObject @end @interface NSSet : NSObject @end @interface NSArray<__covariant ObjectType> : NSObject + (instancetype)arrayWithObjects:(const ObjectType [])objects count:(NSUInteger)count; + (instancetype)getEmpty; + (NSArray *)getEmpty2; - (BOOL)contains:(ObjectType)obj; - (ObjectType)getObjAtIndex:(NSUInteger)idx; - (ObjectType)objectAtIndexedSubscript:(NSUInteger)idx; @property(readonly) ObjectType firstObject; @end @interface MutableArray : NSArray - (void)addObject:(ObjectType)anObject; @end @interface LegacyMutableArray : MutableArray @end @interface LegacySpecialMutableArray : LegacyMutableArray @end @interface BuggyMutableArray : MutableArray @end @interface BuggySpecialMutableArray : BuggyMutableArray @end @interface MyMutableStringArray : MutableArray @end @interface ExceptionalArray : MutableArray - (ExceptionType) getException; @end @interface UnrelatedType : NSObject @end int getUnknown(); NSArray *getStuff(); NSArray *getTypedStuff() { NSArray *c = getStuff(); return c; } void doStuff(NSArray *); void withArrString(NSArray *); void withArrMutableString(NSArray *); void withMutArrString(MutableArray *); void withMutArrMutableString(MutableArray *); void incompatibleTypesErased(NSArray *a, NSArray *b, NSArray *c) { a = b; c = a; // expected-warning {{Conversion from value of type 'NSArray *' to incompatible type 'NSArray *'}} [a contains: [[NSNumber alloc] init]]; // expected-warning {{Conversion}} [a contains: [[NSString alloc] init]]; doStuff(a); // expected-warning {{Conversion}} } void crossProceduralErasedTypes() { NSArray *a = getTypedStuff(); // expected-warning {{Conversion}} } void incompatibleTypesErasedReverseConversion(NSArray *a, NSArray *b) { b = a; [a contains: [[NSNumber alloc] init]]; // expected-warning {{Conversion}} [a contains: [[NSString alloc] init]]; doStuff(a); // expected-warning {{Conversion}} } void idErasedIncompatibleTypesReverseConversion(id a, NSArray *b) { b = a; [a contains: [[NSNumber alloc] init]]; // expected-warning {{Conversion}} [a contains: [[NSString alloc] init]]; doStuff(a); // expected-warning {{Conversion}} } void idErasedIncompatibleTypes(id a, NSArray *b, NSArray *c) { a = b; c = a; // expected-warning {{Conversion}} [a contains: [[NSNumber alloc] init]]; // expected-warning {{Conversion}} [a contains: [[NSString alloc] init]]; doStuff(a); // expected-warning {{Conversion}} } void pathSensitiveInference(MutableArray *m, MutableArray *a, MutableArray *b) { if (getUnknown() == 5) { m = a; [m contains: [[NSString alloc] init]]; } else { m = b; [m contains: [[NSMutableString alloc] init]]; } [m addObject: [[NSString alloc] init]]; // expected-warning {{Conversion}} [m addObject: [[NSMutableString alloc] init]]; } void verifyAPIusage(id a, MutableArray *b) { b = a; doStuff(a); // expected-warning {{Conversion}} } void trustExplicitCasts(MutableArray *a, MutableArray *b) { b = (MutableArray *)a; [a addObject: [[NSString alloc] init]]; // expected-warning {{Conversion}} } void subtypeOfGeneric(id d, MyMutableStringArray *a, MutableArray *b, MutableArray *c) { d = a; b = d; c = d; // expected-warning {{Conversion}} } void genericSubtypeOfGeneric(id d, ExceptionalArray *a, MutableArray *b, MutableArray *c) { d = a; [d contains: [[NSString alloc] init]]; [d contains: [[NSNumber alloc] init]]; // expected-warning {{Conversion}} b = d; c = d; // expected-warning {{Conversion}} } void genericSubtypeOfGenericReverse(id d, ExceptionalArray *a, MutableArray *b, MutableArray *c) { a = d; [d contains: [[NSString alloc] init]]; [d contains: [[NSNumber alloc] init]]; // expected-warning {{Conversion}} b = d; c = d; // expected-warning {{Conversion}} } void inferenceFromAPI(id a) { // Here the type parameter is invariant. There should be a warning every time // when the type parameter changes during the conversions. withMutArrString(a); withMutArrMutableString(a); // expected-warning {{Conversion}} } void inferenceFromAPI2(id a) { withMutArrMutableString(a); withMutArrString(a); // expected-warning {{Conversion}} } void inferenceFromAPIWithLegacyTypes(LegacyMutableArray *a) { withMutArrMutableString(a); withMutArrString(a); // expected-warning {{Conversion}} } void inferenceFromAPIWithLegacyTypes2(LegacySpecialMutableArray *a) { withMutArrString(a); withMutArrMutableString(a); // expected-warning {{Conversion}} } void inferenceFromAPIWithLegacyTypes3(__kindof NSArray *a) { LegacyMutableArray *b = a; withMutArrString(b); withMutArrMutableString(b); // expected-warning {{Conversion}} } void inferenceFromAPIWithBuggyTypes(BuggyMutableArray *a) { withMutArrString(a); withMutArrMutableString(a); // expected-warning {{Conversion}} } void InferenceFromAPIWithBuggyTypes2(BuggySpecialMutableArray *a) { withMutArrMutableString(a); withMutArrString(a); // expected-warning {{Conversion}} } void InferenceFromAPIWithBuggyTypes3(MutableArray *a) { id b = a; withMutArrMutableString((BuggyMutableArray *)b); withMutArrString(b); // expected-warning {{Conversion}} } void InferenceFromAPIWithBuggyTypes4(__kindof NSArray *a) { BuggyMutableArray *b = a; withMutArrString(b); withMutArrMutableString(b); // expected-warning {{Conversion}} } NSArray *getStrings(); void enforceDynamicRulesInsteadOfStatic(NSArray *a) { NSArray *b = a; // Valid uses of NSArray of NSNumbers. b = getStrings(); // Valid uses of NSArray of NSStrings. } void workWithProperties(NSArray *a) { NSArray *b = a; NSString *str = [b getObjAtIndex: 0]; // expected-warning {{Object has a dynamic type 'NSNumber *' which is incompatible with static type 'NSString *'}} NSNumber *num = [b getObjAtIndex: 0]; str = [b firstObject]; // expected-warning {{Object has a dynamic type 'NSNumber *' which is incompatible with static type 'NSString *'}} num = [b firstObject]; str = b.firstObject; // expected-warning {{Object has a dynamic type 'NSNumber *' which is incompatible with static type 'NSString *'}} num = b.firstObject; str = b[0]; // expected-warning {{Object has a dynamic type 'NSNumber *' which is incompatible with static type 'NSString *'}} num = b[0]; } void findMethodDeclInTrackedType(id m, NSArray *a, MutableArray *b) { a = b; if (getUnknown() == 5) { m = a; [m addObject: [[NSString alloc] init]]; // expected-warning {{Conversion}} } else { m = b; [m addObject: [[NSMutableString alloc] init]]; } } void findMethodDeclInTrackedType2(__kindof NSArray *a, MutableArray *b) { a = b; if (getUnknown() == 5) { [a addObject: [[NSString alloc] init]]; // expected-warning {{Conversion}} } else { [a addObject: [[NSMutableString alloc] init]]; } } void testUnannotatedLiterals() { // ObjCArrayLiterals are not specialized in the AST. NSArray *arr = @[@"A", @"B"]; [arr contains: [[NSNumber alloc] init]]; } void testAnnotatedLiterals() { NSArray *arr = @[@"A", @"B"]; NSArray *arr2 = arr; [arr2 contains: [[NSNumber alloc] init]]; // expected-warning {{Conversion}} } void nonExistentMethodDoesNotCrash(id a, MutableArray *b) { a = b; [a nonExistentMethod]; } void trackedClassVariables() { Class c = [NSArray class]; NSArray *a = [c getEmpty]; // expected-warning {{Conversion}} a = [c getEmpty2]; // expected-warning {{Conversion}} } void nestedCollections(NSArray *> *mat, NSArray *row) { id temp = row; [mat contains: temp]; // expected-warning {{Conversion}} } void testMistmatchedTypeCast(MutableArray *a) { MutableArray *b = (MutableArray *)a; [b addObject: [[NSNumber alloc] init]]; id c = (UnrelatedType *)a; [c addObject: [[NSNumber alloc] init]]; [c addObject: [[NSString alloc] init]]; } void returnCollectionToIdVariable(NSArray *> *arr) { NSArray *erased = arr; id a = [erased firstObject]; NSArray *res = a; // expected-warning {{Conversion}} } void eraseSpecialization(NSArray *> *arr) { NSArray *erased = arr; NSArray* a = [erased firstObject]; NSArray *res = a; // expected-warning {{Conversion}} } void returnToUnrelatedType(NSArray *> *arr) { NSArray *erased = arr; NSSet* a = [erased firstObject]; // expected-warning {{Object has a dynamic type 'NSArray *' which is incompatible with static type 'NSSet *'}} (void)a; } void returnToIdVariable(NSArray *arr) { NSArray *erased = arr; id a = [erased firstObject]; NSNumber *res = a; // expected-warning {{Object has a dynamic type 'NSString *' which is incompatible with static type 'NSNumber *'}} } // CHECK: // CHECK: // CHECK: path // CHECK: // CHECK: // CHECK: kindevent // CHECK: location // CHECK: // CHECK: line92 // CHECK: col7 // CHECK: file0 // CHECK: // CHECK: ranges // CHECK: // CHECK: // CHECK: // CHECK: line92 // CHECK: col7 // CHECK: file0 // CHECK: // CHECK: // CHECK: line92 // CHECK: col7 // CHECK: file0 // CHECK: // CHECK: // CHECK: // CHECK: depth0 // CHECK: extended_message // CHECK: Type 'NSArray<NSString *> *' is inferred from implicit cast (from 'NSArray<NSString *> *' to 'NSArray *') // CHECK: message // CHECK: Type 'NSArray<NSString *> *' is inferred from implicit cast (from 'NSArray<NSString *> *' to 'NSArray *') // CHECK: // CHECK: // CHECK: kindcontrol // CHECK: edges // CHECK: // CHECK: // CHECK: start // CHECK: // CHECK: // CHECK: line92 // CHECK: col3 // CHECK: file0 // CHECK: // CHECK: // CHECK: line92 // CHECK: col3 // CHECK: file0 // CHECK: // CHECK: // CHECK: end // CHECK: // CHECK: // CHECK: line93 // CHECK: col3 // CHECK: file0 // CHECK: // CHECK: // CHECK: line93 // CHECK: col3 // CHECK: file0 // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: kindcontrol // CHECK: edges // CHECK: // CHECK: // CHECK: start // CHECK: // CHECK: // CHECK: line93 // CHECK: col3 // CHECK: file0 // CHECK: // CHECK: // CHECK: line93 // CHECK: col3 // CHECK: file0 // CHECK: // CHECK: // CHECK: end // CHECK: // CHECK: // CHECK: line93 // CHECK: col7 // CHECK: file0 // CHECK: // CHECK: // CHECK: line93 // CHECK: col7 // CHECK: file0 // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: kindevent // CHECK: location // CHECK: // CHECK: line93 // CHECK: col7 // CHECK: file0 // CHECK: // CHECK: ranges // CHECK: // CHECK: // CHECK: // CHECK: line93 // CHECK: col7 // CHECK: file0 // CHECK: // CHECK: // CHECK: line93 // CHECK: col7 // CHECK: file0 // CHECK: // CHECK: // CHECK: // CHECK: depth0 // CHECK: extended_message // CHECK: Conversion from value of type 'NSArray<NSString *> *' to incompatible type 'NSArray<NSNumber *> *' // CHECK: message // CHECK: Conversion from value of type 'NSArray<NSString *> *' to incompatible type 'NSArray<NSNumber *> *' // CHECK: // CHECK: // CHECK: descriptionConversion from value of type 'NSArray<NSString *> *' to incompatible type 'NSArray<NSNumber *> *' // CHECK: categoryCore Foundation/Objective-C // CHECK: typeGenerics // CHECK: check_namecore.DynamicTypePropagation // CHECK: issue_context_kindfunction // CHECK: issue_contextincompatibleTypesErased // CHECK: issue_hash2 // CHECK: location // CHECK: // CHECK: line93 // CHECK: col7 // CHECK: file0 // CHECK: // CHECK: // CHECK: // CHECK: path // CHECK: // CHECK: // CHECK: kindevent // CHECK: location // CHECK: // CHECK: line92 // CHECK: col7 // CHECK: file0 // CHECK: // CHECK: ranges // CHECK: // CHECK: // CHECK: // CHECK: line92 // CHECK: col7 // CHECK: file0 // CHECK: // CHECK: // CHECK: line92 // CHECK: col7 // CHECK: file0 // CHECK: // CHECK: // CHECK: // CHECK: depth0 // CHECK: extended_message // CHECK: Type 'NSArray<NSString *> *' is inferred from implicit cast (from 'NSArray<NSString *> *' to 'NSArray *') // CHECK: message // CHECK: Type 'NSArray<NSString *> *' is inferred from implicit cast (from 'NSArray<NSString *> *' to 'NSArray *') // CHECK: // CHECK: // CHECK: kindcontrol // CHECK: edges // CHECK: // CHECK: // CHECK: start // CHECK: // CHECK: // CHECK: line92 // CHECK: col3 // CHECK: file0 // CHECK: // CHECK: // CHECK: line92 // CHECK: col3 // CHECK: file0 // CHECK: // CHECK: // CHECK: end // CHECK: // CHECK: // CHECK: line94 // CHECK: col3 // CHECK: file0 // CHECK: // CHECK: // CHECK: line94 // CHECK: col3 // CHECK: file0 // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: kindevent // CHECK: location // CHECK: // CHECK: line94 // CHECK: col3 // CHECK: file0 // CHECK: // CHECK: ranges // CHECK: // CHECK: // CHECK: // CHECK: line94 // CHECK: col16 // CHECK: file0 // CHECK: // CHECK: // CHECK: line94 // CHECK: col38 // CHECK: file0 // CHECK: // CHECK: // CHECK: // CHECK: depth0 // CHECK: extended_message // CHECK: Conversion from value of type 'NSNumber *' to incompatible type 'NSString *' // CHECK: message // CHECK: Conversion from value of type 'NSNumber *' to incompatible type 'NSString *' // CHECK: // CHECK: // CHECK: descriptionConversion from value of type 'NSNumber *' to incompatible type 'NSString *' // CHECK: categoryCore Foundation/Objective-C // CHECK: typeGenerics // CHECK: check_namecore.DynamicTypePropagation // CHECK: issue_context_kindfunction // CHECK: issue_contextincompatibleTypesErased // CHECK: issue_hash3 // CHECK: location // CHECK: // CHECK: line94 // CHECK: col3 // CHECK: file0 // CHECK: // CHECK: // CHECK: // CHECK: path // CHECK: // CHECK: // CHECK: kindevent // CHECK: location // CHECK: // CHECK: line92 // CHECK: col7 // CHECK: file0 // CHECK: // CHECK: ranges // CHECK: // CHECK: // CHECK: // CHECK: line92 // CHECK: col7 // CHECK: file0 // CHECK: // CHECK: // CHECK: line92 // CHECK: col7 // CHECK: file0 // CHECK: // CHECK: // CHECK: // CHECK: depth0 // CHECK: extended_message // CHECK: Type 'NSArray<NSString *> *' is inferred from implicit cast (from 'NSArray<NSString *> *' to 'NSArray *') // CHECK: message // CHECK: Type 'NSArray<NSString *> *' is inferred from implicit cast (from 'NSArray<NSString *> *' to 'NSArray *') // CHECK: // CHECK: // CHECK: kindcontrol // CHECK: edges // CHECK: // CHECK: // CHECK: start // CHECK: // CHECK: // CHECK: line92 // CHECK: col3 // CHECK: file0 // CHECK: // CHECK: // CHECK: line92 // CHECK: col3 // CHECK: file0 // CHECK: // CHECK: // CHECK: end // CHECK: // CHECK: // CHECK: line96 // CHECK: col3 // CHECK: file0 // CHECK: // CHECK: // CHECK: line96 // CHECK: col9 // CHECK: file0 // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: kindcontrol // CHECK: edges // CHECK: // CHECK: // CHECK: start // CHECK: // CHECK: // CHECK: line96 // CHECK: col3 // CHECK: file0 // CHECK: // CHECK: // CHECK: line96 // CHECK: col9 // CHECK: file0 // CHECK: // CHECK: // CHECK: end // CHECK: // CHECK: // CHECK: line96 // CHECK: col11 // CHECK: file0 // CHECK: // CHECK: // CHECK: line96 // CHECK: col11 // CHECK: file0 // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: kindevent // CHECK: location // CHECK: // CHECK: line96 // CHECK: col11 // CHECK: file0 // CHECK: // CHECK: ranges // CHECK: // CHECK: // CHECK: // CHECK: line96 // CHECK: col11 // CHECK: file0 // CHECK: // CHECK: // CHECK: line96 // CHECK: col11 // CHECK: file0 // CHECK: // CHECK: // CHECK: // CHECK: depth0 // CHECK: extended_message // CHECK: Conversion from value of type 'NSArray<NSString *> *' to incompatible type 'NSArray<NSNumber *> *' // CHECK: message // CHECK: Conversion from value of type 'NSArray<NSString *> *' to incompatible type 'NSArray<NSNumber *> *' // CHECK: // CHECK: // CHECK: descriptionConversion from value of type 'NSArray<NSString *> *' to incompatible type 'NSArray<NSNumber *> *' // CHECK: categoryCore Foundation/Objective-C // CHECK: typeGenerics // CHECK: check_namecore.DynamicTypePropagation // CHECK: issue_context_kindfunction // CHECK: issue_contextincompatibleTypesErased // CHECK: issue_hash5 // CHECK: location // CHECK: // CHECK: line96 // CHECK: col11 // CHECK: file0 // CHECK: // CHECK: // CHECK: // CHECK: path // CHECK: // CHECK: // CHECK: kindcontrol // CHECK: edges // CHECK: // CHECK: // CHECK: start // CHECK: // CHECK: // CHECK: line100 // CHECK: col3 // CHECK: file0 // CHECK: // CHECK: // CHECK: line100 // CHECK: col9 // CHECK: file0 // CHECK: // CHECK: // CHECK: end // CHECK: // CHECK: // CHECK: line100 // CHECK: col28 // CHECK: file0 // CHECK: // CHECK: // CHECK: line100 // CHECK: col40 // CHECK: file0 // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: kindevent // CHECK: location // CHECK: // CHECK: line100 // CHECK: col28 // CHECK: file0 // CHECK: // CHECK: ranges // CHECK: // CHECK: // CHECK: // CHECK: line100 // CHECK: col28 // CHECK: file0 // CHECK: // CHECK: // CHECK: line100 // CHECK: col42 // CHECK: file0 // CHECK: // CHECK: // CHECK: // CHECK: depth0 // CHECK: extended_message // CHECK: Calling 'getTypedStuff' // CHECK: message // CHECK: Calling 'getTypedStuff' // CHECK: // CHECK: // CHECK: kindevent // CHECK: location // CHECK: // CHECK: line79 // CHECK: col1 // CHECK: file0 // CHECK: // CHECK: depth1 // CHECK: extended_message // CHECK: Entered call from 'crossProceduralErasedTypes' // CHECK: message // CHECK: Entered call from 'crossProceduralErasedTypes' // CHECK: // CHECK: // CHECK: kindcontrol // CHECK: edges // CHECK: // CHECK: // CHECK: start // CHECK: // CHECK: // CHECK: line79 // CHECK: col1 // CHECK: file0 // CHECK: // CHECK: // CHECK: line79 // CHECK: col7 // CHECK: file0 // CHECK: // CHECK: // CHECK: end // CHECK: // CHECK: // CHECK: line80 // CHECK: col3 // CHECK: file0 // CHECK: // CHECK: // CHECK: line80 // CHECK: col9 // CHECK: file0 // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: kindevent // CHECK: location // CHECK: // CHECK: line80 // CHECK: col28 // CHECK: file0 // CHECK: // CHECK: ranges // CHECK: // CHECK: // CHECK: // CHECK: line80 // CHECK: col28 // CHECK: file0 // CHECK: // CHECK: // CHECK: line80 // CHECK: col37 // CHECK: file0 // CHECK: // CHECK: // CHECK: // CHECK: depth1 // CHECK: extended_message // CHECK: Type 'NSArray<NSNumber *> *' is inferred from implicit cast (from 'NSArray *' to 'NSArray<NSNumber *> *') // CHECK: message // CHECK: Type 'NSArray<NSNumber *> *' is inferred from implicit cast (from 'NSArray *' to 'NSArray<NSNumber *> *') // CHECK: // CHECK: // CHECK: kindcontrol // CHECK: edges // CHECK: // CHECK: // CHECK: start // CHECK: // CHECK: // CHECK: line80 // CHECK: col3 // CHECK: file0 // CHECK: // CHECK: // CHECK: line80 // CHECK: col9 // CHECK: file0 // CHECK: // CHECK: // CHECK: end // CHECK: // CHECK: // CHECK: line81 // CHECK: col3 // CHECK: file0 // CHECK: // CHECK: // CHECK: line81 // CHECK: col8 // CHECK: file0 // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: kindevent // CHECK: location // CHECK: // CHECK: line100 // CHECK: col28 // CHECK: file0 // CHECK: // CHECK: ranges // CHECK: // CHECK: // CHECK: // CHECK: line100 // CHECK: col28 // CHECK: file0 // CHECK: // CHECK: // CHECK: line100 // CHECK: col42 // CHECK: file0 // CHECK: // CHECK: // CHECK: // CHECK: depth0 // CHECK: extended_message // CHECK: Returning from 'getTypedStuff' // CHECK: message // CHECK: Returning from 'getTypedStuff' // CHECK: // CHECK: // CHECK: kindevent // CHECK: location // CHECK: // CHECK: line100 // CHECK: col28 // CHECK: file0 // CHECK: // CHECK: ranges // CHECK: // CHECK: // CHECK: // CHECK: line100 // CHECK: col28 // CHECK: file0 // CHECK: // CHECK: // CHECK: line100 // CHECK: col42 // CHECK: file0 // CHECK: // CHECK: // CHECK: // CHECK: depth0 // CHECK: extended_message // CHECK: Conversion from value of type 'NSArray<NSNumber *> *' to incompatible type 'NSArray<NSString *> *' // CHECK: message // CHECK: Conversion from value of type 'NSArray<NSNumber *> *' to incompatible type 'NSArray<NSString *> *' // CHECK: // CHECK: // CHECK: descriptionConversion from value of type 'NSArray<NSNumber *> *' to incompatible type 'NSArray<NSString *> *' // CHECK: categoryCore Foundation/Objective-C // CHECK: typeGenerics // CHECK: check_namecore.DynamicTypePropagation // CHECK: issue_context_kindfunction // CHECK: issue_contextcrossProceduralErasedTypes // CHECK: issue_hash1 // CHECK: location // CHECK: // CHECK: line100 // CHECK: col28 // CHECK: file0 // CHECK: // CHECK: // CHECK: // CHECK: path // CHECK: // CHECK: // CHECK: kindevent // CHECK: location // CHECK: // CHECK: line105 // CHECK: col7 // CHECK: file0 // CHECK: // CHECK: ranges // CHECK: // CHECK: // CHECK: // CHECK: line105 // CHECK: col7 // CHECK: file0 // CHECK: // CHECK: // CHECK: line105 // CHECK: col7 // CHECK: file0 // CHECK: // CHECK: // CHECK: // CHECK: depth0 // CHECK: extended_message // CHECK: Type 'NSArray<NSString *> *' is inferred from implicit cast (from 'NSArray *' to 'NSArray<NSString *> *') // CHECK: message // CHECK: Type 'NSArray<NSString *> *' is inferred from implicit cast (from 'NSArray *' to 'NSArray<NSString *> *') // CHECK: // CHECK: // CHECK: kindcontrol // CHECK: edges // CHECK: // CHECK: // CHECK: start // CHECK: // CHECK: // CHECK: line105 // CHECK: col3 // CHECK: file0 // CHECK: // CHECK: // CHECK: line105 // CHECK: col3 // CHECK: file0 // CHECK: // CHECK: // CHECK: end // CHECK: // CHECK: // CHECK: line106 // CHECK: col3 // CHECK: file0 // CHECK: // CHECK: // CHECK: line106 // CHECK: col3 // CHECK: file0 // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: kindevent // CHECK: location // CHECK: // CHECK: line106 // CHECK: col3 // CHECK: file0 // CHECK: // CHECK: ranges // CHECK: // CHECK: // CHECK: // CHECK: line106 // CHECK: col16 // CHECK: file0 // CHECK: // CHECK: // CHECK: line106 // CHECK: col38 // CHECK: file0 // CHECK: // CHECK: // CHECK: // CHECK: depth0 // CHECK: extended_message // CHECK: Conversion from value of type 'NSNumber *' to incompatible type 'NSString *' // CHECK: message // CHECK: Conversion from value of type 'NSNumber *' to incompatible type 'NSString *' // CHECK: // CHECK: // CHECK: descriptionConversion from value of type 'NSNumber *' to incompatible type 'NSString *' // CHECK: categoryCore Foundation/Objective-C // CHECK: typeGenerics // CHECK: check_namecore.DynamicTypePropagation // CHECK: issue_context_kindfunction // CHECK: issue_contextincompatibleTypesErasedReverseConversion // CHECK: issue_hash2 // CHECK: location // CHECK: // CHECK: line106 // CHECK: col3 // CHECK: file0 // CHECK: // CHECK: // CHECK: // CHECK: path // CHECK: // CHECK: // CHECK: kindevent // CHECK: location // CHECK: // CHECK: line105 // CHECK: col7 // CHECK: file0 // CHECK: // CHECK: ranges // CHECK: // CHECK: // CHECK: // CHECK: line105 // CHECK: col7 // CHECK: file0 // CHECK: // CHECK: // CHECK: line105 // CHECK: col7 // CHECK: file0 // CHECK: // CHECK: // CHECK: // CHECK: depth0 // CHECK: extended_message // CHECK: Type 'NSArray<NSString *> *' is inferred from implicit cast (from 'NSArray *' to 'NSArray<NSString *> *') // CHECK: message // CHECK: Type 'NSArray<NSString *> *' is inferred from implicit cast (from 'NSArray *' to 'NSArray<NSString *> *') // CHECK: // CHECK: // CHECK: kindcontrol // CHECK: edges // CHECK: // CHECK: // CHECK: start // CHECK: // CHECK: // CHECK: line105 // CHECK: col3 // CHECK: file0 // CHECK: // CHECK: // CHECK: line105 // CHECK: col3 // CHECK: file0 // CHECK: // CHECK: // CHECK: end // CHECK: // CHECK: // CHECK: line108 // CHECK: col3 // CHECK: file0 // CHECK: // CHECK: // CHECK: line108 // CHECK: col9 // CHECK: file0 // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: kindcontrol // CHECK: edges // CHECK: // CHECK: // CHECK: start // CHECK: // CHECK: // CHECK: line108 // CHECK: col3 // CHECK: file0 // CHECK: // CHECK: // CHECK: line108 // CHECK: col9 // CHECK: file0 // CHECK: // CHECK: // CHECK: end // CHECK: // CHECK: // CHECK: line108 // CHECK: col11 // CHECK: file0 // CHECK: // CHECK: // CHECK: line108 // CHECK: col11 // CHECK: file0 // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: kindevent // CHECK: location // CHECK: // CHECK: line108 // CHECK: col11 // CHECK: file0 // CHECK: // CHECK: ranges // CHECK: // CHECK: // CHECK: // CHECK: line108 // CHECK: col11 // CHECK: file0 // CHECK: // CHECK: // CHECK: line108 // CHECK: col11 // CHECK: file0 // CHECK: // CHECK: // CHECK: // CHECK: depth0 // CHECK: extended_message // CHECK: Conversion from value of type 'NSArray<NSString *> *' to incompatible type 'NSArray<NSNumber *> *' // CHECK: message // CHECK: Conversion from value of type 'NSArray<NSString *> *' to incompatible type 'NSArray<NSNumber *> *' // CHECK: // CHECK: // CHECK: descriptionConversion from value of type 'NSArray<NSString *> *' to incompatible type 'NSArray<NSNumber *> *' // CHECK: categoryCore Foundation/Objective-C // CHECK: typeGenerics // CHECK: check_namecore.DynamicTypePropagation // CHECK: issue_context_kindfunction // CHECK: issue_contextincompatibleTypesErasedReverseConversion // CHECK: issue_hash4 // CHECK: location // CHECK: // CHECK: line108 // CHECK: col11 // CHECK: file0 // CHECK: // CHECK: // CHECK: // CHECK: path // CHECK: // CHECK: // CHECK: kindevent // CHECK: location // CHECK: // CHECK: line112 // CHECK: col7 // CHECK: file0 // CHECK: // CHECK: ranges // CHECK: // CHECK: // CHECK: // CHECK: line112 // CHECK: col7 // CHECK: file0 // CHECK: // CHECK: // CHECK: line112 // CHECK: col7 // CHECK: file0 // CHECK: // CHECK: // CHECK: // CHECK: depth0 // CHECK: extended_message // CHECK: Type 'NSArray<NSString *> *' is inferred from implicit cast (from 'id' to 'NSArray<NSString *> *') // CHECK: message // CHECK: Type 'NSArray<NSString *> *' is inferred from implicit cast (from 'id' to 'NSArray<NSString *> *') // CHECK: // CHECK: // CHECK: kindcontrol // CHECK: edges // CHECK: // CHECK: // CHECK: start // CHECK: // CHECK: // CHECK: line112 // CHECK: col3 // CHECK: file0 // CHECK: // CHECK: // CHECK: line112 // CHECK: col3 // CHECK: file0 // CHECK: // CHECK: // CHECK: end // CHECK: // CHECK: // CHECK: line113 // CHECK: col3 // CHECK: file0 // CHECK: // CHECK: // CHECK: line113 // CHECK: col3 // CHECK: file0 // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: kindevent // CHECK: location // CHECK: // CHECK: line113 // CHECK: col3 // CHECK: file0 // CHECK: // CHECK: ranges // CHECK: // CHECK: // CHECK: // CHECK: line113 // CHECK: col16 // CHECK: file0 // CHECK: // CHECK: // CHECK: line113 // CHECK: col38 // CHECK: file0 // CHECK: // CHECK: // CHECK: // CHECK: depth0 // CHECK: extended_message // CHECK: Conversion from value of type 'NSNumber *' to incompatible type 'NSString *' // CHECK: message // CHECK: Conversion from value of type 'NSNumber *' to incompatible type 'NSString *' // CHECK: // CHECK: // CHECK: descriptionConversion from value of type 'NSNumber *' to incompatible type 'NSString *' // CHECK: categoryCore Foundation/Objective-C // CHECK: typeGenerics // CHECK: check_namecore.DynamicTypePropagation // CHECK: issue_context_kindfunction // CHECK: issue_contextidErasedIncompatibleTypesReverseConversion // CHECK: issue_hash2 // CHECK: location // CHECK: // CHECK: line113 // CHECK: col3 // CHECK: file0 // CHECK: // CHECK: // CHECK: // CHECK: path // CHECK: // CHECK: // CHECK: kindevent // CHECK: location // CHECK: // CHECK: line112 // CHECK: col7 // CHECK: file0 // CHECK: // CHECK: ranges // CHECK: // CHECK: // CHECK: // CHECK: line112 // CHECK: col7 // CHECK: file0 // CHECK: // CHECK: // CHECK: line112 // CHECK: col7 // CHECK: file0 // CHECK: // CHECK: // CHECK: // CHECK: depth0 // CHECK: extended_message // CHECK: Type 'NSArray<NSString *> *' is inferred from implicit cast (from 'id' to 'NSArray<NSString *> *') // CHECK: message // CHECK: Type 'NSArray<NSString *> *' is inferred from implicit cast (from 'id' to 'NSArray<NSString *> *') // CHECK: // CHECK: // CHECK: kindcontrol // CHECK: edges // CHECK: // CHECK: // CHECK: start // CHECK: // CHECK: // CHECK: line112 // CHECK: col3 // CHECK: file0 // CHECK: // CHECK: // CHECK: line112 // CHECK: col3 // CHECK: file0 // CHECK: // CHECK: // CHECK: end // CHECK: // CHECK: // CHECK: line115 // CHECK: col3 // CHECK: file0 // CHECK: // CHECK: // CHECK: line115 // CHECK: col9 // CHECK: file0 // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: kindcontrol // CHECK: edges // CHECK: // CHECK: // CHECK: start // CHECK: // CHECK: // CHECK: line115 // CHECK: col3 // CHECK: file0 // CHECK: // CHECK: // CHECK: line115 // CHECK: col9 // CHECK: file0 // CHECK: // CHECK: // CHECK: end // CHECK: // CHECK: // CHECK: line115 // CHECK: col11 // CHECK: file0 // CHECK: // CHECK: // CHECK: line115 // CHECK: col11 // CHECK: file0 // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: kindevent // CHECK: location // CHECK: // CHECK: line115 // CHECK: col11 // CHECK: file0 // CHECK: // CHECK: ranges // CHECK: // CHECK: // CHECK: // CHECK: line115 // CHECK: col11 // CHECK: file0 // CHECK: // CHECK: // CHECK: line115 // CHECK: col11 // CHECK: file0 // CHECK: // CHECK: // CHECK: // CHECK: depth0 // CHECK: extended_message // CHECK: Conversion from value of type 'NSArray<NSString *> *' to incompatible type 'NSArray<NSNumber *> *' // CHECK: message // CHECK: Conversion from value of type 'NSArray<NSString *> *' to incompatible type 'NSArray<NSNumber *> *' // CHECK: // CHECK: // CHECK: descriptionConversion from value of type 'NSArray<NSString *> *' to incompatible type 'NSArray<NSNumber *> *' // CHECK: categoryCore Foundation/Objective-C // CHECK: typeGenerics // CHECK: check_namecore.DynamicTypePropagation // CHECK: issue_context_kindfunction // CHECK: issue_contextidErasedIncompatibleTypesReverseConversion // CHECK: issue_hash4 // CHECK: location // CHECK: // CHECK: line115 // CHECK: col11 // CHECK: file0 // CHECK: // CHECK: // CHECK: // CHECK: path // CHECK: // CHECK: // CHECK: kindevent // CHECK: location // CHECK: // CHECK: line120 // CHECK: col7 // CHECK: file0 // CHECK: // CHECK: ranges // CHECK: // CHECK: // CHECK: // CHECK: line120 // CHECK: col7 // CHECK: file0 // CHECK: // CHECK: // CHECK: line120 // CHECK: col7 // CHECK: file0 // CHECK: // CHECK: // CHECK: // CHECK: depth0 // CHECK: extended_message // CHECK: Type 'NSArray<NSString *> *' is inferred from implicit cast (from 'NSArray<NSString *> *' to 'id') // CHECK: message // CHECK: Type 'NSArray<NSString *> *' is inferred from implicit cast (from 'NSArray<NSString *> *' to 'id') // CHECK: // CHECK: // CHECK: kindcontrol // CHECK: edges // CHECK: // CHECK: // CHECK: start // CHECK: // CHECK: // CHECK: line120 // CHECK: col3 // CHECK: file0 // CHECK: // CHECK: // CHECK: line120 // CHECK: col3 // CHECK: file0 // CHECK: // CHECK: // CHECK: end // CHECK: // CHECK: // CHECK: line121 // CHECK: col3 // CHECK: file0 // CHECK: // CHECK: // CHECK: line121 // CHECK: col3 // CHECK: file0 // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: kindcontrol // CHECK: edges // CHECK: // CHECK: // CHECK: start // CHECK: // CHECK: // CHECK: line121 // CHECK: col3 // CHECK: file0 // CHECK: // CHECK: // CHECK: line121 // CHECK: col3 // CHECK: file0 // CHECK: // CHECK: // CHECK: end // CHECK: // CHECK: // CHECK: line121 // CHECK: col7 // CHECK: file0 // CHECK: // CHECK: // CHECK: line121 // CHECK: col7 // CHECK: file0 // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: kindevent // CHECK: location // CHECK: // CHECK: line121 // CHECK: col7 // CHECK: file0 // CHECK: // CHECK: ranges // CHECK: // CHECK: // CHECK: // CHECK: line121 // CHECK: col7 // CHECK: file0 // CHECK: // CHECK: // CHECK: line121 // CHECK: col7 // CHECK: file0 // CHECK: // CHECK: // CHECK: // CHECK: depth0 // CHECK: extended_message // CHECK: Conversion from value of type 'NSArray<NSString *> *' to incompatible type 'NSArray<NSNumber *> *' // CHECK: message // CHECK: Conversion from value of type 'NSArray<NSString *> *' to incompatible type 'NSArray<NSNumber *> *' // CHECK: // CHECK: // CHECK: descriptionConversion from value of type 'NSArray<NSString *> *' to incompatible type 'NSArray<NSNumber *> *' // CHECK: categoryCore Foundation/Objective-C // CHECK: typeGenerics // CHECK: check_namecore.DynamicTypePropagation // CHECK: issue_context_kindfunction // CHECK: issue_contextidErasedIncompatibleTypes // CHECK: issue_hash2 // CHECK: location // CHECK: // CHECK: line121 // CHECK: col7 // CHECK: file0 // CHECK: // CHECK: // CHECK: // CHECK: path // CHECK: // CHECK: // CHECK: kindevent // CHECK: location // CHECK: // CHECK: line120 // CHECK: col7 // CHECK: file0 // CHECK: // CHECK: ranges // CHECK: // CHECK: // CHECK: // CHECK: line120 // CHECK: col7 // CHECK: file0 // CHECK: // CHECK: // CHECK: line120 // CHECK: col7 // CHECK: file0 // CHECK: // CHECK: // CHECK: // CHECK: depth0 // CHECK: extended_message // CHECK: Type 'NSArray<NSString *> *' is inferred from implicit cast (from 'NSArray<NSString *> *' to 'id') // CHECK: message // CHECK: Type 'NSArray<NSString *> *' is inferred from implicit cast (from 'NSArray<NSString *> *' to 'id') // CHECK: // CHECK: // CHECK: kindcontrol // CHECK: edges // CHECK: // CHECK: // CHECK: start // CHECK: // CHECK: // CHECK: line120 // CHECK: col3 // CHECK: file0 // CHECK: // CHECK: // CHECK: line120 // CHECK: col3 // CHECK: file0 // CHECK: // CHECK: // CHECK: end // CHECK: // CHECK: // CHECK: line122 // CHECK: col3 // CHECK: file0 // CHECK: // CHECK: // CHECK: line122 // CHECK: col3 // CHECK: file0 // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: kindevent // CHECK: location // CHECK: // CHECK: line122 // CHECK: col3 // CHECK: file0 // CHECK: // CHECK: ranges // CHECK: // CHECK: // CHECK: // CHECK: line122 // CHECK: col16 // CHECK: file0 // CHECK: // CHECK: // CHECK: line122 // CHECK: col38 // CHECK: file0 // CHECK: // CHECK: // CHECK: // CHECK: depth0 // CHECK: extended_message // CHECK: Conversion from value of type 'NSNumber *' to incompatible type 'NSString *' // CHECK: message // CHECK: Conversion from value of type 'NSNumber *' to incompatible type 'NSString *' // CHECK: // CHECK: // CHECK: descriptionConversion from value of type 'NSNumber *' to incompatible type 'NSString *' // CHECK: categoryCore Foundation/Objective-C // CHECK: typeGenerics // CHECK: check_namecore.DynamicTypePropagation // CHECK: issue_context_kindfunction // CHECK: issue_contextidErasedIncompatibleTypes // CHECK: issue_hash3 // CHECK: location // CHECK: // CHECK: line122 // CHECK: col3 // CHECK: file0 // CHECK: // CHECK: // CHECK: // CHECK: path // CHECK: // CHECK: // CHECK: kindevent // CHECK: location // CHECK: // CHECK: line120 // CHECK: col7 // CHECK: file0 // CHECK: // CHECK: ranges // CHECK: // CHECK: // CHECK: // CHECK: line120 // CHECK: col7 // CHECK: file0 // CHECK: // CHECK: // CHECK: line120 // CHECK: col7 // CHECK: file0 // CHECK: // CHECK: // CHECK: // CHECK: depth0 // CHECK: extended_message // CHECK: Type 'NSArray<NSString *> *' is inferred from implicit cast (from 'NSArray<NSString *> *' to 'id') // CHECK: message // CHECK: Type 'NSArray<NSString *> *' is inferred from implicit cast (from 'NSArray<NSString *> *' to 'id') // CHECK: // CHECK: // CHECK: kindcontrol // CHECK: edges // CHECK: // CHECK: // CHECK: start // CHECK: // CHECK: // CHECK: line120 // CHECK: col3 // CHECK: file0 // CHECK: // CHECK: // CHECK: line120 // CHECK: col3 // CHECK: file0 // CHECK: // CHECK: // CHECK: end // CHECK: // CHECK: // CHECK: line124 // CHECK: col3 // CHECK: file0 // CHECK: // CHECK: // CHECK: line124 // CHECK: col9 // CHECK: file0 // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: kindcontrol // CHECK: edges // CHECK: // CHECK: // CHECK: start // CHECK: // CHECK: // CHECK: line124 // CHECK: col3 // CHECK: file0 // CHECK: // CHECK: // CHECK: line124 // CHECK: col9 // CHECK: file0 // CHECK: // CHECK: // CHECK: end // CHECK: // CHECK: // CHECK: line124 // CHECK: col11 // CHECK: file0 // CHECK: // CHECK: // CHECK: line124 // CHECK: col11 // CHECK: file0 // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: kindevent // CHECK: location // CHECK: // CHECK: line124 // CHECK: col11 // CHECK: file0 // CHECK: // CHECK: ranges // CHECK: // CHECK: // CHECK: // CHECK: line124 // CHECK: col11 // CHECK: file0 // CHECK: // CHECK: // CHECK: line124 // CHECK: col11 // CHECK: file0 // CHECK: // CHECK: // CHECK: // CHECK: depth0 // CHECK: extended_message // CHECK: Conversion from value of type 'NSArray<NSString *> *' to incompatible type 'NSArray<NSNumber *> *' // CHECK: message // CHECK: Conversion from value of type 'NSArray<NSString *> *' to incompatible type 'NSArray<NSNumber *> *' // CHECK: // CHECK: // CHECK: descriptionConversion from value of type 'NSArray<NSString *> *' to incompatible type 'NSArray<NSNumber *> *' // CHECK: categoryCore Foundation/Objective-C // CHECK: typeGenerics // CHECK: check_namecore.DynamicTypePropagation // CHECK: issue_context_kindfunction // CHECK: issue_contextidErasedIncompatibleTypes // CHECK: issue_hash5 // CHECK: location // CHECK: // CHECK: line124 // CHECK: col11 // CHECK: file0 // CHECK: // CHECK: // CHECK: // CHECK: path // CHECK: // CHECK: // CHECK: kindcontrol // CHECK: edges // CHECK: // CHECK: // CHECK: start // CHECK: // CHECK: // CHECK: line129 // CHECK: col3 // CHECK: file0 // CHECK: // CHECK: // CHECK: line129 // CHECK: col4 // CHECK: file0 // CHECK: // CHECK: // CHECK: end // CHECK: // CHECK: // CHECK: line133 // CHECK: col5 // CHECK: file0 // CHECK: // CHECK: // CHECK: line133 // CHECK: col5 // CHECK: file0 // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: kindevent // CHECK: location // CHECK: // CHECK: line133 // CHECK: col9 // CHECK: file0 // CHECK: // CHECK: ranges // CHECK: // CHECK: // CHECK: // CHECK: line133 // CHECK: col9 // CHECK: file0 // CHECK: // CHECK: // CHECK: line133 // CHECK: col9 // CHECK: file0 // CHECK: // CHECK: // CHECK: // CHECK: depth0 // CHECK: extended_message // CHECK: Type 'MutableArray<NSMutableString *> *' is inferred from implicit cast (from 'MutableArray<NSMutableString *> *' to 'MutableArray *') // CHECK: message // CHECK: Type 'MutableArray<NSMutableString *> *' is inferred from implicit cast (from 'MutableArray<NSMutableString *> *' to 'MutableArray *') // CHECK: // CHECK: // CHECK: kindcontrol // CHECK: edges // CHECK: // CHECK: // CHECK: start // CHECK: // CHECK: // CHECK: line133 // CHECK: col5 // CHECK: file0 // CHECK: // CHECK: // CHECK: line133 // CHECK: col5 // CHECK: file0 // CHECK: // CHECK: // CHECK: end // CHECK: // CHECK: // CHECK: line134 // CHECK: col5 // CHECK: file0 // CHECK: // CHECK: // CHECK: line134 // CHECK: col5 // CHECK: file0 // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: kindcontrol // CHECK: edges // CHECK: // CHECK: // CHECK: start // CHECK: // CHECK: // CHECK: line134 // CHECK: col5 // CHECK: file0 // CHECK: // CHECK: // CHECK: line134 // CHECK: col5 // CHECK: file0 // CHECK: // CHECK: // CHECK: end // CHECK: // CHECK: // CHECK: line136 // CHECK: col3 // CHECK: file0 // CHECK: // CHECK: // CHECK: line136 // CHECK: col3 // CHECK: file0 // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: kindevent // CHECK: location // CHECK: // CHECK: line136 // CHECK: col3 // CHECK: file0 // CHECK: // CHECK: ranges // CHECK: // CHECK: // CHECK: // CHECK: line136 // CHECK: col17 // CHECK: file0 // CHECK: // CHECK: // CHECK: line136 // CHECK: col39 // CHECK: file0 // CHECK: // CHECK: // CHECK: // CHECK: depth0 // CHECK: extended_message // CHECK: Conversion from value of type 'NSString *' to incompatible type 'NSMutableString *' // CHECK: message // CHECK: Conversion from value of type 'NSString *' to incompatible type 'NSMutableString *' // CHECK: // CHECK: // CHECK: descriptionConversion from value of type 'NSString *' to incompatible type 'NSMutableString *' // CHECK: categoryCore Foundation/Objective-C // CHECK: typeGenerics // CHECK: check_namecore.DynamicTypePropagation // CHECK: issue_context_kindfunction // CHECK: issue_contextpathSensitiveInference // CHECK: issue_hash8 // CHECK: location // CHECK: // CHECK: line136 // CHECK: col3 // CHECK: file0 // CHECK: // CHECK: // CHECK: // CHECK: path // CHECK: // CHECK: // CHECK: kindevent // CHECK: location // CHECK: // CHECK: line141 // CHECK: col7 // CHECK: file0 // CHECK: // CHECK: ranges // CHECK: // CHECK: // CHECK: // CHECK: line141 // CHECK: col7 // CHECK: file0 // CHECK: // CHECK: // CHECK: line141 // CHECK: col7 // CHECK: file0 // CHECK: // CHECK: // CHECK: // CHECK: depth0 // CHECK: extended_message // CHECK: Type 'MutableArray<NSString *> *' is inferred from implicit cast (from 'id' to 'MutableArray<NSString *> *') // CHECK: message // CHECK: Type 'MutableArray<NSString *> *' is inferred from implicit cast (from 'id' to 'MutableArray<NSString *> *') // CHECK: // CHECK: // CHECK: kindcontrol // CHECK: edges // CHECK: // CHECK: // CHECK: start // CHECK: // CHECK: // CHECK: line141 // CHECK: col3 // CHECK: file0 // CHECK: // CHECK: // CHECK: line141 // CHECK: col3 // CHECK: file0 // CHECK: // CHECK: // CHECK: end // CHECK: // CHECK: // CHECK: line142 // CHECK: col3 // CHECK: file0 // CHECK: // CHECK: // CHECK: line142 // CHECK: col9 // CHECK: file0 // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: kindcontrol // CHECK: edges // CHECK: // CHECK: // CHECK: start // CHECK: // CHECK: // CHECK: line142 // CHECK: col3 // CHECK: file0 // CHECK: // CHECK: // CHECK: line142 // CHECK: col9 // CHECK: file0 // CHECK: // CHECK: // CHECK: end // CHECK: // CHECK: // CHECK: line142 // CHECK: col11 // CHECK: file0 // CHECK: // CHECK: // CHECK: line142 // CHECK: col11 // CHECK: file0 // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: kindevent // CHECK: location // CHECK: // CHECK: line142 // CHECK: col11 // CHECK: file0 // CHECK: // CHECK: ranges // CHECK: // CHECK: // CHECK: // CHECK: line142 // CHECK: col11 // CHECK: file0 // CHECK: // CHECK: // CHECK: line142 // CHECK: col11 // CHECK: file0 // CHECK: // CHECK: // CHECK: // CHECK: depth0 // CHECK: extended_message // CHECK: Conversion from value of type 'MutableArray<NSString *> *' to incompatible type 'NSArray<NSNumber *> *' // CHECK: message // CHECK: Conversion from value of type 'MutableArray<NSString *> *' to incompatible type 'NSArray<NSNumber *> *' // CHECK: // CHECK: // CHECK: descriptionConversion from value of type 'MutableArray<NSString *> *' to incompatible type 'NSArray<NSNumber *> *' // CHECK: categoryCore Foundation/Objective-C // CHECK: typeGenerics // CHECK: check_namecore.DynamicTypePropagation // CHECK: issue_context_kindfunction // CHECK: issue_contextverifyAPIusage // CHECK: issue_hash2 // CHECK: location // CHECK: // CHECK: line142 // CHECK: col11 // CHECK: file0 // CHECK: // CHECK: // CHECK: // CHECK: path // CHECK: // CHECK: // CHECK: kindevent // CHECK: location // CHECK: // CHECK: line147 // CHECK: col7 // CHECK: file0 // CHECK: // CHECK: ranges // CHECK: // CHECK: // CHECK: // CHECK: line147 // CHECK: col7 // CHECK: file0 // CHECK: // CHECK: // CHECK: line147 // CHECK: col42 // CHECK: file0 // CHECK: // CHECK: // CHECK: // CHECK: depth0 // CHECK: extended_message // CHECK: Type 'MutableArray<NSMutableString *> *' is inferred from explicit cast (from 'MutableArray *' to 'MutableArray<NSMutableString *> *') // CHECK: message // CHECK: Type 'MutableArray<NSMutableString *> *' is inferred from explicit cast (from 'MutableArray *' to 'MutableArray<NSMutableString *> *') // CHECK: // CHECK: // CHECK: kindcontrol // CHECK: edges // CHECK: // CHECK: // CHECK: start // CHECK: // CHECK: // CHECK: line147 // CHECK: col3 // CHECK: file0 // CHECK: // CHECK: // CHECK: line147 // CHECK: col3 // CHECK: file0 // CHECK: // CHECK: // CHECK: end // CHECK: // CHECK: // CHECK: line148 // CHECK: col3 // CHECK: file0 // CHECK: // CHECK: // CHECK: line148 // CHECK: col3 // CHECK: file0 // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: kindevent // CHECK: location // CHECK: // CHECK: line148 // CHECK: col3 // CHECK: file0 // CHECK: // CHECK: ranges // CHECK: // CHECK: // CHECK: // CHECK: line148 // CHECK: col17 // CHECK: file0 // CHECK: // CHECK: // CHECK: line148 // CHECK: col39 // CHECK: file0 // CHECK: // CHECK: // CHECK: // CHECK: depth0 // CHECK: extended_message // CHECK: Conversion from value of type 'NSString *' to incompatible type 'NSMutableString *' // CHECK: message // CHECK: Conversion from value of type 'NSString *' to incompatible type 'NSMutableString *' // CHECK: // CHECK: // CHECK: descriptionConversion from value of type 'NSString *' to incompatible type 'NSMutableString *' // CHECK: categoryCore Foundation/Objective-C // CHECK: typeGenerics // CHECK: check_namecore.DynamicTypePropagation // CHECK: issue_context_kindfunction // CHECK: issue_contexttrustExplicitCasts // CHECK: issue_hash2 // CHECK: location // CHECK: // CHECK: line148 // CHECK: col3 // CHECK: file0 // CHECK: // CHECK: // CHECK: // CHECK: path // CHECK: // CHECK: // CHECK: kindcontrol // CHECK: edges // CHECK: // CHECK: // CHECK: start // CHECK: // CHECK: // CHECK: line154 // CHECK: col3 // CHECK: file0 // CHECK: // CHECK: // CHECK: line154 // CHECK: col3 // CHECK: file0 // CHECK: // CHECK: // CHECK: end // CHECK: // CHECK: // CHECK: line155 // CHECK: col3 // CHECK: file0 // CHECK: // CHECK: // CHECK: line155 // CHECK: col3 // CHECK: file0 // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: kindevent // CHECK: location // CHECK: // CHECK: line155 // CHECK: col7 // CHECK: file0 // CHECK: // CHECK: ranges // CHECK: // CHECK: // CHECK: // CHECK: line155 // CHECK: col7 // CHECK: file0 // CHECK: // CHECK: // CHECK: line155 // CHECK: col7 // CHECK: file0 // CHECK: // CHECK: // CHECK: // CHECK: depth0 // CHECK: extended_message // CHECK: Type 'MutableArray<NSString *> *' is inferred from implicit cast (from 'id' to 'MutableArray<NSString *> *') // CHECK: message // CHECK: Type 'MutableArray<NSString *> *' is inferred from implicit cast (from 'id' to 'MutableArray<NSString *> *') // CHECK: // CHECK: // CHECK: kindcontrol // CHECK: edges // CHECK: // CHECK: // CHECK: start // CHECK: // CHECK: // CHECK: line155 // CHECK: col3 // CHECK: file0 // CHECK: // CHECK: // CHECK: line155 // CHECK: col3 // CHECK: file0 // CHECK: // CHECK: // CHECK: end // CHECK: // CHECK: // CHECK: line156 // CHECK: col3 // CHECK: file0 // CHECK: // CHECK: // CHECK: line156 // CHECK: col3 // CHECK: file0 // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: kindcontrol // CHECK: edges // CHECK: // CHECK: // CHECK: start // CHECK: // CHECK: // CHECK: line156 // CHECK: col3 // CHECK: file0 // CHECK: // CHECK: // CHECK: line156 // CHECK: col3 // CHECK: file0 // CHECK: // CHECK: // CHECK: end // CHECK: // CHECK: // CHECK: line156 // CHECK: col7 // CHECK: file0 // CHECK: // CHECK: // CHECK: line156 // CHECK: col7 // CHECK: file0 // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: kindevent // CHECK: location // CHECK: // CHECK: line156 // CHECK: col7 // CHECK: file0 // CHECK: // CHECK: ranges // CHECK: // CHECK: // CHECK: // CHECK: line156 // CHECK: col7 // CHECK: file0 // CHECK: // CHECK: // CHECK: line156 // CHECK: col7 // CHECK: file0 // CHECK: // CHECK: // CHECK: // CHECK: depth0 // CHECK: extended_message // CHECK: Conversion from value of type 'MutableArray<NSString *> *' to incompatible type 'MutableArray<NSNumber *> *' // CHECK: message // CHECK: Conversion from value of type 'MutableArray<NSString *> *' to incompatible type 'MutableArray<NSNumber *> *' // CHECK: // CHECK: // CHECK: descriptionConversion from value of type 'MutableArray<NSString *> *' to incompatible type 'MutableArray<NSNumber *> *' // CHECK: categoryCore Foundation/Objective-C // CHECK: typeGenerics // CHECK: check_namecore.DynamicTypePropagation // CHECK: issue_context_kindfunction // CHECK: issue_contextsubtypeOfGeneric // CHECK: issue_hash3 // CHECK: location // CHECK: // CHECK: line156 // CHECK: col7 // CHECK: file0 // CHECK: // CHECK: // CHECK: // CHECK: path // CHECK: // CHECK: // CHECK: kindevent // CHECK: location // CHECK: // CHECK: line162 // CHECK: col7 // CHECK: file0 // CHECK: // CHECK: ranges // CHECK: // CHECK: // CHECK: // CHECK: line162 // CHECK: col7 // CHECK: file0 // CHECK: // CHECK: // CHECK: line162 // CHECK: col7 // CHECK: file0 // CHECK: // CHECK: // CHECK: // CHECK: depth0 // CHECK: extended_message // CHECK: Type 'ExceptionalArray<NSString *> *' is inferred from implicit cast (from 'ExceptionalArray<NSString *> *' to 'id') // CHECK: message // CHECK: Type 'ExceptionalArray<NSString *> *' is inferred from implicit cast (from 'ExceptionalArray<NSString *> *' to 'id') // CHECK: // CHECK: // CHECK: kindcontrol // CHECK: edges // CHECK: // CHECK: // CHECK: start // CHECK: // CHECK: // CHECK: line162 // CHECK: col3 // CHECK: file0 // CHECK: // CHECK: // CHECK: line162 // CHECK: col3 // CHECK: file0 // CHECK: // CHECK: // CHECK: end // CHECK: // CHECK: // CHECK: line164 // CHECK: col3 // CHECK: file0 // CHECK: // CHECK: // CHECK: line164 // CHECK: col3 // CHECK: file0 // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: kindevent // CHECK: location // CHECK: // CHECK: line164 // CHECK: col3 // CHECK: file0 // CHECK: // CHECK: ranges // CHECK: // CHECK: // CHECK: // CHECK: line164 // CHECK: col16 // CHECK: file0 // CHECK: // CHECK: // CHECK: line164 // CHECK: col38 // CHECK: file0 // CHECK: // CHECK: // CHECK: // CHECK: depth0 // CHECK: extended_message // CHECK: Conversion from value of type 'NSNumber *' to incompatible type 'NSString *' // CHECK: message // CHECK: Conversion from value of type 'NSNumber *' to incompatible type 'NSString *' // CHECK: // CHECK: // CHECK: descriptionConversion from value of type 'NSNumber *' to incompatible type 'NSString *' // CHECK: categoryCore Foundation/Objective-C // CHECK: typeGenerics // CHECK: check_namecore.DynamicTypePropagation // CHECK: issue_context_kindfunction // CHECK: issue_contextgenericSubtypeOfGeneric // CHECK: issue_hash3 // CHECK: location // CHECK: // CHECK: line164 // CHECK: col3 // CHECK: file0 // CHECK: // CHECK: // CHECK: // CHECK: path // CHECK: // CHECK: // CHECK: kindevent // CHECK: location // CHECK: // CHECK: line162 // CHECK: col7 // CHECK: file0 // CHECK: // CHECK: ranges // CHECK: // CHECK: // CHECK: // CHECK: line162 // CHECK: col7 // CHECK: file0 // CHECK: // CHECK: // CHECK: line162 // CHECK: col7 // CHECK: file0 // CHECK: // CHECK: // CHECK: // CHECK: depth0 // CHECK: extended_message // CHECK: Type 'ExceptionalArray<NSString *> *' is inferred from implicit cast (from 'ExceptionalArray<NSString *> *' to 'id') // CHECK: message // CHECK: Type 'ExceptionalArray<NSString *> *' is inferred from implicit cast (from 'ExceptionalArray<NSString *> *' to 'id') // CHECK: // CHECK: // CHECK: kindcontrol // CHECK: edges // CHECK: // CHECK: // CHECK: start // CHECK: // CHECK: // CHECK: line162 // CHECK: col3 // CHECK: file0 // CHECK: // CHECK: // CHECK: line162 // CHECK: col3 // CHECK: file0 // CHECK: // CHECK: // CHECK: end // CHECK: // CHECK: // CHECK: line166 // CHECK: col3 // CHECK: file0 // CHECK: // CHECK: // CHECK: line166 // CHECK: col3 // CHECK: file0 // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: kindcontrol // CHECK: edges // CHECK: // CHECK: // CHECK: start // CHECK: // CHECK: // CHECK: line166 // CHECK: col3 // CHECK: file0 // CHECK: // CHECK: // CHECK: line166 // CHECK: col3 // CHECK: file0 // CHECK: // CHECK: // CHECK: end // CHECK: // CHECK: // CHECK: line166 // CHECK: col7 // CHECK: file0 // CHECK: // CHECK: // CHECK: line166 // CHECK: col7 // CHECK: file0 // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: kindevent // CHECK: location // CHECK: // CHECK: line166 // CHECK: col7 // CHECK: file0 // CHECK: // CHECK: ranges // CHECK: // CHECK: // CHECK: // CHECK: line166 // CHECK: col7 // CHECK: file0 // CHECK: // CHECK: // CHECK: line166 // CHECK: col7 // CHECK: file0 // CHECK: // CHECK: // CHECK: // CHECK: depth0 // CHECK: extended_message // CHECK: Conversion from value of type 'ExceptionalArray<NSString *> *' to incompatible type 'MutableArray<NSNumber *> *' // CHECK: message // CHECK: Conversion from value of type 'ExceptionalArray<NSString *> *' to incompatible type 'MutableArray<NSNumber *> *' // CHECK: // CHECK: // CHECK: descriptionConversion from value of type 'ExceptionalArray<NSString *> *' to incompatible type 'MutableArray<NSNumber *> *' // CHECK: categoryCore Foundation/Objective-C // CHECK: typeGenerics // CHECK: check_namecore.DynamicTypePropagation // CHECK: issue_context_kindfunction // CHECK: issue_contextgenericSubtypeOfGeneric // CHECK: issue_hash5 // CHECK: location // CHECK: // CHECK: line166 // CHECK: col7 // CHECK: file0 // CHECK: // CHECK: // CHECK: // CHECK: path // CHECK: // CHECK: // CHECK: kindevent // CHECK: location // CHECK: // CHECK: line172 // CHECK: col7 // CHECK: file0 // CHECK: // CHECK: ranges // CHECK: // CHECK: // CHECK: // CHECK: line172 // CHECK: col7 // CHECK: file0 // CHECK: // CHECK: // CHECK: line172 // CHECK: col7 // CHECK: file0 // CHECK: // CHECK: // CHECK: // CHECK: depth0 // CHECK: extended_message // CHECK: Type 'ExceptionalArray<NSString *> *' is inferred from implicit cast (from 'id' to 'ExceptionalArray<NSString *> *') // CHECK: message // CHECK: Type 'ExceptionalArray<NSString *> *' is inferred from implicit cast (from 'id' to 'ExceptionalArray<NSString *> *') // CHECK: // CHECK: // CHECK: kindcontrol // CHECK: edges // CHECK: // CHECK: // CHECK: start // CHECK: // CHECK: // CHECK: line172 // CHECK: col3 // CHECK: file0 // CHECK: // CHECK: // CHECK: line172 // CHECK: col3 // CHECK: file0 // CHECK: // CHECK: // CHECK: end // CHECK: // CHECK: // CHECK: line174 // CHECK: col3 // CHECK: file0 // CHECK: // CHECK: // CHECK: line174 // CHECK: col3 // CHECK: file0 // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: kindevent // CHECK: location // CHECK: // CHECK: line174 // CHECK: col3 // CHECK: file0 // CHECK: // CHECK: ranges // CHECK: // CHECK: // CHECK: // CHECK: line174 // CHECK: col16 // CHECK: file0 // CHECK: // CHECK: // CHECK: line174 // CHECK: col38 // CHECK: file0 // CHECK: // CHECK: // CHECK: // CHECK: depth0 // CHECK: extended_message // CHECK: Conversion from value of type 'NSNumber *' to incompatible type 'NSString *' // CHECK: message // CHECK: Conversion from value of type 'NSNumber *' to incompatible type 'NSString *' // CHECK: // CHECK: // CHECK: descriptionConversion from value of type 'NSNumber *' to incompatible type 'NSString *' // CHECK: categoryCore Foundation/Objective-C // CHECK: typeGenerics // CHECK: check_namecore.DynamicTypePropagation // CHECK: issue_context_kindfunction // CHECK: issue_contextgenericSubtypeOfGenericReverse // CHECK: issue_hash3 // CHECK: location // CHECK: // CHECK: line174 // CHECK: col3 // CHECK: file0 // CHECK: // CHECK: // CHECK: // CHECK: path // CHECK: // CHECK: // CHECK: kindevent // CHECK: location // CHECK: // CHECK: line172 // CHECK: col7 // CHECK: file0 // CHECK: // CHECK: ranges // CHECK: // CHECK: // CHECK: // CHECK: line172 // CHECK: col7 // CHECK: file0 // CHECK: // CHECK: // CHECK: line172 // CHECK: col7 // CHECK: file0 // CHECK: // CHECK: // CHECK: // CHECK: depth0 // CHECK: extended_message // CHECK: Type 'ExceptionalArray<NSString *> *' is inferred from implicit cast (from 'id' to 'ExceptionalArray<NSString *> *') // CHECK: message // CHECK: Type 'ExceptionalArray<NSString *> *' is inferred from implicit cast (from 'id' to 'ExceptionalArray<NSString *> *') // CHECK: // CHECK: // CHECK: kindcontrol // CHECK: edges // CHECK: // CHECK: // CHECK: start // CHECK: // CHECK: // CHECK: line172 // CHECK: col3 // CHECK: file0 // CHECK: // CHECK: // CHECK: line172 // CHECK: col3 // CHECK: file0 // CHECK: // CHECK: // CHECK: end // CHECK: // CHECK: // CHECK: line176 // CHECK: col3 // CHECK: file0 // CHECK: // CHECK: // CHECK: line176 // CHECK: col3 // CHECK: file0 // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: kindcontrol // CHECK: edges // CHECK: // CHECK: // CHECK: start // CHECK: // CHECK: // CHECK: line176 // CHECK: col3 // CHECK: file0 // CHECK: // CHECK: // CHECK: line176 // CHECK: col3 // CHECK: file0 // CHECK: // CHECK: // CHECK: end // CHECK: // CHECK: // CHECK: line176 // CHECK: col7 // CHECK: file0 // CHECK: // CHECK: // CHECK: line176 // CHECK: col7 // CHECK: file0 // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: kindevent // CHECK: location // CHECK: // CHECK: line176 // CHECK: col7 // CHECK: file0 // CHECK: // CHECK: ranges // CHECK: // CHECK: // CHECK: // CHECK: line176 // CHECK: col7 // CHECK: file0 // CHECK: // CHECK: // CHECK: line176 // CHECK: col7 // CHECK: file0 // CHECK: // CHECK: // CHECK: // CHECK: depth0 // CHECK: extended_message // CHECK: Conversion from value of type 'ExceptionalArray<NSString *> *' to incompatible type 'MutableArray<NSNumber *> *' // CHECK: message // CHECK: Conversion from value of type 'ExceptionalArray<NSString *> *' to incompatible type 'MutableArray<NSNumber *> *' // CHECK: // CHECK: // CHECK: descriptionConversion from value of type 'ExceptionalArray<NSString *> *' to incompatible type 'MutableArray<NSNumber *> *' // CHECK: categoryCore Foundation/Objective-C // CHECK: typeGenerics // CHECK: check_namecore.DynamicTypePropagation // CHECK: issue_context_kindfunction // CHECK: issue_contextgenericSubtypeOfGenericReverse // CHECK: issue_hash5 // CHECK: location // CHECK: // CHECK: line176 // CHECK: col7 // CHECK: file0 // CHECK: // CHECK: // CHECK: // CHECK: path // CHECK: // CHECK: // CHECK: kindevent // CHECK: location // CHECK: // CHECK: line182 // CHECK: col20 // CHECK: file0 // CHECK: // CHECK: ranges // CHECK: // CHECK: // CHECK: // CHECK: line182 // CHECK: col20 // CHECK: file0 // CHECK: // CHECK: // CHECK: line182 // CHECK: col20 // CHECK: file0 // CHECK: // CHECK: // CHECK: // CHECK: depth0 // CHECK: extended_message // CHECK: Type 'MutableArray<NSString *> *' is inferred from implicit cast (from 'id' to 'MutableArray<NSString *> *') // CHECK: message // CHECK: Type 'MutableArray<NSString *> *' is inferred from implicit cast (from 'id' to 'MutableArray<NSString *> *') // CHECK: // CHECK: // CHECK: kindcontrol // CHECK: edges // CHECK: // CHECK: // CHECK: start // CHECK: // CHECK: // CHECK: line182 // CHECK: col3 // CHECK: file0 // CHECK: // CHECK: // CHECK: line182 // CHECK: col18 // CHECK: file0 // CHECK: // CHECK: // CHECK: end // CHECK: // CHECK: // CHECK: line183 // CHECK: col3 // CHECK: file0 // CHECK: // CHECK: // CHECK: line183 // CHECK: col25 // CHECK: file0 // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: kindcontrol // CHECK: edges // CHECK: // CHECK: // CHECK: start // CHECK: // CHECK: // CHECK: line183 // CHECK: col3 // CHECK: file0 // CHECK: // CHECK: // CHECK: line183 // CHECK: col25 // CHECK: file0 // CHECK: // CHECK: // CHECK: end // CHECK: // CHECK: // CHECK: line183 // CHECK: col27 // CHECK: file0 // CHECK: // CHECK: // CHECK: line183 // CHECK: col27 // CHECK: file0 // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: kindevent // CHECK: location // CHECK: // CHECK: line183 // CHECK: col27 // CHECK: file0 // CHECK: // CHECK: ranges // CHECK: // CHECK: // CHECK: // CHECK: line183 // CHECK: col27 // CHECK: file0 // CHECK: // CHECK: // CHECK: line183 // CHECK: col27 // CHECK: file0 // CHECK: // CHECK: // CHECK: // CHECK: depth0 // CHECK: extended_message // CHECK: Conversion from value of type 'MutableArray<NSString *> *' to incompatible type 'MutableArray<NSMutableString *> *' // CHECK: message // CHECK: Conversion from value of type 'MutableArray<NSString *> *' to incompatible type 'MutableArray<NSMutableString *> *' // CHECK: // CHECK: // CHECK: descriptionConversion from value of type 'MutableArray<NSString *> *' to incompatible type 'MutableArray<NSMutableString *> *' // CHECK: categoryCore Foundation/Objective-C // CHECK: typeGenerics // CHECK: check_namecore.DynamicTypePropagation // CHECK: issue_context_kindfunction // CHECK: issue_contextinferenceFromAPI // CHECK: issue_hash4 // CHECK: location // CHECK: // CHECK: line183 // CHECK: col27 // CHECK: file0 // CHECK: // CHECK: // CHECK: // CHECK: path // CHECK: // CHECK: // CHECK: kindevent // CHECK: location // CHECK: // CHECK: line187 // CHECK: col27 // CHECK: file0 // CHECK: // CHECK: ranges // CHECK: // CHECK: // CHECK: // CHECK: line187 // CHECK: col27 // CHECK: file0 // CHECK: // CHECK: // CHECK: line187 // CHECK: col27 // CHECK: file0 // CHECK: // CHECK: // CHECK: // CHECK: depth0 // CHECK: extended_message // CHECK: Type 'MutableArray<NSMutableString *> *' is inferred from implicit cast (from 'id' to 'MutableArray<NSMutableString *> *') // CHECK: message // CHECK: Type 'MutableArray<NSMutableString *> *' is inferred from implicit cast (from 'id' to 'MutableArray<NSMutableString *> *') // CHECK: // CHECK: // CHECK: kindcontrol // CHECK: edges // CHECK: // CHECK: // CHECK: start // CHECK: // CHECK: // CHECK: line187 // CHECK: col3 // CHECK: file0 // CHECK: // CHECK: // CHECK: line187 // CHECK: col25 // CHECK: file0 // CHECK: // CHECK: // CHECK: end // CHECK: // CHECK: // CHECK: line188 // CHECK: col3 // CHECK: file0 // CHECK: // CHECK: // CHECK: line188 // CHECK: col18 // CHECK: file0 // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: kindcontrol // CHECK: edges // CHECK: // CHECK: // CHECK: start // CHECK: // CHECK: // CHECK: line188 // CHECK: col3 // CHECK: file0 // CHECK: // CHECK: // CHECK: line188 // CHECK: col18 // CHECK: file0 // CHECK: // CHECK: // CHECK: end // CHECK: // CHECK: // CHECK: line188 // CHECK: col20 // CHECK: file0 // CHECK: // CHECK: // CHECK: line188 // CHECK: col20 // CHECK: file0 // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: kindevent // CHECK: location // CHECK: // CHECK: line188 // CHECK: col20 // CHECK: file0 // CHECK: // CHECK: ranges // CHECK: // CHECK: // CHECK: // CHECK: line188 // CHECK: col20 // CHECK: file0 // CHECK: // CHECK: // CHECK: line188 // CHECK: col20 // CHECK: file0 // CHECK: // CHECK: // CHECK: // CHECK: depth0 // CHECK: extended_message // CHECK: Conversion from value of type 'MutableArray<NSMutableString *> *' to incompatible type 'MutableArray<NSString *> *' // CHECK: message // CHECK: Conversion from value of type 'MutableArray<NSMutableString *> *' to incompatible type 'MutableArray<NSString *> *' // CHECK: // CHECK: // CHECK: descriptionConversion from value of type 'MutableArray<NSMutableString *> *' to incompatible type 'MutableArray<NSString *> *' // CHECK: categoryCore Foundation/Objective-C // CHECK: typeGenerics // CHECK: check_namecore.DynamicTypePropagation // CHECK: issue_context_kindfunction // CHECK: issue_contextinferenceFromAPI2 // CHECK: issue_hash2 // CHECK: location // CHECK: // CHECK: line188 // CHECK: col20 // CHECK: file0 // CHECK: // CHECK: // CHECK: // CHECK: path // CHECK: // CHECK: // CHECK: kindevent // CHECK: location // CHECK: // CHECK: line192 // CHECK: col27 // CHECK: file0 // CHECK: // CHECK: ranges // CHECK: // CHECK: // CHECK: // CHECK: line192 // CHECK: col27 // CHECK: file0 // CHECK: // CHECK: // CHECK: line192 // CHECK: col27 // CHECK: file0 // CHECK: // CHECK: // CHECK: // CHECK: depth0 // CHECK: extended_message // CHECK: Type 'MutableArray<NSMutableString *> *' is inferred from implicit cast (from 'LegacyMutableArray *' to 'MutableArray<NSMutableString *> *') // CHECK: message // CHECK: Type 'MutableArray<NSMutableString *> *' is inferred from implicit cast (from 'LegacyMutableArray *' to 'MutableArray<NSMutableString *> *') // CHECK: // CHECK: // CHECK: kindcontrol // CHECK: edges // CHECK: // CHECK: // CHECK: start // CHECK: // CHECK: // CHECK: line192 // CHECK: col3 // CHECK: file0 // CHECK: // CHECK: // CHECK: line192 // CHECK: col25 // CHECK: file0 // CHECK: // CHECK: // CHECK: end // CHECK: // CHECK: // CHECK: line193 // CHECK: col3 // CHECK: file0 // CHECK: // CHECK: // CHECK: line193 // CHECK: col18 // CHECK: file0 // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: kindcontrol // CHECK: edges // CHECK: // CHECK: // CHECK: start // CHECK: // CHECK: // CHECK: line193 // CHECK: col3 // CHECK: file0 // CHECK: // CHECK: // CHECK: line193 // CHECK: col18 // CHECK: file0 // CHECK: // CHECK: // CHECK: end // CHECK: // CHECK: // CHECK: line193 // CHECK: col20 // CHECK: file0 // CHECK: // CHECK: // CHECK: line193 // CHECK: col20 // CHECK: file0 // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: kindevent // CHECK: location // CHECK: // CHECK: line193 // CHECK: col20 // CHECK: file0 // CHECK: // CHECK: ranges // CHECK: // CHECK: // CHECK: // CHECK: line193 // CHECK: col20 // CHECK: file0 // CHECK: // CHECK: // CHECK: line193 // CHECK: col20 // CHECK: file0 // CHECK: // CHECK: // CHECK: // CHECK: depth0 // CHECK: extended_message // CHECK: Conversion from value of type 'MutableArray<NSMutableString *> *' to incompatible type 'MutableArray<NSString *> *' // CHECK: message // CHECK: Conversion from value of type 'MutableArray<NSMutableString *> *' to incompatible type 'MutableArray<NSString *> *' // CHECK: // CHECK: // CHECK: descriptionConversion from value of type 'MutableArray<NSMutableString *> *' to incompatible type 'MutableArray<NSString *> *' // CHECK: categoryCore Foundation/Objective-C // CHECK: typeGenerics // CHECK: check_namecore.DynamicTypePropagation // CHECK: issue_context_kindfunction // CHECK: issue_contextinferenceFromAPIWithLegacyTypes // CHECK: issue_hash2 // CHECK: location // CHECK: // CHECK: line193 // CHECK: col20 // CHECK: file0 // CHECK: // CHECK: // CHECK: // CHECK: path // CHECK: // CHECK: // CHECK: kindevent // CHECK: location // CHECK: // CHECK: line197 // CHECK: col20 // CHECK: file0 // CHECK: // CHECK: ranges // CHECK: // CHECK: // CHECK: // CHECK: line197 // CHECK: col20 // CHECK: file0 // CHECK: // CHECK: // CHECK: line197 // CHECK: col20 // CHECK: file0 // CHECK: // CHECK: // CHECK: // CHECK: depth0 // CHECK: extended_message // CHECK: Type 'MutableArray<NSString *> *' is inferred from implicit cast (from 'LegacySpecialMutableArray *' to 'MutableArray<NSString *> *') // CHECK: message // CHECK: Type 'MutableArray<NSString *> *' is inferred from implicit cast (from 'LegacySpecialMutableArray *' to 'MutableArray<NSString *> *') // CHECK: // CHECK: // CHECK: kindcontrol // CHECK: edges // CHECK: // CHECK: // CHECK: start // CHECK: // CHECK: // CHECK: line197 // CHECK: col3 // CHECK: file0 // CHECK: // CHECK: // CHECK: line197 // CHECK: col18 // CHECK: file0 // CHECK: // CHECK: // CHECK: end // CHECK: // CHECK: // CHECK: line198 // CHECK: col3 // CHECK: file0 // CHECK: // CHECK: // CHECK: line198 // CHECK: col25 // CHECK: file0 // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: kindcontrol // CHECK: edges // CHECK: // CHECK: // CHECK: start // CHECK: // CHECK: // CHECK: line198 // CHECK: col3 // CHECK: file0 // CHECK: // CHECK: // CHECK: line198 // CHECK: col25 // CHECK: file0 // CHECK: // CHECK: // CHECK: end // CHECK: // CHECK: // CHECK: line198 // CHECK: col27 // CHECK: file0 // CHECK: // CHECK: // CHECK: line198 // CHECK: col27 // CHECK: file0 // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: kindevent // CHECK: location // CHECK: // CHECK: line198 // CHECK: col27 // CHECK: file0 // CHECK: // CHECK: ranges // CHECK: // CHECK: // CHECK: // CHECK: line198 // CHECK: col27 // CHECK: file0 // CHECK: // CHECK: // CHECK: line198 // CHECK: col27 // CHECK: file0 // CHECK: // CHECK: // CHECK: // CHECK: depth0 // CHECK: extended_message // CHECK: Conversion from value of type 'MutableArray<NSString *> *' to incompatible type 'MutableArray<NSMutableString *> *' // CHECK: message // CHECK: Conversion from value of type 'MutableArray<NSString *> *' to incompatible type 'MutableArray<NSMutableString *> *' // CHECK: // CHECK: // CHECK: descriptionConversion from value of type 'MutableArray<NSString *> *' to incompatible type 'MutableArray<NSMutableString *> *' // CHECK: categoryCore Foundation/Objective-C // CHECK: typeGenerics // CHECK: check_namecore.DynamicTypePropagation // CHECK: issue_context_kindfunction // CHECK: issue_contextinferenceFromAPIWithLegacyTypes2 // CHECK: issue_hash2 // CHECK: location // CHECK: // CHECK: line198 // CHECK: col27 // CHECK: file0 // CHECK: // CHECK: // CHECK: // CHECK: path // CHECK: // CHECK: // CHECK: kindevent // CHECK: location // CHECK: // CHECK: line202 // CHECK: col27 // CHECK: file0 // CHECK: // CHECK: ranges // CHECK: // CHECK: // CHECK: // CHECK: line202 // CHECK: col27 // CHECK: file0 // CHECK: // CHECK: // CHECK: line202 // CHECK: col27 // CHECK: file0 // CHECK: // CHECK: // CHECK: // CHECK: depth0 // CHECK: extended_message // CHECK: Type 'NSArray<NSString *> *' is inferred from implicit cast (from '__kindof NSArray<NSString *> *' to 'LegacyMutableArray *') // CHECK: message // CHECK: Type 'NSArray<NSString *> *' is inferred from implicit cast (from '__kindof NSArray<NSString *> *' to 'LegacyMutableArray *') // CHECK: // CHECK: // CHECK: kindcontrol // CHECK: edges // CHECK: // CHECK: // CHECK: start // CHECK: // CHECK: // CHECK: line202 // CHECK: col3 // CHECK: file0 // CHECK: // CHECK: // CHECK: line202 // CHECK: col20 // CHECK: file0 // CHECK: // CHECK: // CHECK: end // CHECK: // CHECK: // CHECK: line203 // CHECK: col3 // CHECK: file0 // CHECK: // CHECK: // CHECK: line203 // CHECK: col18 // CHECK: file0 // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: kindevent // CHECK: location // CHECK: // CHECK: line203 // CHECK: col20 // CHECK: file0 // CHECK: // CHECK: ranges // CHECK: // CHECK: // CHECK: // CHECK: line203 // CHECK: col20 // CHECK: file0 // CHECK: // CHECK: // CHECK: line203 // CHECK: col20 // CHECK: file0 // CHECK: // CHECK: // CHECK: // CHECK: depth0 // CHECK: extended_message // CHECK: Type 'MutableArray<NSString *> *' is inferred from implicit cast (from 'LegacyMutableArray *' to 'MutableArray<NSString *> *') // CHECK: message // CHECK: Type 'MutableArray<NSString *> *' is inferred from implicit cast (from 'LegacyMutableArray *' to 'MutableArray<NSString *> *') // CHECK: // CHECK: // CHECK: kindcontrol // CHECK: edges // CHECK: // CHECK: // CHECK: start // CHECK: // CHECK: // CHECK: line203 // CHECK: col3 // CHECK: file0 // CHECK: // CHECK: // CHECK: line203 // CHECK: col18 // CHECK: file0 // CHECK: // CHECK: // CHECK: end // CHECK: // CHECK: // CHECK: line204 // CHECK: col3 // CHECK: file0 // CHECK: // CHECK: // CHECK: line204 // CHECK: col25 // CHECK: file0 // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: kindcontrol // CHECK: edges // CHECK: // CHECK: // CHECK: start // CHECK: // CHECK: // CHECK: line204 // CHECK: col3 // CHECK: file0 // CHECK: // CHECK: // CHECK: line204 // CHECK: col25 // CHECK: file0 // CHECK: // CHECK: // CHECK: end // CHECK: // CHECK: // CHECK: line204 // CHECK: col27 // CHECK: file0 // CHECK: // CHECK: // CHECK: line204 // CHECK: col27 // CHECK: file0 // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: kindevent // CHECK: location // CHECK: // CHECK: line204 // CHECK: col27 // CHECK: file0 // CHECK: // CHECK: ranges // CHECK: // CHECK: // CHECK: // CHECK: line204 // CHECK: col27 // CHECK: file0 // CHECK: // CHECK: // CHECK: line204 // CHECK: col27 // CHECK: file0 // CHECK: // CHECK: // CHECK: // CHECK: depth0 // CHECK: extended_message // CHECK: Conversion from value of type 'MutableArray<NSString *> *' to incompatible type 'MutableArray<NSMutableString *> *' // CHECK: message // CHECK: Conversion from value of type 'MutableArray<NSString *> *' to incompatible type 'MutableArray<NSMutableString *> *' // CHECK: // CHECK: // CHECK: descriptionConversion from value of type 'MutableArray<NSString *> *' to incompatible type 'MutableArray<NSMutableString *> *' // CHECK: categoryCore Foundation/Objective-C // CHECK: typeGenerics // CHECK: check_namecore.DynamicTypePropagation // CHECK: issue_context_kindfunction // CHECK: issue_contextinferenceFromAPIWithLegacyTypes3 // CHECK: issue_hash3 // CHECK: location // CHECK: // CHECK: line204 // CHECK: col27 // CHECK: file0 // CHECK: // CHECK: // CHECK: // CHECK: path // CHECK: // CHECK: // CHECK: kindevent // CHECK: location // CHECK: // CHECK: line208 // CHECK: col20 // CHECK: file0 // CHECK: // CHECK: ranges // CHECK: // CHECK: // CHECK: // CHECK: line208 // CHECK: col20 // CHECK: file0 // CHECK: // CHECK: // CHECK: line208 // CHECK: col20 // CHECK: file0 // CHECK: // CHECK: // CHECK: // CHECK: depth0 // CHECK: extended_message // CHECK: Type 'MutableArray<NSString *> *' is inferred from implicit cast (from 'BuggyMutableArray<NSMutableString *> *' to 'MutableArray<NSString *> *') // CHECK: message // CHECK: Type 'MutableArray<NSString *> *' is inferred from implicit cast (from 'BuggyMutableArray<NSMutableString *> *' to 'MutableArray<NSString *> *') // CHECK: // CHECK: // CHECK: kindcontrol // CHECK: edges // CHECK: // CHECK: // CHECK: start // CHECK: // CHECK: // CHECK: line208 // CHECK: col3 // CHECK: file0 // CHECK: // CHECK: // CHECK: line208 // CHECK: col18 // CHECK: file0 // CHECK: // CHECK: // CHECK: end // CHECK: // CHECK: // CHECK: line209 // CHECK: col3 // CHECK: file0 // CHECK: // CHECK: // CHECK: line209 // CHECK: col25 // CHECK: file0 // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: kindcontrol // CHECK: edges // CHECK: // CHECK: // CHECK: start // CHECK: // CHECK: // CHECK: line209 // CHECK: col3 // CHECK: file0 // CHECK: // CHECK: // CHECK: line209 // CHECK: col25 // CHECK: file0 // CHECK: // CHECK: // CHECK: end // CHECK: // CHECK: // CHECK: line209 // CHECK: col27 // CHECK: file0 // CHECK: // CHECK: // CHECK: line209 // CHECK: col27 // CHECK: file0 // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: kindevent // CHECK: location // CHECK: // CHECK: line209 // CHECK: col27 // CHECK: file0 // CHECK: // CHECK: ranges // CHECK: // CHECK: // CHECK: // CHECK: line209 // CHECK: col27 // CHECK: file0 // CHECK: // CHECK: // CHECK: line209 // CHECK: col27 // CHECK: file0 // CHECK: // CHECK: // CHECK: // CHECK: depth0 // CHECK: extended_message // CHECK: Conversion from value of type 'MutableArray<NSString *> *' to incompatible type 'MutableArray<NSMutableString *> *' // CHECK: message // CHECK: Conversion from value of type 'MutableArray<NSString *> *' to incompatible type 'MutableArray<NSMutableString *> *' // CHECK: // CHECK: // CHECK: descriptionConversion from value of type 'MutableArray<NSString *> *' to incompatible type 'MutableArray<NSMutableString *> *' // CHECK: categoryCore Foundation/Objective-C // CHECK: typeGenerics // CHECK: check_namecore.DynamicTypePropagation // CHECK: issue_context_kindfunction // CHECK: issue_contextinferenceFromAPIWithBuggyTypes // CHECK: issue_hash2 // CHECK: location // CHECK: // CHECK: line209 // CHECK: col27 // CHECK: file0 // CHECK: // CHECK: // CHECK: // CHECK: path // CHECK: // CHECK: // CHECK: kindevent // CHECK: location // CHECK: // CHECK: line213 // CHECK: col27 // CHECK: file0 // CHECK: // CHECK: ranges // CHECK: // CHECK: // CHECK: // CHECK: line213 // CHECK: col27 // CHECK: file0 // CHECK: // CHECK: // CHECK: line213 // CHECK: col27 // CHECK: file0 // CHECK: // CHECK: // CHECK: // CHECK: depth0 // CHECK: extended_message // CHECK: Type 'MutableArray<NSMutableString *> *' is inferred from implicit cast (from 'BuggySpecialMutableArray<NSMutableString *> *' to 'MutableArray<NSMutableString *> *') // CHECK: message // CHECK: Type 'MutableArray<NSMutableString *> *' is inferred from implicit cast (from 'BuggySpecialMutableArray<NSMutableString *> *' to 'MutableArray<NSMutableString *> *') // CHECK: // CHECK: // CHECK: kindcontrol // CHECK: edges // CHECK: // CHECK: // CHECK: start // CHECK: // CHECK: // CHECK: line213 // CHECK: col3 // CHECK: file0 // CHECK: // CHECK: // CHECK: line213 // CHECK: col25 // CHECK: file0 // CHECK: // CHECK: // CHECK: end // CHECK: // CHECK: // CHECK: line214 // CHECK: col3 // CHECK: file0 // CHECK: // CHECK: // CHECK: line214 // CHECK: col18 // CHECK: file0 // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: kindcontrol // CHECK: edges // CHECK: // CHECK: // CHECK: start // CHECK: // CHECK: // CHECK: line214 // CHECK: col3 // CHECK: file0 // CHECK: // CHECK: // CHECK: line214 // CHECK: col18 // CHECK: file0 // CHECK: // CHECK: // CHECK: end // CHECK: // CHECK: // CHECK: line214 // CHECK: col20 // CHECK: file0 // CHECK: // CHECK: // CHECK: line214 // CHECK: col20 // CHECK: file0 // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: kindevent // CHECK: location // CHECK: // CHECK: line214 // CHECK: col20 // CHECK: file0 // CHECK: // CHECK: ranges // CHECK: // CHECK: // CHECK: // CHECK: line214 // CHECK: col20 // CHECK: file0 // CHECK: // CHECK: // CHECK: line214 // CHECK: col20 // CHECK: file0 // CHECK: // CHECK: // CHECK: // CHECK: depth0 // CHECK: extended_message // CHECK: Conversion from value of type 'MutableArray<NSMutableString *> *' to incompatible type 'MutableArray<NSString *> *' // CHECK: message // CHECK: Conversion from value of type 'MutableArray<NSMutableString *> *' to incompatible type 'MutableArray<NSString *> *' // CHECK: // CHECK: // CHECK: descriptionConversion from value of type 'MutableArray<NSMutableString *> *' to incompatible type 'MutableArray<NSString *> *' // CHECK: categoryCore Foundation/Objective-C // CHECK: typeGenerics // CHECK: check_namecore.DynamicTypePropagation // CHECK: issue_context_kindfunction // CHECK: issue_contextInferenceFromAPIWithBuggyTypes2 // CHECK: issue_hash2 // CHECK: location // CHECK: // CHECK: line214 // CHECK: col20 // CHECK: file0 // CHECK: // CHECK: // CHECK: // CHECK: path // CHECK: // CHECK: // CHECK: kindevent // CHECK: location // CHECK: // CHECK: line218 // CHECK: col10 // CHECK: file0 // CHECK: // CHECK: ranges // CHECK: // CHECK: // CHECK: // CHECK: line218 // CHECK: col10 // CHECK: file0 // CHECK: // CHECK: // CHECK: line218 // CHECK: col10 // CHECK: file0 // CHECK: // CHECK: // CHECK: // CHECK: depth0 // CHECK: extended_message // CHECK: Type 'MutableArray<NSMutableString *> *' is inferred from implicit cast (from 'MutableArray<NSMutableString *> *' to 'id') // CHECK: message // CHECK: Type 'MutableArray<NSMutableString *> *' is inferred from implicit cast (from 'MutableArray<NSMutableString *> *' to 'id') // CHECK: // CHECK: // CHECK: kindcontrol // CHECK: edges // CHECK: // CHECK: // CHECK: start // CHECK: // CHECK: // CHECK: line218 // CHECK: col3 // CHECK: file0 // CHECK: // CHECK: // CHECK: line218 // CHECK: col4 // CHECK: file0 // CHECK: // CHECK: // CHECK: end // CHECK: // CHECK: // CHECK: line220 // CHECK: col3 // CHECK: file0 // CHECK: // CHECK: // CHECK: line220 // CHECK: col18 // CHECK: file0 // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: kindcontrol // CHECK: edges // CHECK: // CHECK: // CHECK: start // CHECK: // CHECK: // CHECK: line220 // CHECK: col3 // CHECK: file0 // CHECK: // CHECK: // CHECK: line220 // CHECK: col18 // CHECK: file0 // CHECK: // CHECK: // CHECK: end // CHECK: // CHECK: // CHECK: line220 // CHECK: col20 // CHECK: file0 // CHECK: // CHECK: // CHECK: line220 // CHECK: col20 // CHECK: file0 // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: kindevent // CHECK: location // CHECK: // CHECK: line220 // CHECK: col20 // CHECK: file0 // CHECK: // CHECK: ranges // CHECK: // CHECK: // CHECK: // CHECK: line220 // CHECK: col20 // CHECK: file0 // CHECK: // CHECK: // CHECK: line220 // CHECK: col20 // CHECK: file0 // CHECK: // CHECK: // CHECK: // CHECK: depth0 // CHECK: extended_message // CHECK: Conversion from value of type 'MutableArray<NSMutableString *> *' to incompatible type 'MutableArray<NSString *> *' // CHECK: message // CHECK: Conversion from value of type 'MutableArray<NSMutableString *> *' to incompatible type 'MutableArray<NSString *> *' // CHECK: // CHECK: // CHECK: descriptionConversion from value of type 'MutableArray<NSMutableString *> *' to incompatible type 'MutableArray<NSString *> *' // CHECK: categoryCore Foundation/Objective-C // CHECK: typeGenerics // CHECK: check_namecore.DynamicTypePropagation // CHECK: issue_context_kindfunction // CHECK: issue_contextInferenceFromAPIWithBuggyTypes3 // CHECK: issue_hash3 // CHECK: location // CHECK: // CHECK: line220 // CHECK: col20 // CHECK: file0 // CHECK: // CHECK: // CHECK: // CHECK: path // CHECK: // CHECK: // CHECK: kindevent // CHECK: location // CHECK: // CHECK: line224 // CHECK: col45 // CHECK: file0 // CHECK: // CHECK: ranges // CHECK: // CHECK: // CHECK: // CHECK: line224 // CHECK: col45 // CHECK: file0 // CHECK: // CHECK: // CHECK: line224 // CHECK: col45 // CHECK: file0 // CHECK: // CHECK: // CHECK: // CHECK: depth0 // CHECK: extended_message // CHECK: Type 'NSArray<NSString *> *' is inferred from implicit cast (from '__kindof NSArray<NSString *> *' to 'BuggyMutableArray<NSMutableString *> *') // CHECK: message // CHECK: Type 'NSArray<NSString *> *' is inferred from implicit cast (from '__kindof NSArray<NSString *> *' to 'BuggyMutableArray<NSMutableString *> *') // CHECK: // CHECK: // CHECK: kindcontrol // CHECK: edges // CHECK: // CHECK: // CHECK: start // CHECK: // CHECK: // CHECK: line224 // CHECK: col3 // CHECK: file0 // CHECK: // CHECK: // CHECK: line224 // CHECK: col19 // CHECK: file0 // CHECK: // CHECK: // CHECK: end // CHECK: // CHECK: // CHECK: line225 // CHECK: col3 // CHECK: file0 // CHECK: // CHECK: // CHECK: line225 // CHECK: col18 // CHECK: file0 // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: kindevent // CHECK: location // CHECK: // CHECK: line225 // CHECK: col20 // CHECK: file0 // CHECK: // CHECK: ranges // CHECK: // CHECK: // CHECK: // CHECK: line225 // CHECK: col20 // CHECK: file0 // CHECK: // CHECK: // CHECK: line225 // CHECK: col20 // CHECK: file0 // CHECK: // CHECK: // CHECK: // CHECK: depth0 // CHECK: extended_message // CHECK: Type 'MutableArray<NSString *> *' is inferred from implicit cast (from 'BuggyMutableArray<NSMutableString *> *' to 'MutableArray<NSString *> *') // CHECK: message // CHECK: Type 'MutableArray<NSString *> *' is inferred from implicit cast (from 'BuggyMutableArray<NSMutableString *> *' to 'MutableArray<NSString *> *') // CHECK: // CHECK: // CHECK: kindcontrol // CHECK: edges // CHECK: // CHECK: // CHECK: start // CHECK: // CHECK: // CHECK: line225 // CHECK: col3 // CHECK: file0 // CHECK: // CHECK: // CHECK: line225 // CHECK: col18 // CHECK: file0 // CHECK: // CHECK: // CHECK: end // CHECK: // CHECK: // CHECK: line226 // CHECK: col3 // CHECK: file0 // CHECK: // CHECK: // CHECK: line226 // CHECK: col25 // CHECK: file0 // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: kindcontrol // CHECK: edges // CHECK: // CHECK: // CHECK: start // CHECK: // CHECK: // CHECK: line226 // CHECK: col3 // CHECK: file0 // CHECK: // CHECK: // CHECK: line226 // CHECK: col25 // CHECK: file0 // CHECK: // CHECK: // CHECK: end // CHECK: // CHECK: // CHECK: line226 // CHECK: col27 // CHECK: file0 // CHECK: // CHECK: // CHECK: line226 // CHECK: col27 // CHECK: file0 // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: kindevent // CHECK: location // CHECK: // CHECK: line226 // CHECK: col27 // CHECK: file0 // CHECK: // CHECK: ranges // CHECK: // CHECK: // CHECK: // CHECK: line226 // CHECK: col27 // CHECK: file0 // CHECK: // CHECK: // CHECK: line226 // CHECK: col27 // CHECK: file0 // CHECK: // CHECK: // CHECK: // CHECK: depth0 // CHECK: extended_message // CHECK: Conversion from value of type 'MutableArray<NSString *> *' to incompatible type 'MutableArray<NSMutableString *> *' // CHECK: message // CHECK: Conversion from value of type 'MutableArray<NSString *> *' to incompatible type 'MutableArray<NSMutableString *> *' // CHECK: // CHECK: // CHECK: descriptionConversion from value of type 'MutableArray<NSString *> *' to incompatible type 'MutableArray<NSMutableString *> *' // CHECK: categoryCore Foundation/Objective-C // CHECK: typeGenerics // CHECK: check_namecore.DynamicTypePropagation // CHECK: issue_context_kindfunction // CHECK: issue_contextInferenceFromAPIWithBuggyTypes4 // CHECK: issue_hash3 // CHECK: location // CHECK: // CHECK: line226 // CHECK: col27 // CHECK: file0 // CHECK: // CHECK: // CHECK: // CHECK: path // CHECK: // CHECK: // CHECK: kindcontrol // CHECK: edges // CHECK: // CHECK: // CHECK: start // CHECK: // CHECK: // CHECK: line238 // CHECK: col3 // CHECK: file0 // CHECK: // CHECK: // CHECK: line238 // CHECK: col9 // CHECK: file0 // CHECK: // CHECK: // CHECK: end // CHECK: // CHECK: // CHECK: line239 // CHECK: col3 // CHECK: file0 // CHECK: // CHECK: // CHECK: line239 // CHECK: col10 // CHECK: file0 // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: kindcontrol // CHECK: edges // CHECK: // CHECK: // CHECK: start // CHECK: // CHECK: // CHECK: line239 // CHECK: col3 // CHECK: file0 // CHECK: // CHECK: // CHECK: line239 // CHECK: col10 // CHECK: file0 // CHECK: // CHECK: // CHECK: end // CHECK: // CHECK: // CHECK: line239 // CHECK: col19 // CHECK: file0 // CHECK: // CHECK: // CHECK: line239 // CHECK: col19 // CHECK: file0 // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: kindevent // CHECK: location // CHECK: // CHECK: line239 // CHECK: col19 // CHECK: file0 // CHECK: // CHECK: ranges // CHECK: // CHECK: // CHECK: // CHECK: line239 // CHECK: col19 // CHECK: file0 // CHECK: // CHECK: // CHECK: line239 // CHECK: col38 // CHECK: file0 // CHECK: // CHECK: // CHECK: // CHECK: depth0 // CHECK: extended_message // CHECK: Type 'NSNumber *' is inferred from this context // CHECK: message // CHECK: Type 'NSNumber *' is inferred from this context // CHECK: // CHECK: // CHECK: kindevent // CHECK: location // CHECK: // CHECK: line239 // CHECK: col19 // CHECK: file0 // CHECK: // CHECK: ranges // CHECK: // CHECK: // CHECK: // CHECK: line239 // CHECK: col19 // CHECK: file0 // CHECK: // CHECK: // CHECK: line239 // CHECK: col38 // CHECK: file0 // CHECK: // CHECK: // CHECK: // CHECK: depth0 // CHECK: extended_message // CHECK: Object has a dynamic type 'NSNumber *' which is incompatible with static type 'NSString *' // CHECK: message // CHECK: Object has a dynamic type 'NSNumber *' which is incompatible with static type 'NSString *' // CHECK: // CHECK: // CHECK: descriptionObject has a dynamic type 'NSNumber *' which is incompatible with static type 'NSString *' // CHECK: categoryType Error // CHECK: typeDynamic and static type mismatch // CHECK: check_namealpha.core.DynamicTypeChecker // CHECK: issue_context_kindfunction // CHECK: issue_contextworkWithProperties // CHECK: issue_hash2 // CHECK: location // CHECK: // CHECK: line239 // CHECK: col19 // CHECK: file0 // CHECK: // CHECK: // CHECK: // CHECK: path // CHECK: // CHECK: // CHECK: kindcontrol // CHECK: edges // CHECK: // CHECK: // CHECK: start // CHECK: // CHECK: // CHECK: line238 // CHECK: col3 // CHECK: file0 // CHECK: // CHECK: // CHECK: line238 // CHECK: col9 // CHECK: file0 // CHECK: // CHECK: // CHECK: end // CHECK: // CHECK: // CHECK: line241 // CHECK: col3 // CHECK: file0 // CHECK: // CHECK: // CHECK: line241 // CHECK: col5 // CHECK: file0 // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: kindcontrol // CHECK: edges // CHECK: // CHECK: // CHECK: start // CHECK: // CHECK: // CHECK: line241 // CHECK: col3 // CHECK: file0 // CHECK: // CHECK: // CHECK: line241 // CHECK: col5 // CHECK: file0 // CHECK: // CHECK: // CHECK: end // CHECK: // CHECK: // CHECK: line241 // CHECK: col9 // CHECK: file0 // CHECK: // CHECK: // CHECK: line241 // CHECK: col9 // CHECK: file0 // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: kindevent // CHECK: location // CHECK: // CHECK: line241 // CHECK: col9 // CHECK: file0 // CHECK: // CHECK: ranges // CHECK: // CHECK: // CHECK: // CHECK: line241 // CHECK: col9 // CHECK: file0 // CHECK: // CHECK: // CHECK: line241 // CHECK: col23 // CHECK: file0 // CHECK: // CHECK: // CHECK: // CHECK: depth0 // CHECK: extended_message // CHECK: Type 'NSNumber *' is inferred from this context // CHECK: message // CHECK: Type 'NSNumber *' is inferred from this context // CHECK: // CHECK: // CHECK: kindevent // CHECK: location // CHECK: // CHECK: line241 // CHECK: col9 // CHECK: file0 // CHECK: // CHECK: ranges // CHECK: // CHECK: // CHECK: // CHECK: line241 // CHECK: col9 // CHECK: file0 // CHECK: // CHECK: // CHECK: line241 // CHECK: col23 // CHECK: file0 // CHECK: // CHECK: // CHECK: // CHECK: depth0 // CHECK: extended_message // CHECK: Object has a dynamic type 'NSNumber *' which is incompatible with static type 'NSString *' // CHECK: message // CHECK: Object has a dynamic type 'NSNumber *' which is incompatible with static type 'NSString *' // CHECK: // CHECK: // CHECK: descriptionObject has a dynamic type 'NSNumber *' which is incompatible with static type 'NSString *' // CHECK: categoryType Error // CHECK: typeDynamic and static type mismatch // CHECK: check_namealpha.core.DynamicTypeChecker // CHECK: issue_context_kindfunction // CHECK: issue_contextworkWithProperties // CHECK: issue_hash4 // CHECK: location // CHECK: // CHECK: line241 // CHECK: col9 // CHECK: file0 // CHECK: // CHECK: // CHECK: // CHECK: path // CHECK: // CHECK: // CHECK: kindcontrol // CHECK: edges // CHECK: // CHECK: // CHECK: start // CHECK: // CHECK: // CHECK: line238 // CHECK: col3 // CHECK: file0 // CHECK: // CHECK: // CHECK: line238 // CHECK: col9 // CHECK: file0 // CHECK: // CHECK: // CHECK: end // CHECK: // CHECK: // CHECK: line243 // CHECK: col3 // CHECK: file0 // CHECK: // CHECK: // CHECK: line243 // CHECK: col5 // CHECK: file0 // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: kindcontrol // CHECK: edges // CHECK: // CHECK: // CHECK: start // CHECK: // CHECK: // CHECK: line243 // CHECK: col3 // CHECK: file0 // CHECK: // CHECK: // CHECK: line243 // CHECK: col5 // CHECK: file0 // CHECK: // CHECK: // CHECK: end // CHECK: // CHECK: // CHECK: line243 // CHECK: col11 // CHECK: file0 // CHECK: // CHECK: // CHECK: line243 // CHECK: col21 // CHECK: file0 // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: kindevent // CHECK: location // CHECK: // CHECK: line243 // CHECK: col11 // CHECK: file0 // CHECK: // CHECK: ranges // CHECK: // CHECK: // CHECK: // CHECK: line243 // CHECK: col11 // CHECK: file0 // CHECK: // CHECK: // CHECK: line243 // CHECK: col21 // CHECK: file0 // CHECK: // CHECK: // CHECK: // CHECK: depth0 // CHECK: extended_message // CHECK: Type 'NSNumber *' is inferred from this context // CHECK: message // CHECK: Type 'NSNumber *' is inferred from this context // CHECK: // CHECK: // CHECK: kindevent // CHECK: location // CHECK: // CHECK: line243 // CHECK: col9 // CHECK: file0 // CHECK: // CHECK: ranges // CHECK: // CHECK: // CHECK: // CHECK: line243 // CHECK: col9 // CHECK: file0 // CHECK: // CHECK: // CHECK: line243 // CHECK: col21 // CHECK: file0 // CHECK: // CHECK: // CHECK: // CHECK: depth0 // CHECK: extended_message // CHECK: Object has a dynamic type 'NSNumber *' which is incompatible with static type 'NSString *' // CHECK: message // CHECK: Object has a dynamic type 'NSNumber *' which is incompatible with static type 'NSString *' // CHECK: // CHECK: // CHECK: descriptionObject has a dynamic type 'NSNumber *' which is incompatible with static type 'NSString *' // CHECK: categoryType Error // CHECK: typeDynamic and static type mismatch // CHECK: check_namealpha.core.DynamicTypeChecker // CHECK: issue_context_kindfunction // CHECK: issue_contextworkWithProperties // CHECK: issue_hash6 // CHECK: location // CHECK: // CHECK: line243 // CHECK: col9 // CHECK: file0 // CHECK: // CHECK: // CHECK: // CHECK: path // CHECK: // CHECK: // CHECK: kindcontrol // CHECK: edges // CHECK: // CHECK: // CHECK: start // CHECK: // CHECK: // CHECK: line238 // CHECK: col3 // CHECK: file0 // CHECK: // CHECK: // CHECK: line238 // CHECK: col9 // CHECK: file0 // CHECK: // CHECK: // CHECK: end // CHECK: // CHECK: // CHECK: line245 // CHECK: col3 // CHECK: file0 // CHECK: // CHECK: // CHECK: line245 // CHECK: col5 // CHECK: file0 // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: kindcontrol // CHECK: edges // CHECK: // CHECK: // CHECK: start // CHECK: // CHECK: // CHECK: line245 // CHECK: col3 // CHECK: file0 // CHECK: // CHECK: // CHECK: line245 // CHECK: col5 // CHECK: file0 // CHECK: // CHECK: // CHECK: end // CHECK: // CHECK: // CHECK: line245 // CHECK: col9 // CHECK: file0 // CHECK: // CHECK: // CHECK: line245 // CHECK: col9 // CHECK: file0 // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: kindevent // CHECK: location // CHECK: // CHECK: line245 // CHECK: col9 // CHECK: file0 // CHECK: // CHECK: ranges // CHECK: // CHECK: // CHECK: // CHECK: line245 // CHECK: col9 // CHECK: file0 // CHECK: // CHECK: // CHECK: line245 // CHECK: col9 // CHECK: file0 // CHECK: // CHECK: // CHECK: // CHECK: depth0 // CHECK: extended_message // CHECK: Type 'NSNumber *' is inferred from this context // CHECK: message // CHECK: Type 'NSNumber *' is inferred from this context // CHECK: // CHECK: // CHECK: kindevent // CHECK: location // CHECK: // CHECK: line245 // CHECK: col9 // CHECK: file0 // CHECK: // CHECK: ranges // CHECK: // CHECK: // CHECK: // CHECK: line245 // CHECK: col9 // CHECK: file0 // CHECK: // CHECK: // CHECK: line245 // CHECK: col12 // CHECK: file0 // CHECK: // CHECK: // CHECK: // CHECK: depth0 // CHECK: extended_message // CHECK: Object has a dynamic type 'NSNumber *' which is incompatible with static type 'NSString *' // CHECK: message // CHECK: Object has a dynamic type 'NSNumber *' which is incompatible with static type 'NSString *' // CHECK: // CHECK: // CHECK: descriptionObject has a dynamic type 'NSNumber *' which is incompatible with static type 'NSString *' // CHECK: categoryType Error // CHECK: typeDynamic and static type mismatch // CHECK: check_namealpha.core.DynamicTypeChecker // CHECK: issue_context_kindfunction // CHECK: issue_contextworkWithProperties // CHECK: issue_hash8 // CHECK: location // CHECK: // CHECK: line245 // CHECK: col9 // CHECK: file0 // CHECK: // CHECK: // CHECK: // CHECK: path // CHECK: // CHECK: // CHECK: kindevent // CHECK: location // CHECK: // CHECK: line251 // CHECK: col7 // CHECK: file0 // CHECK: // CHECK: ranges // CHECK: // CHECK: // CHECK: // CHECK: line251 // CHECK: col7 // CHECK: file0 // CHECK: // CHECK: // CHECK: line251 // CHECK: col7 // CHECK: file0 // CHECK: // CHECK: // CHECK: // CHECK: depth0 // CHECK: extended_message // CHECK: Type 'MutableArray<NSMutableString *> *' is inferred from implicit cast (from 'MutableArray<NSMutableString *> *' to 'NSArray<NSMutableString *> *') // CHECK: message // CHECK: Type 'MutableArray<NSMutableString *> *' is inferred from implicit cast (from 'MutableArray<NSMutableString *> *' to 'NSArray<NSMutableString *> *') // CHECK: // CHECK: // CHECK: kindcontrol // CHECK: edges // CHECK: // CHECK: // CHECK: start // CHECK: // CHECK: // CHECK: line251 // CHECK: col3 // CHECK: file0 // CHECK: // CHECK: // CHECK: line251 // CHECK: col3 // CHECK: file0 // CHECK: // CHECK: // CHECK: end // CHECK: // CHECK: // CHECK: line252 // CHECK: col3 // CHECK: file0 // CHECK: // CHECK: // CHECK: line252 // CHECK: col4 // CHECK: file0 // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: kindcontrol // CHECK: edges // CHECK: // CHECK: // CHECK: start // CHECK: // CHECK: // CHECK: line252 // CHECK: col3 // CHECK: file0 // CHECK: // CHECK: // CHECK: line252 // CHECK: col4 // CHECK: file0 // CHECK: // CHECK: // CHECK: end // CHECK: // CHECK: // CHECK: line253 // CHECK: col5 // CHECK: file0 // CHECK: // CHECK: // CHECK: line253 // CHECK: col5 // CHECK: file0 // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: kindcontrol // CHECK: edges // CHECK: // CHECK: // CHECK: start // CHECK: // CHECK: // CHECK: line253 // CHECK: col5 // CHECK: file0 // CHECK: // CHECK: // CHECK: line253 // CHECK: col5 // CHECK: file0 // CHECK: // CHECK: // CHECK: end // CHECK: // CHECK: // CHECK: line254 // CHECK: col5 // CHECK: file0 // CHECK: // CHECK: // CHECK: line254 // CHECK: col5 // CHECK: file0 // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: kindevent // CHECK: location // CHECK: // CHECK: line254 // CHECK: col5 // CHECK: file0 // CHECK: // CHECK: ranges // CHECK: // CHECK: // CHECK: // CHECK: line254 // CHECK: col19 // CHECK: file0 // CHECK: // CHECK: // CHECK: line254 // CHECK: col41 // CHECK: file0 // CHECK: // CHECK: // CHECK: // CHECK: depth0 // CHECK: extended_message // CHECK: Conversion from value of type 'NSString *' to incompatible type 'NSMutableString *' // CHECK: message // CHECK: Conversion from value of type 'NSString *' to incompatible type 'NSMutableString *' // CHECK: // CHECK: // CHECK: descriptionConversion from value of type 'NSString *' to incompatible type 'NSMutableString *' // CHECK: categoryCore Foundation/Objective-C // CHECK: typeGenerics // CHECK: check_namecore.DynamicTypePropagation // CHECK: issue_context_kindfunction // CHECK: issue_contextfindMethodDeclInTrackedType // CHECK: issue_hash4 // CHECK: location // CHECK: // CHECK: line254 // CHECK: col5 // CHECK: file0 // CHECK: // CHECK: // CHECK: // CHECK: path // CHECK: // CHECK: // CHECK: kindevent // CHECK: location // CHECK: // CHECK: line263 // CHECK: col7 // CHECK: file0 // CHECK: // CHECK: ranges // CHECK: // CHECK: // CHECK: // CHECK: line263 // CHECK: col7 // CHECK: file0 // CHECK: // CHECK: // CHECK: line263 // CHECK: col7 // CHECK: file0 // CHECK: // CHECK: // CHECK: // CHECK: depth0 // CHECK: extended_message // CHECK: Type 'MutableArray<NSMutableString *> *' is inferred from implicit cast (from 'MutableArray<NSMutableString *> *' to '__kindof NSArray<NSString *> *') // CHECK: message // CHECK: Type 'MutableArray<NSMutableString *> *' is inferred from implicit cast (from 'MutableArray<NSMutableString *> *' to '__kindof NSArray<NSString *> *') // CHECK: // CHECK: // CHECK: kindcontrol // CHECK: edges // CHECK: // CHECK: // CHECK: start // CHECK: // CHECK: // CHECK: line263 // CHECK: col3 // CHECK: file0 // CHECK: // CHECK: // CHECK: line263 // CHECK: col3 // CHECK: file0 // CHECK: // CHECK: // CHECK: end // CHECK: // CHECK: // CHECK: line264 // CHECK: col3 // CHECK: file0 // CHECK: // CHECK: // CHECK: line264 // CHECK: col4 // CHECK: file0 // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: kindcontrol // CHECK: edges // CHECK: // CHECK: // CHECK: start // CHECK: // CHECK: // CHECK: line264 // CHECK: col3 // CHECK: file0 // CHECK: // CHECK: // CHECK: line264 // CHECK: col4 // CHECK: file0 // CHECK: // CHECK: // CHECK: end // CHECK: // CHECK: // CHECK: line265 // CHECK: col5 // CHECK: file0 // CHECK: // CHECK: // CHECK: line265 // CHECK: col5 // CHECK: file0 // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: kindevent // CHECK: location // CHECK: // CHECK: line265 // CHECK: col5 // CHECK: file0 // CHECK: // CHECK: ranges // CHECK: // CHECK: // CHECK: // CHECK: line265 // CHECK: col19 // CHECK: file0 // CHECK: // CHECK: // CHECK: line265 // CHECK: col41 // CHECK: file0 // CHECK: // CHECK: // CHECK: // CHECK: depth0 // CHECK: extended_message // CHECK: Conversion from value of type 'NSString *' to incompatible type 'NSMutableString *' // CHECK: message // CHECK: Conversion from value of type 'NSString *' to incompatible type 'NSMutableString *' // CHECK: // CHECK: // CHECK: descriptionConversion from value of type 'NSString *' to incompatible type 'NSMutableString *' // CHECK: categoryCore Foundation/Objective-C // CHECK: typeGenerics // CHECK: check_namecore.DynamicTypePropagation // CHECK: issue_context_kindfunction // CHECK: issue_contextfindMethodDeclInTrackedType2 // CHECK: issue_hash3 // CHECK: location // CHECK: // CHECK: line265 // CHECK: col5 // CHECK: file0 // CHECK: // CHECK: // CHECK: // CHECK: path // CHECK: // CHECK: // CHECK: kindevent // CHECK: location // CHECK: // CHECK: line278 // CHECK: col30 // CHECK: file0 // CHECK: // CHECK: ranges // CHECK: // CHECK: // CHECK: // CHECK: line278 // CHECK: col30 // CHECK: file0 // CHECK: // CHECK: // CHECK: line278 // CHECK: col42 // CHECK: file0 // CHECK: // CHECK: // CHECK: // CHECK: depth0 // CHECK: extended_message // CHECK: Type 'NSArray<NSString *> *' is inferred from implicit cast (from 'NSArray *' to 'NSArray<NSString *> *') // CHECK: message // CHECK: Type 'NSArray<NSString *> *' is inferred from implicit cast (from 'NSArray *' to 'NSArray<NSString *> *') // CHECK: // CHECK: // CHECK: kindcontrol // CHECK: edges // CHECK: // CHECK: // CHECK: start // CHECK: // CHECK: // CHECK: line278 // CHECK: col3 // CHECK: file0 // CHECK: // CHECK: // CHECK: line278 // CHECK: col9 // CHECK: file0 // CHECK: // CHECK: // CHECK: end // CHECK: // CHECK: // CHECK: line280 // CHECK: col3 // CHECK: file0 // CHECK: // CHECK: // CHECK: line280 // CHECK: col3 // CHECK: file0 // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: kindevent // CHECK: location // CHECK: // CHECK: line280 // CHECK: col3 // CHECK: file0 // CHECK: // CHECK: ranges // CHECK: // CHECK: // CHECK: // CHECK: line280 // CHECK: col19 // CHECK: file0 // CHECK: // CHECK: // CHECK: line280 // CHECK: col41 // CHECK: file0 // CHECK: // CHECK: // CHECK: // CHECK: depth0 // CHECK: extended_message // CHECK: Conversion from value of type 'NSNumber *' to incompatible type 'NSString *' // CHECK: message // CHECK: Conversion from value of type 'NSNumber *' to incompatible type 'NSString *' // CHECK: // CHECK: // CHECK: descriptionConversion from value of type 'NSNumber *' to incompatible type 'NSString *' // CHECK: categoryCore Foundation/Objective-C // CHECK: typeGenerics // CHECK: check_namecore.DynamicTypePropagation // CHECK: issue_context_kindfunction // CHECK: issue_contexttestAnnotatedLiterals // CHECK: issue_hash3 // CHECK: location // CHECK: // CHECK: line280 // CHECK: col3 // CHECK: file0 // CHECK: // CHECK: // CHECK: // CHECK: path // CHECK: // CHECK: // CHECK: kindcontrol // CHECK: edges // CHECK: // CHECK: // CHECK: start // CHECK: // CHECK: // CHECK: line289 // CHECK: col3 // CHECK: file0 // CHECK: // CHECK: // CHECK: line289 // CHECK: col7 // CHECK: file0 // CHECK: // CHECK: // CHECK: end // CHECK: // CHECK: // CHECK: line290 // CHECK: col3 // CHECK: file0 // CHECK: // CHECK: // CHECK: line290 // CHECK: col9 // CHECK: file0 // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: kindcontrol // CHECK: edges // CHECK: // CHECK: // CHECK: start // CHECK: // CHECK: // CHECK: line290 // CHECK: col3 // CHECK: file0 // CHECK: // CHECK: // CHECK: line290 // CHECK: col9 // CHECK: file0 // CHECK: // CHECK: // CHECK: end // CHECK: // CHECK: // CHECK: line290 // CHECK: col28 // CHECK: file0 // CHECK: // CHECK: // CHECK: line290 // CHECK: col28 // CHECK: file0 // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: kindevent // CHECK: location // CHECK: // CHECK: line290 // CHECK: col28 // CHECK: file0 // CHECK: // CHECK: ranges // CHECK: // CHECK: // CHECK: // CHECK: line290 // CHECK: col28 // CHECK: file0 // CHECK: // CHECK: // CHECK: line290 // CHECK: col39 // CHECK: file0 // CHECK: // CHECK: // CHECK: // CHECK: depth0 // CHECK: extended_message // CHECK: Type 'NSArray<NSString *> *' is inferred from this context // CHECK: message // CHECK: Type 'NSArray<NSString *> *' is inferred from this context // CHECK: // CHECK: // CHECK: kindevent // CHECK: location // CHECK: // CHECK: line290 // CHECK: col28 // CHECK: file0 // CHECK: // CHECK: ranges // CHECK: // CHECK: // CHECK: // CHECK: line290 // CHECK: col28 // CHECK: file0 // CHECK: // CHECK: // CHECK: line290 // CHECK: col39 // CHECK: file0 // CHECK: // CHECK: // CHECK: // CHECK: depth0 // CHECK: extended_message // CHECK: Conversion from value of type 'NSArray<NSString *> *' to incompatible type 'NSArray<NSNumber *> *' // CHECK: message // CHECK: Conversion from value of type 'NSArray<NSString *> *' to incompatible type 'NSArray<NSNumber *> *' // CHECK: // CHECK: // CHECK: descriptionConversion from value of type 'NSArray<NSString *> *' to incompatible type 'NSArray<NSNumber *> *' // CHECK: categoryCore Foundation/Objective-C // CHECK: typeGenerics // CHECK: check_namecore.DynamicTypePropagation // CHECK: issue_context_kindfunction // CHECK: issue_contexttrackedClassVariables // CHECK: issue_hash2 // CHECK: location // CHECK: // CHECK: line290 // CHECK: col28 // CHECK: file0 // CHECK: // CHECK: // CHECK: // CHECK: path // CHECK: // CHECK: // CHECK: kindcontrol // CHECK: edges // CHECK: // CHECK: // CHECK: start // CHECK: // CHECK: // CHECK: line289 // CHECK: col3 // CHECK: file0 // CHECK: // CHECK: // CHECK: line289 // CHECK: col7 // CHECK: file0 // CHECK: // CHECK: // CHECK: end // CHECK: // CHECK: // CHECK: line291 // CHECK: col3 // CHECK: file0 // CHECK: // CHECK: // CHECK: line291 // CHECK: col3 // CHECK: file0 // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: kindcontrol // CHECK: edges // CHECK: // CHECK: // CHECK: start // CHECK: // CHECK: // CHECK: line291 // CHECK: col3 // CHECK: file0 // CHECK: // CHECK: // CHECK: line291 // CHECK: col3 // CHECK: file0 // CHECK: // CHECK: // CHECK: end // CHECK: // CHECK: // CHECK: line291 // CHECK: col7 // CHECK: file0 // CHECK: // CHECK: // CHECK: line291 // CHECK: col7 // CHECK: file0 // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: kindevent // CHECK: location // CHECK: // CHECK: line291 // CHECK: col7 // CHECK: file0 // CHECK: // CHECK: ranges // CHECK: // CHECK: // CHECK: // CHECK: line291 // CHECK: col7 // CHECK: file0 // CHECK: // CHECK: // CHECK: line291 // CHECK: col19 // CHECK: file0 // CHECK: // CHECK: // CHECK: // CHECK: depth0 // CHECK: extended_message // CHECK: Type 'NSArray<NSString *> *' is inferred from this context // CHECK: message // CHECK: Type 'NSArray<NSString *> *' is inferred from this context // CHECK: // CHECK: // CHECK: kindevent // CHECK: location // CHECK: // CHECK: line291 // CHECK: col7 // CHECK: file0 // CHECK: // CHECK: ranges // CHECK: // CHECK: // CHECK: // CHECK: line291 // CHECK: col7 // CHECK: file0 // CHECK: // CHECK: // CHECK: line291 // CHECK: col19 // CHECK: file0 // CHECK: // CHECK: // CHECK: // CHECK: depth0 // CHECK: extended_message // CHECK: Conversion from value of type 'NSArray<NSString *> *' to incompatible type 'NSArray<NSNumber *> *' // CHECK: message // CHECK: Conversion from value of type 'NSArray<NSString *> *' to incompatible type 'NSArray<NSNumber *> *' // CHECK: // CHECK: // CHECK: descriptionConversion from value of type 'NSArray<NSString *> *' to incompatible type 'NSArray<NSNumber *> *' // CHECK: categoryCore Foundation/Objective-C // CHECK: typeGenerics // CHECK: check_namecore.DynamicTypePropagation // CHECK: issue_context_kindfunction // CHECK: issue_contexttrackedClassVariables // CHECK: issue_hash3 // CHECK: location // CHECK: // CHECK: line291 // CHECK: col7 // CHECK: file0 // CHECK: // CHECK: // CHECK: // CHECK: path // CHECK: // CHECK: // CHECK: kindevent // CHECK: location // CHECK: // CHECK: line295 // CHECK: col13 // CHECK: file0 // CHECK: // CHECK: ranges // CHECK: // CHECK: // CHECK: // CHECK: line295 // CHECK: col13 // CHECK: file0 // CHECK: // CHECK: // CHECK: line295 // CHECK: col15 // CHECK: file0 // CHECK: // CHECK: // CHECK: // CHECK: depth0 // CHECK: extended_message // CHECK: Type 'NSArray<NSString *> *' is inferred from implicit cast (from 'NSArray<NSString *> *' to 'id') // CHECK: message // CHECK: Type 'NSArray<NSString *> *' is inferred from implicit cast (from 'NSArray<NSString *> *' to 'id') // CHECK: // CHECK: // CHECK: kindcontrol // CHECK: edges // CHECK: // CHECK: // CHECK: start // CHECK: // CHECK: // CHECK: line295 // CHECK: col3 // CHECK: file0 // CHECK: // CHECK: // CHECK: line295 // CHECK: col4 // CHECK: file0 // CHECK: // CHECK: // CHECK: end // CHECK: // CHECK: // CHECK: line296 // CHECK: col3 // CHECK: file0 // CHECK: // CHECK: // CHECK: line296 // CHECK: col3 // CHECK: file0 // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: kindcontrol // CHECK: edges // CHECK: // CHECK: // CHECK: start // CHECK: // CHECK: // CHECK: line296 // CHECK: col3 // CHECK: file0 // CHECK: // CHECK: // CHECK: line296 // CHECK: col3 // CHECK: file0 // CHECK: // CHECK: // CHECK: end // CHECK: // CHECK: // CHECK: line296 // CHECK: col18 // CHECK: file0 // CHECK: // CHECK: // CHECK: line296 // CHECK: col21 // CHECK: file0 // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: kindevent // CHECK: location // CHECK: // CHECK: line296 // CHECK: col18 // CHECK: file0 // CHECK: // CHECK: ranges // CHECK: // CHECK: // CHECK: // CHECK: line296 // CHECK: col18 // CHECK: file0 // CHECK: // CHECK: // CHECK: line296 // CHECK: col21 // CHECK: file0 // CHECK: // CHECK: // CHECK: // CHECK: depth0 // CHECK: extended_message // CHECK: Conversion from value of type 'NSArray<NSString *> *' to incompatible type 'NSArray<NSNumber *> *' // CHECK: message // CHECK: Conversion from value of type 'NSArray<NSString *> *' to incompatible type 'NSArray<NSNumber *> *' // CHECK: // CHECK: // CHECK: descriptionConversion from value of type 'NSArray<NSString *> *' to incompatible type 'NSArray<NSNumber *> *' // CHECK: categoryCore Foundation/Objective-C // CHECK: typeGenerics // CHECK: check_namecore.DynamicTypePropagation // CHECK: issue_context_kindfunction // CHECK: issue_contextnestedCollections // CHECK: issue_hash2 // CHECK: location // CHECK: // CHECK: line296 // CHECK: col18 // CHECK: file0 // CHECK: // CHECK: // CHECK: // CHECK: path // CHECK: // CHECK: // CHECK: kindcontrol // CHECK: edges // CHECK: // CHECK: // CHECK: start // CHECK: // CHECK: // CHECK: line308 // CHECK: col3 // CHECK: file0 // CHECK: // CHECK: // CHECK: line308 // CHECK: col9 // CHECK: file0 // CHECK: // CHECK: // CHECK: end // CHECK: // CHECK: // CHECK: line309 // CHECK: col3 // CHECK: file0 // CHECK: // CHECK: // CHECK: line309 // CHECK: col4 // CHECK: file0 // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: kindevent // CHECK: location // CHECK: // CHECK: line309 // CHECK: col10 // CHECK: file0 // CHECK: // CHECK: ranges // CHECK: // CHECK: // CHECK: // CHECK: line309 // CHECK: col10 // CHECK: file0 // CHECK: // CHECK: // CHECK: line309 // CHECK: col29 // CHECK: file0 // CHECK: // CHECK: // CHECK: // CHECK: depth0 // CHECK: extended_message // CHECK: Type 'NSArray<NSString *> *' is inferred from this context // CHECK: message // CHECK: Type 'NSArray<NSString *> *' is inferred from this context // CHECK: // CHECK: // CHECK: kindcontrol // CHECK: edges // CHECK: // CHECK: // CHECK: start // CHECK: // CHECK: // CHECK: line309 // CHECK: col3 // CHECK: file0 // CHECK: // CHECK: // CHECK: line309 // CHECK: col4 // CHECK: file0 // CHECK: // CHECK: // CHECK: end // CHECK: // CHECK: // CHECK: line310 // CHECK: col3 // CHECK: file0 // CHECK: // CHECK: // CHECK: line310 // CHECK: col9 // CHECK: file0 // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: kindcontrol // CHECK: edges // CHECK: // CHECK: // CHECK: start // CHECK: // CHECK: // CHECK: line310 // CHECK: col3 // CHECK: file0 // CHECK: // CHECK: // CHECK: line310 // CHECK: col9 // CHECK: file0 // CHECK: // CHECK: // CHECK: end // CHECK: // CHECK: // CHECK: line310 // CHECK: col30 // CHECK: file0 // CHECK: // CHECK: // CHECK: line310 // CHECK: col30 // CHECK: file0 // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: kindevent // CHECK: location // CHECK: // CHECK: line310 // CHECK: col30 // CHECK: file0 // CHECK: // CHECK: ranges // CHECK: // CHECK: // CHECK: // CHECK: line310 // CHECK: col30 // CHECK: file0 // CHECK: // CHECK: // CHECK: line310 // CHECK: col30 // CHECK: file0 // CHECK: // CHECK: // CHECK: // CHECK: depth0 // CHECK: extended_message // CHECK: Conversion from value of type 'NSArray<NSString *> *' to incompatible type 'NSArray<NSNumber *> *' // CHECK: message // CHECK: Conversion from value of type 'NSArray<NSString *> *' to incompatible type 'NSArray<NSNumber *> *' // CHECK: // CHECK: // CHECK: descriptionConversion from value of type 'NSArray<NSString *> *' to incompatible type 'NSArray<NSNumber *> *' // CHECK: categoryCore Foundation/Objective-C // CHECK: typeGenerics // CHECK: check_namecore.DynamicTypePropagation // CHECK: issue_context_kindfunction // CHECK: issue_contextreturnCollectionToIdVariable // CHECK: issue_hash3 // CHECK: location // CHECK: // CHECK: line310 // CHECK: col30 // CHECK: file0 // CHECK: // CHECK: // CHECK: // CHECK: path // CHECK: // CHECK: // CHECK: kindcontrol // CHECK: edges // CHECK: // CHECK: // CHECK: start // CHECK: // CHECK: // CHECK: line314 // CHECK: col3 // CHECK: file0 // CHECK: // CHECK: // CHECK: line314 // CHECK: col9 // CHECK: file0 // CHECK: // CHECK: // CHECK: end // CHECK: // CHECK: // CHECK: line315 // CHECK: col3 // CHECK: file0 // CHECK: // CHECK: // CHECK: line315 // CHECK: col9 // CHECK: file0 // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: kindevent // CHECK: location // CHECK: // CHECK: line315 // CHECK: col16 // CHECK: file0 // CHECK: // CHECK: ranges // CHECK: // CHECK: // CHECK: // CHECK: line315 // CHECK: col16 // CHECK: file0 // CHECK: // CHECK: // CHECK: line315 // CHECK: col35 // CHECK: file0 // CHECK: // CHECK: // CHECK: // CHECK: depth0 // CHECK: extended_message // CHECK: Type 'NSArray<NSString *> *' is inferred from this context // CHECK: message // CHECK: Type 'NSArray<NSString *> *' is inferred from this context // CHECK: // CHECK: // CHECK: kindcontrol // CHECK: edges // CHECK: // CHECK: // CHECK: start // CHECK: // CHECK: // CHECK: line315 // CHECK: col3 // CHECK: file0 // CHECK: // CHECK: // CHECK: line315 // CHECK: col9 // CHECK: file0 // CHECK: // CHECK: // CHECK: end // CHECK: // CHECK: // CHECK: line316 // CHECK: col3 // CHECK: file0 // CHECK: // CHECK: // CHECK: line316 // CHECK: col9 // CHECK: file0 // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: kindcontrol // CHECK: edges // CHECK: // CHECK: // CHECK: start // CHECK: // CHECK: // CHECK: line316 // CHECK: col3 // CHECK: file0 // CHECK: // CHECK: // CHECK: line316 // CHECK: col9 // CHECK: file0 // CHECK: // CHECK: // CHECK: end // CHECK: // CHECK: // CHECK: line316 // CHECK: col30 // CHECK: file0 // CHECK: // CHECK: // CHECK: line316 // CHECK: col30 // CHECK: file0 // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: kindevent // CHECK: location // CHECK: // CHECK: line316 // CHECK: col30 // CHECK: file0 // CHECK: // CHECK: ranges // CHECK: // CHECK: // CHECK: // CHECK: line316 // CHECK: col30 // CHECK: file0 // CHECK: // CHECK: // CHECK: line316 // CHECK: col30 // CHECK: file0 // CHECK: // CHECK: // CHECK: // CHECK: depth0 // CHECK: extended_message // CHECK: Conversion from value of type 'NSArray<NSString *> *' to incompatible type 'NSArray<NSNumber *> *' // CHECK: message // CHECK: Conversion from value of type 'NSArray<NSString *> *' to incompatible type 'NSArray<NSNumber *> *' // CHECK: // CHECK: // CHECK: descriptionConversion from value of type 'NSArray<NSString *> *' to incompatible type 'NSArray<NSNumber *> *' // CHECK: categoryCore Foundation/Objective-C // CHECK: typeGenerics // CHECK: check_namecore.DynamicTypePropagation // CHECK: issue_context_kindfunction // CHECK: issue_contexteraseSpecialization // CHECK: issue_hash3 // CHECK: location // CHECK: // CHECK: line316 // CHECK: col30 // CHECK: file0 // CHECK: // CHECK: // CHECK: // CHECK: path // CHECK: // CHECK: // CHECK: kindcontrol // CHECK: edges // CHECK: // CHECK: // CHECK: start // CHECK: // CHECK: // CHECK: line320 // CHECK: col3 // CHECK: file0 // CHECK: // CHECK: // CHECK: line320 // CHECK: col9 // CHECK: file0 // CHECK: // CHECK: // CHECK: end // CHECK: // CHECK: // CHECK: line321 // CHECK: col3 // CHECK: file0 // CHECK: // CHECK: // CHECK: line321 // CHECK: col7 // CHECK: file0 // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: kindcontrol // CHECK: edges // CHECK: // CHECK: // CHECK: start // CHECK: // CHECK: // CHECK: line321 // CHECK: col3 // CHECK: file0 // CHECK: // CHECK: // CHECK: line321 // CHECK: col7 // CHECK: file0 // CHECK: // CHECK: // CHECK: end // CHECK: // CHECK: // CHECK: line321 // CHECK: col14 // CHECK: file0 // CHECK: // CHECK: // CHECK: line321 // CHECK: col14 // CHECK: file0 // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: kindevent // CHECK: location // CHECK: // CHECK: line321 // CHECK: col14 // CHECK: file0 // CHECK: // CHECK: ranges // CHECK: // CHECK: // CHECK: // CHECK: line321 // CHECK: col14 // CHECK: file0 // CHECK: // CHECK: // CHECK: line321 // CHECK: col33 // CHECK: file0 // CHECK: // CHECK: // CHECK: // CHECK: depth0 // CHECK: extended_message // CHECK: Type 'NSArray<NSString *> *' is inferred from this context // CHECK: message // CHECK: Type 'NSArray<NSString *> *' is inferred from this context // CHECK: // CHECK: // CHECK: kindevent // CHECK: location // CHECK: // CHECK: line321 // CHECK: col14 // CHECK: file0 // CHECK: // CHECK: ranges // CHECK: // CHECK: // CHECK: // CHECK: line321 // CHECK: col14 // CHECK: file0 // CHECK: // CHECK: // CHECK: line321 // CHECK: col33 // CHECK: file0 // CHECK: // CHECK: // CHECK: // CHECK: depth0 // CHECK: extended_message // CHECK: Object has a dynamic type 'NSArray<NSString *> *' which is incompatible with static type 'NSSet *' // CHECK: message // CHECK: Object has a dynamic type 'NSArray<NSString *> *' which is incompatible with static type 'NSSet *' // CHECK: // CHECK: // CHECK: descriptionObject has a dynamic type 'NSArray<NSString *> *' which is incompatible with static type 'NSSet *' // CHECK: categoryType Error // CHECK: typeDynamic and static type mismatch // CHECK: check_namealpha.core.DynamicTypeChecker // CHECK: issue_context_kindfunction // CHECK: issue_contextreturnToUnrelatedType // CHECK: issue_hash2 // CHECK: location // CHECK: // CHECK: line321 // CHECK: col14 // CHECK: file0 // CHECK: // CHECK: // CHECK: // CHECK: path // CHECK: // CHECK: // CHECK: kindcontrol // CHECK: edges // CHECK: // CHECK: // CHECK: start // CHECK: // CHECK: // CHECK: line326 // CHECK: col3 // CHECK: file0 // CHECK: // CHECK: // CHECK: line326 // CHECK: col9 // CHECK: file0 // CHECK: // CHECK: // CHECK: end // CHECK: // CHECK: // CHECK: line327 // CHECK: col3 // CHECK: file0 // CHECK: // CHECK: // CHECK: line327 // CHECK: col4 // CHECK: file0 // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: kindevent // CHECK: location // CHECK: // CHECK: line327 // CHECK: col10 // CHECK: file0 // CHECK: // CHECK: ranges // CHECK: // CHECK: // CHECK: // CHECK: line327 // CHECK: col10 // CHECK: file0 // CHECK: // CHECK: // CHECK: line327 // CHECK: col29 // CHECK: file0 // CHECK: // CHECK: // CHECK: // CHECK: depth0 // CHECK: extended_message // CHECK: Type 'NSString *' is inferred from this context // CHECK: message // CHECK: Type 'NSString *' is inferred from this context // CHECK: // CHECK: // CHECK: kindcontrol // CHECK: edges // CHECK: // CHECK: // CHECK: start // CHECK: // CHECK: // CHECK: line327 // CHECK: col3 // CHECK: file0 // CHECK: // CHECK: // CHECK: line327 // CHECK: col4 // CHECK: file0 // CHECK: // CHECK: // CHECK: end // CHECK: // CHECK: // CHECK: line328 // CHECK: col3 // CHECK: file0 // CHECK: // CHECK: // CHECK: line328 // CHECK: col10 // CHECK: file0 // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: kindcontrol // CHECK: edges // CHECK: // CHECK: // CHECK: start // CHECK: // CHECK: // CHECK: line328 // CHECK: col3 // CHECK: file0 // CHECK: // CHECK: // CHECK: line328 // CHECK: col10 // CHECK: file0 // CHECK: // CHECK: // CHECK: end // CHECK: // CHECK: // CHECK: line328 // CHECK: col19 // CHECK: file0 // CHECK: // CHECK: // CHECK: line328 // CHECK: col19 // CHECK: file0 // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: kindevent // CHECK: location // CHECK: // CHECK: line328 // CHECK: col19 // CHECK: file0 // CHECK: // CHECK: ranges // CHECK: // CHECK: // CHECK: // CHECK: line328 // CHECK: col19 // CHECK: file0 // CHECK: // CHECK: // CHECK: line328 // CHECK: col19 // CHECK: file0 // CHECK: // CHECK: // CHECK: // CHECK: depth0 // CHECK: extended_message // CHECK: Object has a dynamic type 'NSString *' which is incompatible with static type 'NSNumber *' // CHECK: message // CHECK: Object has a dynamic type 'NSString *' which is incompatible with static type 'NSNumber *' // CHECK: // CHECK: // CHECK: descriptionObject has a dynamic type 'NSString *' which is incompatible with static type 'NSNumber *' // CHECK: categoryType Error // CHECK: typeDynamic and static type mismatch // CHECK: check_namealpha.core.DynamicTypeChecker // CHECK: issue_context_kindfunction // CHECK: issue_contextreturnToIdVariable // CHECK: issue_hash3 // CHECK: location // CHECK: // CHECK: line328 // CHECK: col19 // CHECK: file0 // CHECK: // CHECK: // CHECK: