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"
|
||||
|
||||
|
|
@ -84,3 +84,28 @@
|
|||
void randomlyMessageAnObject(MyClass *arr[], int i) {
|
||||
(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