llvm-project/clang/test/SemaObjC/objc-container-subscripting-1.m
Alex Lorenz 4b9f80cc03 [ObjC] Check that a subscript methods is declared for a qualified id type
Objective-C subscript expressions report errors when a subscript method is not
declared in the base class. However, prior to this commit, qualified id types
were not checked. This commit ensures that an appropriate error is reported
when a subscript method is not declared in any of the protocols that are
included in the qualified id type.

rdar://33213924

llvm-svn: 307642
2017-07-11 10:18:35 +00:00

23 lines
701 B
Objective-C

// RUN: %clang_cc1 -fsyntax-only -verify %s
typedef unsigned int size_t;
@protocol P @end
@interface NSMutableArray
@end
@interface XNSMutableArray
@end
int main() {
id array;
id oldObject = array[10]; // expected-warning {{instance method '-objectAtIndexedSubscript:' not found (return type defaults to 'id')}}
array[10] = 0; // expected-warning {{instance method '-setObject:atIndexedSubscript:' not found (return type defaults to 'id')}}
id<P> p_array;
oldObject = p_array[10]; // expected-error {{expected method to read array element not found on object of type 'id<P>'}}
p_array[10] = 0; // expected-error {{expected method to write array element not found on object of type 'id<P>'}}
}