diff options
author | Mike Stump <mrs@apple.com> | 2009-04-29 19:03:13 +0000 |
---|---|---|
committer | Mike Stump <mrs@apple.com> | 2009-04-29 19:03:13 +0000 |
commit | 19c30c00e5e01e4608a43c7deb504f343f09e46d (patch) | |
tree | 562016df236e451dc15aca58efc9e30c47bf89f2 /lib/Parse/ParseExpr.cpp | |
parent | c887d13b07d72c8e67d1a73a82d3167e866f50e5 (diff) |
Sema and CodeGen support for attributes on blocks. Radar 6441502
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70403 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Parse/ParseExpr.cpp')
-rw-r--r-- | lib/Parse/ParseExpr.cpp | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/lib/Parse/ParseExpr.cpp b/lib/Parse/ParseExpr.cpp index f299c5246e..1f37532d71 100644 --- a/lib/Parse/ParseExpr.cpp +++ b/lib/Parse/ParseExpr.cpp @@ -1290,6 +1290,13 @@ void Parser::ParseBlockId() { // Parse the block-declarator. Declarator DeclaratorInfo(DS, Declarator::BlockLiteralContext); ParseDeclarator(DeclaratorInfo); + + if (Tok.is(tok::kw___attribute)) { + SourceLocation Loc; + AttributeList *AttrList = ParseAttributes(&Loc); + DeclaratorInfo.AddAttributes(AttrList, Loc); + } + // Inform sema that we are starting a block. Actions.ActOnBlockArguments(DeclaratorInfo, CurScope); } @@ -1345,6 +1352,13 @@ Parser::OwningExprResult Parser::ParseBlockLiteralExpression() { Actions.ActOnBlockError(CaretLoc, CurScope); return ExprError(); } + + if (Tok.is(tok::kw___attribute)) { + SourceLocation Loc; + AttributeList *AttrList = ParseAttributes(&Loc); + ParamInfo.AddAttributes(AttrList, Loc); + } + // Inform sema that we are starting a block. Actions.ActOnBlockArguments(ParamInfo, CurScope); } else if (!Tok.is(tok::l_brace)) { @@ -1357,6 +1371,13 @@ Parser::OwningExprResult Parser::ParseBlockLiteralExpression() { false, false, 0, 0, CaretLoc, ParamInfo), CaretLoc); + + if (Tok.is(tok::kw___attribute)) { + SourceLocation Loc; + AttributeList *AttrList = ParseAttributes(&Loc); + ParamInfo.AddAttributes(AttrList, Loc); + } + // Inform sema that we are starting a block. Actions.ActOnBlockArguments(ParamInfo, CurScope); } |