зеркало из https://github.com/microsoft/clang-1.git
Allow qualifiers on blocks. Radar 6441502
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71183 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Родитель
7704a33fb3
Коммит
7bc8d96440
|
@ -666,12 +666,11 @@ QualType Sema::GetTypeForDeclarator(Declarator &D, Scope *S, unsigned Skip) {
|
|||
if (!LangOpts.Blocks)
|
||||
Diag(DeclType.Loc, diag::err_blocks_disable);
|
||||
|
||||
if (DeclType.Cls.TypeQuals)
|
||||
Diag(D.getIdentifierLoc(), diag::err_qualified_block_pointer_type);
|
||||
if (!T.getTypePtr()->isFunctionType())
|
||||
Diag(D.getIdentifierLoc(), diag::err_nonfunction_block_type);
|
||||
else
|
||||
T = Context.getBlockPointerType(T);
|
||||
T = (Context.getBlockPointerType(T)
|
||||
.getQualifiedType(DeclType.Cls.TypeQuals));
|
||||
break;
|
||||
case DeclaratorChunk::Pointer:
|
||||
T = BuildPointerType(T, DeclType.Ptr.TypeQuals, DeclType.Loc, Name);
|
||||
|
|
|
@ -180,3 +180,8 @@ void test17() {
|
|||
(void)(1 < bp); // expected-error {{invalid operands to binary expression}}
|
||||
(void)(0 < bp); // expected-error {{invalid operands to binary expression}}
|
||||
}
|
||||
|
||||
void test18() {
|
||||
void (^const blockA)(void) = ^{ };
|
||||
blockA = ^{ }; // expected-error {{read-only variable is not assignable}}
|
||||
}
|
||||
|
|
Загрузка…
Ссылка в новой задаче