diff options
author | Fariborz Jahanian <fjahanian@apple.com> | 2012-08-16 22:38:41 +0000 |
---|---|---|
committer | Fariborz Jahanian <fjahanian@apple.com> | 2012-08-16 22:38:41 +0000 |
commit | 7f90b531818ad772f6e407f88101dc618c738fa4 (patch) | |
tree | cebafeeaaa0a2a0d42c01a7f9fbc8f5e9b6d1749 /test/SemaObjCXX/abstract-class-type-ivar.mm | |
parent | eeff8ce11d687429d545cb6ce9bdaa44319ca72f (diff) | |
download | clang-7f90b531818ad772f6e407f88101dc618c738fa4.tar.gz clang-7f90b531818ad772f6e407f88101dc618c738fa4.tar.bz2 clang-7f90b531818ad772f6e407f88101dc618c738fa4.tar.xz |
objective-C++: issue diagnostic when ivar type is
an abstract c++ class. // rdar://12095239
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@162052 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'test/SemaObjCXX/abstract-class-type-ivar.mm')
-rw-r--r-- | test/SemaObjCXX/abstract-class-type-ivar.mm | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/test/SemaObjCXX/abstract-class-type-ivar.mm b/test/SemaObjCXX/abstract-class-type-ivar.mm new file mode 100644 index 0000000000..823e9c197d --- /dev/null +++ b/test/SemaObjCXX/abstract-class-type-ivar.mm @@ -0,0 +1,29 @@ +// RUN: %clang_cc1 -fsyntax-only -verify -Wno-objc-root-class %s +// rdar://12095239 + +class CppAbstractBase { +public: + virtual void testA() = 0; + virtual void testB() = 0; // expected-note {{unimplemented pure virtual method 'testB' in 'CppConcreteSub}} + int a; +}; + +class CppConcreteSub : public CppAbstractBase { + virtual void testA() { } +}; + +@interface Objc { + CppConcreteSub _concrete; // expected-error{{ivar type 'CppConcreteSub' is an abstract class}} +} +- (CppAbstractBase*)abstract; +@end +@implementation Objc +- (CppAbstractBase*)abstract { + return &_concrete; +} +@end + +class Cpp { +public: + CppConcreteSub sub; // expected-error {{field type 'CppConcreteSub' is an abstract class}} +}; |