diff options
Diffstat (limited to 'test/SemaObjCXX/contextual-convert-to-id.mm')
-rw-r--r-- | test/SemaObjCXX/contextual-convert-to-id.mm | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/test/SemaObjCXX/contextual-convert-to-id.mm b/test/SemaObjCXX/contextual-convert-to-id.mm new file mode 100644 index 0000000..602d6c2 --- /dev/null +++ b/test/SemaObjCXX/contextual-convert-to-id.mm @@ -0,0 +1,33 @@ +// RUN: %clang_cc1 -std=c++11 -fsyntax-only %s -verify + +@interface A +- knownMethod; +@end + +@interface B +- unknownMethod; +@end + +template<typename T> struct RetainPtr { + explicit operator T*() const; +}; + +void methodCallToSpecific(RetainPtr<A> a) { + [a knownMethod]; + [a unknownMethod]; // expected-warning{{'A' may not respond to 'unknownMethod'}} +} + +struct Incomplete; // expected-note{{forward declaration}} + +void methodCallToIncomplete(Incomplete &incomplete) { + [incomplete knownMethod]; // expected-error{{incomplete receiver type 'Incomplete'}} +} + +struct IdPtr { + explicit operator id() const; +}; + +void methodCallToId(IdPtr a) { + [a knownMethod]; + [a unknownMethod]; +} |