зеркало из https://github.com/microsoft/clang-1.git
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:
Родитель
1215057517
Коммит
ff63227817
|
@ -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
|
||||
}
|
||||
|
|
Загрузка…
Ссылка в новой задаче