diff options
| author | Roberto Raggi <qtc-committer@nokia.com> | 2009-02-06 11:36:39 +0100 |
|---|---|---|
| committer | Roberto Raggi <qtc-committer@nokia.com> | 2009-02-06 11:36:39 +0100 |
| commit | 8c0aa2d207e10628683066c8a279a024d0c84b89 (patch) | |
| tree | cd33cddd15c70b9c8d1fec1e41578e44d4c94c4c /src/shared/cplusplus | |
| parent | 4ef83082f6f5a74caff81e6fcc2d26aff9ef47c8 (diff) | |
| download | qt-creator-8c0aa2d207e10628683066c8a279a024d0c84b89.tar.gz | |
Fixes: Parsing of block declarations in an @implementation block.
Diffstat (limited to 'src/shared/cplusplus')
| -rw-r--r-- | src/shared/cplusplus/Parser.cpp | 20 |
1 files changed, 18 insertions, 2 deletions
diff --git a/src/shared/cplusplus/Parser.cpp b/src/shared/cplusplus/Parser.cpp index 6fb2da600d..9882293000 100644 --- a/src/shared/cplusplus/Parser.cpp +++ b/src/shared/cplusplus/Parser.cpp @@ -3763,10 +3763,26 @@ bool Parser::parseObjCMethodDefinitionList() consumeToken(); break; - default: - // ### warning message + case T_SEMICOLON: consumeToken(); break; + + default: + if (LA() == T_EXTERN && LA(2) == T_STRING_LITERAL) { + DeclarationAST *declaration = 0; + parseDeclaration(declaration); + } else { + unsigned start = cursor(); + DeclarationAST *declaration = 0; + if (! parseBlockDeclaration(declaration)) { + rewind(start); + _translationUnit->error(cursor(), + "skip token `%s'", tok().spell()); + + consumeToken(); + } + } + break; } // switch } |
