зеркало из https://github.com/microsoft/clang-1.git
Statement expressions can be used in global- or namespace-scoped blocks
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@98135 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Родитель
3cb0ebd5f7
Коммит
dd8f569f84
|
@ -6593,7 +6593,8 @@ Sema::ActOnStmtExpr(SourceLocation LPLoc, StmtArg substmt,
|
|||
assert(SubStmt && isa<CompoundStmt>(SubStmt) && "Invalid action invocation!");
|
||||
CompoundStmt *Compound = cast<CompoundStmt>(SubStmt);
|
||||
|
||||
bool isFileScope = getCurFunctionOrMethodDecl() == 0;
|
||||
bool isFileScope
|
||||
= (getCurFunctionOrMethodDecl() == 0) && (getCurBlock() == 0);
|
||||
if (isFileScope)
|
||||
return ExprError(Diag(LPLoc, diag::err_stmtexpr_file_scope));
|
||||
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
// RUN: %clang_cc1 %s -fsyntax-only -verify -Wno-unreachable-code
|
||||
// RUN: %clang_cc1 %s -fsyntax-only -fblocks -verify -Wno-unreachable-code
|
||||
|
||||
// rdar://6597252
|
||||
Class test1(Class X) {
|
||||
|
@ -19,3 +19,6 @@ void test2() {
|
|||
|
||||
if (@encode(int) == "foo") { } // expected-warning {{result of comparison against @encode is unspecified}}
|
||||
}
|
||||
|
||||
#define MAX(A,B) ({ __typeof__(A) __a = (A); __typeof__(B) __b = (B); __a < __b ? __b : __a; })
|
||||
void (^foo)(int, int) = ^(int x, int y) { int z = MAX(x, y); };
|
||||
|
|
Загрузка…
Ссылка в новой задаче