diff options
| author | Dimitry Andric <dim@FreeBSD.org> | 2014-11-24 09:15:30 +0000 |
|---|---|---|
| committer | Dimitry Andric <dim@FreeBSD.org> | 2014-11-24 09:15:30 +0000 |
| commit | 9f4dbff6669c8037f3b036bcf580d14f1a4f12a5 (patch) | |
| tree | 47df2c12b57214af6c31e47404b005675b8b7ffc /test/CodeCompletion | |
| parent | f73d5f23a889b93d89ddef61ac0995df40286bb8 (diff) | |
Notes
Diffstat (limited to 'test/CodeCompletion')
| -rw-r--r-- | test/CodeCompletion/objc-message.mm | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/test/CodeCompletion/objc-message.mm b/test/CodeCompletion/objc-message.mm new file mode 100644 index 000000000000..352a18e0da97 --- /dev/null +++ b/test/CodeCompletion/objc-message.mm @@ -0,0 +1,46 @@ +// Note: the run lines follow their respective tests, since line/column +// matter in this test. + +@protocol FooTestProtocol ++ protocolClassMethod; +- protocolInstanceMethod; +@end +@interface Foo <FooTestProtocol> { + void *isa; +} ++ (int)classMethod1:a withKeyword:b; ++ (void)classMethod2; ++ new; +- instanceMethod1; +@end + +@interface Foo (FooTestCategory) ++ categoryClassMethod; +- categoryInstanceMethod; +@end + +template<typename T> struct RetainPtr { + template <typename U> struct RemovePointer { typedef U Type; }; + template <typename U> struct RemovePointer<U*> { typedef U Type; }; + + typedef typename RemovePointer<T>::Type* PtrType; + + explicit operator PtrType() const; +}; + +void func(const RetainPtr<Foo>& ptr) +{ + [ptr instanceMethod1]; +} + +void func(const RetainPtr<id <FooTestProtocol>>& ptr) +{ + [ptr instanceMethod1]; +} + +// RUN: %clang_cc1 -fsyntax-only -std=c++11 -code-completion-at=%s:33:7 %s -o - | FileCheck -check-prefix=CHECK-CC1 %s +// CHECK-CC1: categoryInstanceMethod : [#id#]categoryInstanceMethod +// CHECK-CC1: instanceMethod1 : [#id#]instanceMethod1 +// CHECK-CC1: protocolInstanceMethod : [#id#]protocolInstanceMethod +// RUN: %clang_cc1 -fsyntax-only -std=c++11 -code-completion-at=%s:38:7 %s -o - | FileCheck -check-prefix=CHECK-CC2 %s +// CHECK-CC2: protocolInstanceMethod : [#id#]protocolInstanceMethod |
