1// RUN: %clang_cc1 -fsyntax-only -verify -Wno-objc-root-class %s 2// rdar://12095239 3 4class CppAbstractBase { 5public: 6 virtual void testA() = 0; 7 virtual void testB() = 0; // expected-note {{unimplemented pure virtual method 'testB' in 'CppConcreteSub}} 8 int a; 9}; 10 11class CppConcreteSub : public CppAbstractBase { 12 virtual void testA() { } 13}; 14 15@interface Objc { 16 CppConcreteSub _concrete; // expected-error{{instance variable type 'CppConcreteSub' is an abstract class}} 17} 18- (CppAbstractBase*)abstract; 19@end 20@implementation Objc 21- (CppAbstractBase*)abstract { 22 return &_concrete; 23} 24@end 25 26class Cpp { 27public: 28 CppConcreteSub sub; // expected-error {{field type 'CppConcreteSub' is an abstract class}} 29}; 30