summaryrefslogtreecommitdiffstats
path: root/clang/test/Sema/block-return.c
diff options
context:
space:
mode:
authorFariborz Jahanian <fjahanian@apple.com>2009-06-19 23:37:08 +0000
committerFariborz Jahanian <fjahanian@apple.com>2009-06-19 23:37:08 +0000
commit3fd7310d700136b37855b5f9025c58e00489e640 (patch)
tree66ee672e164bb8b33b4ec925f677501f74da0133 /clang/test/Sema/block-return.c
parentc702fc0e648954260b3e27afdba5699fea8a08a2 (diff)
downloadbcm5719-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.c24
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)'}}
+
+}
+
+
OpenPOWER on IntegriCloud