hanchenye-llvm-project/clang/test/SemaObjC/id-isa-ref.m

35 lines
1.1 KiB
Objective-C
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

// RUN: clang-cc -fsyntax-only -verify %s
typedef struct objc_object {
struct objc_class *isa;
} *id;
@interface NSObject {
struct objc_class *isa;
}
@end
@interface Whatever : NSObject
+self;
@end
static void func() {
id x;
[(*x).isa self];
[x->isa self];
Whatever *y;
// GCC allows this, with the following warning:
// instance variable isa is @protected; this will be a hard error in the future
//
// FIXME: see if we can avoid the 2 warnings that follow the error.
[(*y).isa self]; // expected-error {{instance variable 'isa' is protected}} \
expected-warning{{receiver type 'struct objc_class *' is not 'id' or interface pointer, consider casting it to 'id'}} \
expected-warning{{method '-self' not found (return type defaults to 'id')}}
[y->isa self]; // expected-error {{instance variable 'isa' is protected}} \
expected-warning{{receiver type 'struct objc_class *' is not 'id' or interface pointer, consider casting it to 'id'}} \
expected-warning{{method '-self' not found (return type defaults to 'id')}}
}