From 8c0aa2d207e10628683066c8a279a024d0c84b89 Mon Sep 17 00:00:00 2001 From: Roberto Raggi Date: Fri, 6 Feb 2009 11:36:39 +0100 Subject: [PATCH] Fixes: Parsing of block declarations in an @implementation block. --- src/shared/cplusplus/Parser.cpp | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/src/shared/cplusplus/Parser.cpp b/src/shared/cplusplus/Parser.cpp index 6fb2da600d7..9882293000e 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 }