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 / d09074f0ca.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@165124 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Jordan Rose 2012-10-03 16:00:32 +00:00
Родитель 1215057517
Коммит ff63227817
1 изменённых файлов: 26 добавлений и 1 удалений

Просмотреть файл

@ -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
}