diff options
author | Fariborz Jahanian <fjahanian@apple.com> | 2012-08-10 20:34:17 +0000 |
---|---|---|
committer | Fariborz Jahanian <fjahanian@apple.com> | 2012-08-10 20:34:17 +0000 |
commit | dbd6945b7f4397f44fe6a1f1acf62ab6671e84f5 (patch) | |
tree | e706ae5494f6b0b253927938555d5aaa7e838fc6 /lib | |
parent | ee2f032fe0fc86762608458c2a167ae504579a64 (diff) |
objective-C++: delay parsing of ctor with try block
with member initializer list defined inside
an objc implementation block. wip.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@161692 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib')
-rw-r--r-- | lib/Parse/ParseObjc.cpp | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/lib/Parse/ParseObjc.cpp b/lib/Parse/ParseObjc.cpp index 9b7e85f211..2471d9441b 100644 --- a/lib/Parse/ParseObjc.cpp +++ b/lib/Parse/ParseObjc.cpp @@ -1931,6 +1931,16 @@ void Parser::StashAwayMethodOrFunctionBodyTokens(Decl *MDecl) { Toks.push_back(Tok); if (Tok.is(tok::kw_try)) { ConsumeToken(); + if (Tok.is(tok::colon)) { + Toks.push_back(Tok); + ConsumeToken(); + while (Tok.isNot(tok::l_brace)) { + ConsumeAndStoreUntil(tok::l_paren, Toks, /*StopAtSemi=*/false); + ConsumeAndStoreUntil(tok::r_paren, Toks, /*StopAtSemi=*/false); + } + } + assert(Tok.is(tok::l_brace) + && "StashAwayMethodOrFunctionBodyTokens - '{' not found"); Toks.push_back(Tok); // also store '{' } ConsumeBrace(); |