1/* Test looking up fields in superclasses in the context of write-barriers
2   (where component references get rewritten).  */
3/* Contributed by Ziemowit Laski <zlaski@apple.com>  */
4
5/* { dg-do compile } */
6/* { dg-skip-if "GC API is an error from Darwin16." { *-*-darwin1[6-8]* } { "-fnext-runtime" } { "" } } */
7/* { dg-options "-fobjc-gc" } */
8/* { dg-prune-output "cc1objplus: warning: '-fobjc-gc' is ignored for '-fgnu-runtime'" } */
9
10#include "../objc-obj-c++-shared/TestsuiteObject.h"
11#include "../objc-obj-c++-shared/runtime.h"
12
13@class MyWindow;
14
15@interface MyDocument : TestsuiteObject {
16    MyWindow *_window;
17}
18@end
19
20@interface MyFileDocument : MyDocument {
21     struct {
22        unsigned int autoClose:1;
23        unsigned int openForUI:1;
24        unsigned int isClosing:1;
25        unsigned int needsDiskCheck:1;
26        unsigned int isWritable:1;
27        unsigned int representsFileOnDisk:1;
28        unsigned int RESERVED:26;
29    } _fdFlags;
30}
31@end
32
33@interface MyTextFileDocument : MyFileDocument {
34    TestsuiteObject *_textStorage;
35    struct __tfdFlags {
36        unsigned int immutable:1;
37        unsigned int lineEnding:2;
38        unsigned int isClosing:1;
39        unsigned int settingsAreSet:1;
40        unsigned int usesTabs:1;
41        unsigned int isUTF8WithBOM:1;
42        unsigned int wrapsLines:1;
43        unsigned int usingDefaultLanguage:1;
44        unsigned int RESERVED:23;
45    } _tfdFlags;
46    int _tabWidth;
47    int _indentWidth;
48}
49@end
50
51@interface MyRTFFileDocument : MyTextFileDocument
52- (BOOL)readFromFile:(const char *)fileName ofType:(const char *)type;
53@end
54
55@implementation MyRTFFileDocument
56- (BOOL)readFromFile:(const char *)fileName ofType:(const char *)type {
57        if (_textStorage && fileName) {
58            [_textStorage free];
59	    return YES;
60        } else if (type) {
61            _textStorage = [MyRTFFileDocument new];
62	    return NO;
63        }
64   return (fileName && type);
65}
66@end
67