brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.8 KiB · 61bfd76 Raw
74 lines · plain
1// RUN: %clang_cc1 -x objective-c++ -triple x86_64-apple-darwin10 -fsyntax-only -verify -Wno-objc-root-class %s2 3class TCPPObject4{5public:6	TCPPObject(const TCPPObject& inObj);7	TCPPObject();8	~TCPPObject();9	10	TCPPObject& operator=(const TCPPObject& inObj)const ; // expected-note {{'operator=' declared here}}11 12	void* Data();13	14private:15	void* fData;16};17 18 19typedef const TCPPObject& CREF_TCPPObject;20 21@interface TNSObject22@property (assign, readwrite, nonatomic) CREF_TCPPObject cppObjectNonAtomic;23@property (assign, readwrite) CREF_TCPPObject cppObjectAtomic;24@property (assign, readwrite, nonatomic) const TCPPObject& cppObjectDynamic;25@end26 27 28@implementation TNSObject29 30@synthesize cppObjectNonAtomic;31@synthesize cppObjectAtomic; // expected-error{{atomic property of reference type 'CREF_TCPPObject' (aka 'const TCPPObject &') cannot have non-trivial assignment operator}}32@dynamic cppObjectDynamic;33 34- (const TCPPObject&) cppObjectNonAtomic35{36	return cppObjectNonAtomic;37}38 39- (void) setCppObjectNonAtomic: (const TCPPObject&)cppObject40{41	cppObjectNonAtomic = cppObject;42}43@end44 45 46@interface NSObject47+ alloc;48- init;49- class;50@end51 52template<typename T> void f() {53  NSObject *o = [NSObject.alloc init];54  [o class];55}56 57template void f<int>();58 59// Make sure that the default-argument checker looks through60// pseudo-object expressions correctly.  The default argument61// needs to force l2r to test this effectively because the checker62// is syntactic and runs before placeholders are handled.63@interface Test1360283264- (int) x;65@end66namespace test13602832 {67  template <int N> void foo(Test13602832 *a, int limit = a.x + N) {} // expected-error {{default argument references parameter 'a'}}68 69  void test(Test13602832 *a) {70    // FIXME: this is a useless cascade error.71    foo<1024>(a); // expected-error {{no matching function}}72  }73}74