forked from OSchip/llvm-project
90 lines
2.4 KiB
Plaintext
90 lines
2.4 KiB
Plaintext
// RUN: %clang_cc1 %s -verify -fsyntax-only -Wno-objc-root-class
|
|
|
|
class ClassA {};
|
|
|
|
class ClassB {
|
|
public:
|
|
ClassB(ClassA* parent=0);
|
|
~ClassB();
|
|
};
|
|
|
|
@interface NSObject
|
|
@end
|
|
|
|
@interface InterfaceA : NSObject
|
|
@property(nonatomic, assign) ClassA *m_prop1; // expected-note {{here}}
|
|
@property(nonatomic, assign) ClassB *m_prop2;
|
|
@end
|
|
|
|
@implementation InterfaceA
|
|
- (id)test {
|
|
self.m_prop2 = new ClassB(m_prop1); // expected-error {{use of undeclared identifier 'm_prop1'; did you mean '_m_prop1'?}}
|
|
}
|
|
@end
|
|
|
|
// rdar://30310772
|
|
|
|
@interface InvalidNameInIvarAndPropertyBase
|
|
{
|
|
@public
|
|
float _a;
|
|
}
|
|
@property float _b;
|
|
@end
|
|
|
|
void invalidNameInIvarAndPropertyBase() {
|
|
float a = ((InvalidNameInIvarAndPropertyBase*)node)->_a; // expected-error {{use of undeclared identifier 'node'}}
|
|
float b = ((InvalidNameInIvarAndPropertyBase*)node)._b; // expected-error {{use of undeclared identifier 'node'}}
|
|
}
|
|
|
|
// rdar://problem/33102722
|
|
// Typo correction for a property when it has as correction candidates
|
|
// synthesized ivar and a class name, both at the same edit distance.
|
|
@class TypoCandidate;
|
|
|
|
@interface PropertyType : NSObject
|
|
@property int x;
|
|
@end
|
|
|
|
@interface InterfaceC : NSObject
|
|
@property(assign) PropertyType *typoCandidate; // expected-note {{'_typoCandidate' declared here}}
|
|
@end
|
|
|
|
@implementation InterfaceC
|
|
-(void)method {
|
|
typoCandidate.x = 0; // expected-error {{use of undeclared identifier 'typoCandidate'; did you mean '_typoCandidate'?}}
|
|
}
|
|
@end
|
|
|
|
// rdar://35172419
|
|
// The scope of 'do-while' ends before typo-correction takes place.
|
|
|
|
struct Mat2 { int rows; };
|
|
|
|
@implementation ImplNoInt // expected-warning {{cannot find interface declaration for 'ImplNoInt'}}
|
|
|
|
- (void)typoCorrentInDoWhile {
|
|
Mat2 tlMat1; // expected-note {{'tlMat1' declared here}}
|
|
// Create many scopes to exhaust the cache.
|
|
do {
|
|
for (int index = 0; index < 2; index++) {
|
|
if (true) {
|
|
for (int specialTileType = 1; specialTileType < 5; specialTileType++) {
|
|
for (int i = 0; i < 10; i++) {
|
|
for (double scale = 0.95; scale <= 1.055; scale += 0.05) {
|
|
for (int j = 0; j < 10; j++) {
|
|
if (1 > 0.9) {
|
|
for (int sptile = 1; sptile < 5; sptile++) {
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
} while (tlMat.rows); // expected-error {{use of undeclared identifier 'tlMat'; did you mean 'tlMat1'}}
|
|
}
|
|
|
|
@end
|