forked from OSchip/llvm-project
Revert "InlineObjCInstanceMethod.m: Remove lines introduced in r165079."
...and fix the run line so that the expected warnings are the same on all platforms. This reverts r165088 / d09074f0ca06626914108f1c0d4e70adeb851e01. llvm-svn: 165124
This commit is contained in:
parent
35fcb54cdd
commit
ef77a87a9e
|
|
@ -1,4 +1,4 @@
|
||||||
// RUN: %clang --analyze -Xanalyzer -analyzer-checker=core -Xclang -verify %s
|
// RUN: %clang --analyze -Xanalyzer -analyzer-checker=osx.cocoa.IncompatibleMethodTypes -Xclang -verify %s
|
||||||
|
|
||||||
#include "InlineObjCInstanceMethod.h"
|
#include "InlineObjCInstanceMethod.h"
|
||||||
|
|
||||||
|
|
@ -84,3 +84,28 @@
|
||||||
void randomlyMessageAnObject(MyClass *arr[], int i) {
|
void randomlyMessageAnObject(MyClass *arr[], int i) {
|
||||||
(void)[arr[i] getInt];
|
(void)[arr[i] getInt];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@interface EvilChild : MyParent
|
||||||
|
- (id)getInt;
|
||||||
|
@end
|
||||||
|
|
||||||
|
@implementation EvilChild
|
||||||
|
- (id)getInt { // expected-warning {{types are incompatible}}
|
||||||
|
return self;
|
||||||
|
}
|
||||||
|
@end
|
||||||
|
|
||||||
|
int testNonCovariantReturnType() {
|
||||||
|
MyParent *obj = [[EvilChild alloc] init];
|
||||||
|
|
||||||
|
// Devirtualization allows us to directly call -[EvilChild getInt], but
|
||||||
|
// that returns an id, not an int. There is an off-by-default warning for
|
||||||
|
// this, -Woverriding-method-mismatch, and an on-by-default analyzer warning,
|
||||||
|
// osx.cocoa.IncompatibleMethodTypes. This code would probably crash at
|
||||||
|
// runtime, but at least the analyzer shouldn't crash.
|
||||||
|
int x = 1 + [obj getInt];
|
||||||
|
|
||||||
|
[obj release];
|
||||||
|
return 5/(x-1); // no-warning
|
||||||
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue