diff options
| author | Nikola Smiljanic <popizdeh@gmail.com> | 2015-07-16 01:06:17 +0000 |
|---|---|---|
| committer | Nikola Smiljanic <popizdeh@gmail.com> | 2015-07-16 01:06:17 +0000 |
| commit | fa00728f5815b1c3146678a3c180d469761b0b65 (patch) | |
| tree | c5ee7a9f87c0e3c8c322ef249fefbaebdd44b06e /clang/test/Sema | |
| parent | e2041b68b1d3c734f946e722917935c97c449ede (diff) | |
| download | bcm5719-llvm-fa00728f5815b1c3146678a3c180d469761b0b65.tar.gz bcm5719-llvm-fa00728f5815b1c3146678a3c180d469761b0b65.zip | |
PR10405 - Desugar FunctionType and TemplateSpecializationType if any type that appears inside needs to be desugared.
llvm-svn: 242371
Diffstat (limited to 'clang/test/Sema')
| -rw-r--r-- | clang/test/Sema/nullability.c | 4 | ||||
| -rw-r--r-- | clang/test/Sema/pointer-addition.c | 10 |
2 files changed, 8 insertions, 6 deletions
diff --git a/clang/test/Sema/nullability.c b/clang/test/Sema/nullability.c index 59644c4193a..8a621d3b5f8 100644 --- a/clang/test/Sema/nullability.c +++ b/clang/test/Sema/nullability.c @@ -47,6 +47,7 @@ typedef _Nonnull int *(^ block_type_3)(int, int); typedef _Nonnull int *(* function_pointer_type_3)(int, int); typedef _Nonnull int_ptr (^ block_type_4)(int, int); typedef _Nonnull int_ptr (* function_pointer_type_4)(int, int); +typedef void (* function_pointer_type_5)(int_ptr _Nonnull); void acceptFunctionPtr(_Nonnull int *(*)(void)); void acceptBlockPtr(_Nonnull int *(^)(void)); @@ -55,7 +56,8 @@ void testBlockFunctionPtrNullability() { float *fp; fp = (function_pointer_type_3)0; // expected-warning{{from 'function_pointer_type_3' (aka 'int * _Nonnull (*)(int, int)')}} fp = (block_type_3)0; // expected-error{{from incompatible type 'block_type_3' (aka 'int * _Nonnull (^)(int, int)')}} - fp = (function_pointer_type_4)0; // expected-warning{{from 'function_pointer_type_4' (aka 'int_ptr _Nonnull (*)(int, int)')}} + fp = (function_pointer_type_4)0; // expected-warning{{from 'function_pointer_type_4' (aka 'int * _Nonnull (*)(int, int)')}} + fp = (function_pointer_type_5)0; // expected-warning{{from 'function_pointer_type_5' (aka 'void (*)(int * _Nonnull)')}} fp = (block_type_4)0; // expected-error{{from incompatible type 'block_type_4' (aka 'int_ptr _Nonnull (^)(int, int)')}} acceptFunctionPtr(0); // no-warning diff --git a/clang/test/Sema/pointer-addition.c b/clang/test/Sema/pointer-addition.c index 667fe9a68c1..c71e96114b8 100644 --- a/clang/test/Sema/pointer-addition.c +++ b/clang/test/Sema/pointer-addition.c @@ -14,10 +14,10 @@ void a(S* b, void* c) { b = 1+b; // expected-error {{arithmetic on a pointer to an incomplete type}} /* The next couple tests are only pedantic warnings in gcc */ void (*d)(S*,void*) = a; - d += 1; // expected-warning {{arithmetic on a pointer to the function type 'void (S *, void *)' is a GNU extension}} - d++; // expected-warning {{arithmetic on a pointer to the function type 'void (S *, void *)' is a GNU extension}} - d--; // expected-warning {{arithmetic on a pointer to the function type 'void (S *, void *)' is a GNU extension}} - d -= 1; // expected-warning {{arithmetic on a pointer to the function type 'void (S *, void *)' is a GNU extension}} - (void)(1 + d); // expected-warning {{arithmetic on a pointer to the function type 'void (S *, void *)' is a GNU extension}} + d += 1; // expected-warning {{arithmetic on a pointer to the function type 'void (S *, void *)' (aka 'void (struct S *, void *)') is a GNU extension}} + d++; // expected-warning {{arithmetic on a pointer to the function type 'void (S *, void *)' (aka 'void (struct S *, void *)') is a GNU extension}} + d--; // expected-warning {{arithmetic on a pointer to the function type 'void (S *, void *)' (aka 'void (struct S *, void *)') is a GNU extension}} + d -= 1; // expected-warning {{arithmetic on a pointer to the function type 'void (S *, void *)' (aka 'void (struct S *, void *)') is a GNU extension}} + (void)(1 + d); // expected-warning {{arithmetic on a pointer to the function type 'void (S *, void *)' (aka 'void (struct S *, void *)') is a GNU extension}} e++; // expected-error {{arithmetic on a pointer to an incomplete type}} } |

