1// RUN: %clang_cc1 -x objective-c++ -Wno-return-type -fms-extensions -rewrite-objc -fobjc-runtime=macosx-fragile-10.5 %s -o %t-rw.cpp
2// RUN: %clang_cc1 -fsyntax-only -std=gnu++98 -Wno-address-of-temporary -D_Bool=bool -D"id=void*" -D"SEL=void*" -D"__declspec(X)=" %t-rw.cpp
3// RUN: %clang_cc1 -x objective-c++ -Wno-return-type -fms-extensions -rewrite-objc %s -o %t-modern-rw.cpp
4// RUN: %clang_cc1 -fsyntax-only -std=gnu++98 -Wno-address-of-temporary -D_Bool=bool -D"id=void*" -D"SEL=void*" -D"__declspec(X)=" %t-modern-rw.cpp
5// radar 8143056
6
7typedef struct objc_class *Class;
8typedef unsigned NSPointerFunctionsOptions;
9extern "C" id NSClassFromObject(id object);
10void *sel_registerName(const char *);
11
12struct NSSlice {
13  int i1;
14};
15
16@interface NSConcretePointerFunctions {
17  @public
18    struct NSSlice slice;
19}
20- (bool)initializeSlice:(struct NSSlice *)slicep withOptions:(NSPointerFunctionsOptions)options;
21@end
22
23@implementation NSConcretePointerFunctions
24- (id)initWithOptions:(NSPointerFunctionsOptions)options {
25      if (![NSClassFromObject(self) initializeSlice:&slice withOptions:options])
26        return 0;
27      return self;
28  }
29- (bool)initializeSlice:(struct NSSlice *)slicep withOptions:(NSPointerFunctionsOptions)options {
30    return 0;
31  }
32@end
33
34@interface I1 @end
35
36@implementation I1
37+ (struct s1 *) f0 {
38  return 0;
39}
40@end
41