From 3fd7310d700136b37855b5f9025c58e00489e640 Mon Sep 17 00:00:00 2001 From: Fariborz Jahanian Date: Fri, 19 Jun 2009 23:37:08 +0000 Subject: Use QualType to represent block's implicit return type as to not lose its 'const/volatile' qualifier. llvm-svn: 73795 --- clang/test/Sema/block-return.c | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) (limited to 'clang/test/Sema/block-return.c') 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)'}} + +} + + -- cgit v1.2.3