diff options
author | Volodymyr Sapsai <vsapsai@apple.com> | 2017-09-28 23:18:49 +0000 |
---|---|---|
committer | Volodymyr Sapsai <vsapsai@apple.com> | 2017-09-28 23:18:49 +0000 |
commit | 3adb8ef46e4e2af980bc418c569694ef74d252d3 (patch) | |
tree | 4d0fbb6aefcdc5fb51e00d52649d8f0b060f325f /test/FixIt | |
parent | d5fedf97720711126ed57d6a0b5ec687f40edb69 (diff) | |
download | clang-3adb8ef46e4e2af980bc418c569694ef74d252d3.tar.gz |
[Sema] Put nullability fix-it after the end of the pointer.
Fixes nullability fix-it for `id<SomeProtocol>`. With this change
nullability specifier is inserted after ">" instead of between
"id" and "<".
rdar://problem/34260995
Reviewers: jordan_rose, doug.gregor, ahatanak, arphaman
Reviewed By: jordan_rose
Subscribers: cfe-commits
Differential Revision: https://reviews.llvm.org/D38327
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@314473 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'test/FixIt')
-rw-r--r-- | test/FixIt/Inputs/nullability-objc.h | 48 | ||||
-rw-r--r-- | test/FixIt/nullability.mm | 2 |
2 files changed, 50 insertions, 0 deletions
diff --git a/test/FixIt/Inputs/nullability-objc.h b/test/FixIt/Inputs/nullability-objc.h new file mode 100644 index 0000000000..e3e6baafd6 --- /dev/null +++ b/test/FixIt/Inputs/nullability-objc.h @@ -0,0 +1,48 @@ +@class Item; +@class Container<ObjectType>; +@protocol Protocol; + +// rdar://problem/34260995 +// The first pointer in the file is handled in a different way so need +// a separate test for this case even if the parameter type is the same as in +// objcIdParameterWithProtocol. +void objcIdParameterWithProtocolFirstInFile(id<Protocol> i); // expected-warning {{pointer is missing a nullability type specifier}} +// expected-note@-1 {{insert '_Nullable'}} +// expected-note@-2 {{insert '_Nonnull'}} +// CHECK: fix-it:"{{.*}}nullability-objc.h":{[[@LINE-3]]:57-[[@LINE-3]]:57}:" _Nullable" +// CHECK: fix-it:"{{.*}}nullability-objc.h":{[[@LINE-4]]:57-[[@LINE-4]]:57}:" _Nonnull" + +int * _Nonnull forceNullabilityWarningsObjC(void); + +void objcClassParameter(Item *i); // expected-warning {{pointer is missing a nullability type specifier}} +// expected-note@-1 {{insert '_Nullable'}} +// expected-note@-2 {{insert '_Nonnull'}} +// CHECK: fix-it:"{{.*}}nullability-objc.h":{[[@LINE-3]]:31-[[@LINE-3]]:31}:" _Nullable " +// CHECK: fix-it:"{{.*}}nullability-objc.h":{[[@LINE-4]]:31-[[@LINE-4]]:31}:" _Nonnull " + +void objcClassParameterWithProtocol(Item<Protocol> *i); // expected-warning {{pointer is missing a nullability type specifier}} +// expected-note@-1 {{insert '_Nullable'}} +// expected-note@-2 {{insert '_Nonnull'}} +// CHECK: fix-it:"{{.*}}nullability-objc.h":{[[@LINE-3]]:53-[[@LINE-3]]:53}:" _Nullable " +// CHECK: fix-it:"{{.*}}nullability-objc.h":{[[@LINE-4]]:53-[[@LINE-4]]:53}:" _Nonnull " + +// rdar://problem/34260995 +void objcIdParameterWithProtocol(id<Protocol> i); // expected-warning {{pointer is missing a nullability type specifier}} +// expected-note@-1 {{insert '_Nullable'}} +// expected-note@-2 {{insert '_Nonnull'}} +// CHECK: fix-it:"{{.*}}nullability-objc.h":{[[@LINE-3]]:46-[[@LINE-3]]:46}:" _Nullable" +// CHECK: fix-it:"{{.*}}nullability-objc.h":{[[@LINE-4]]:46-[[@LINE-4]]:46}:" _Nonnull" + +// Class parameters don't have nullability type specifier. +void objcParameterizedClassParameter(Container<Item *> *c); // expected-warning {{pointer is missing a nullability type specifier}} +// expected-note@-1 {{insert '_Nullable'}} +// expected-note@-2 {{insert '_Nonnull'}} +// CHECK: fix-it:"{{.*}}nullability-objc.h":{[[@LINE-3]]:57-[[@LINE-3]]:57}:" _Nullable " +// CHECK: fix-it:"{{.*}}nullability-objc.h":{[[@LINE-4]]:57-[[@LINE-4]]:57}:" _Nonnull " + +// Class parameters don't have nullability type specifier. +void objcParameterizedClassParameterWithProtocol(Container<id<Protocol>> *c); // expected-warning {{pointer is missing a nullability type specifier}} +// expected-note@-1 {{insert '_Nullable'}} +// expected-note@-2 {{insert '_Nonnull'}} +// CHECK: fix-it:"{{.*}}nullability-objc.h":{[[@LINE-3]]:75-[[@LINE-3]]:75}:" _Nullable " +// CHECK: fix-it:"{{.*}}nullability-objc.h":{[[@LINE-4]]:75-[[@LINE-4]]:75}:" _Nonnull " diff --git a/test/FixIt/nullability.mm b/test/FixIt/nullability.mm index 815c844192..a91ccc0f5f 100644 --- a/test/FixIt/nullability.mm +++ b/test/FixIt/nullability.mm @@ -2,8 +2,10 @@ // RUN: not %clang_cc1 -fdiagnostics-parseable-fixits -fblocks -std=gnu++11 -I %S/Inputs %s >%t.txt 2>&1 // RUN: FileCheck %s < %t.txt // RUN: FileCheck %S/Inputs/nullability.h < %t.txt +// RUN: FileCheck %S/Inputs/nullability-objc.h < %t.txt #include "nullability.h" +#include "nullability-objc.h" #pragma clang assume_nonnull begin |