• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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