diff options
author | Fariborz Jahanian <fjahanian@apple.com> | 2009-06-19 23:37:08 +0000 |
---|---|---|
committer | Fariborz Jahanian <fjahanian@apple.com> | 2009-06-19 23:37:08 +0000 |
commit | 3fd7310d700136b37855b5f9025c58e00489e640 (patch) | |
tree | 66ee672e164bb8b33b4ec925f677501f74da0133 /clang/test/Sema/block-return.c | |
parent | c702fc0e648954260b3e27afdba5699fea8a08a2 (diff) | |
download | bcm5719-llvm-3fd7310d700136b37855b5f9025c58e00489e640.tar.gz bcm5719-llvm-3fd7310d700136b37855b5f9025c58e00489e640.zip |
Use QualType to represent block's implicit return type as
to not lose its 'const/volatile' qualifier.
llvm-svn: 73795
Diffstat (limited to 'clang/test/Sema/block-return.c')
-rw-r--r-- | clang/test/Sema/block-return.c | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/clang/test/Sema/block-return.c b/clang/test/Sema/block-return.c index e1a3cfd8123..87f4040be9d 100644 --- a/clang/test/Sema/block-return.c +++ b/clang/test/Sema/block-return.c @@ -102,3 +102,27 @@ void foo6() { b(1); int (^c)(void) __attribute__((noreturn)) = ^ __attribute__((noreturn)) { return 100; }; // expected-error {{block declared 'noreturn' should not return}} } + + +void foo7() +{ + const int (^BB) (void) = ^{ const int i = 1; return i; }; // OK + const int (^CC) (void) = ^const int{ const int i = 1; return i; }; // OK + + int i; + int (^FF) (void) = ^{ return i; }; // OK + int (^EE) (void) = ^{ return i+1; }; // OK + + __block int j; + int (^JJ) (void) = ^{ return j; }; // OK + int (^KK) (void) = ^{ return j+1; }; // OK + + __block const int k; + const int cint = 100; + + int (^MM) (void) = ^{ return k; }; // expected-error {{incompatible block pointer types initializing 'int const (^)(void)', expected 'int (^)(void)'}} + int (^NN) (void) = ^{ return cint; }; // expected-error {{incompatible block pointer types initializing 'int const (^)(void)', expected 'int (^)(void)'}} + +} + + |