diff --git a/src/libs/cplusplus/ResolveExpression.cpp b/src/libs/cplusplus/ResolveExpression.cpp index e965c4053a922f9fd78f281684fa6896dd87e71a..2425fef422607dcea3663609adf9b201dbc5e052 100644 --- a/src/libs/cplusplus/ResolveExpression.cpp +++ b/src/libs/cplusplus/ResolveExpression.cpp @@ -322,11 +322,6 @@ bool ResolveExpression::visit(ThrowExpressionAST *) return false; } -bool ResolveExpression::visit(ObjCThrowExpressionAST *) -{ - return false; -} - bool ResolveExpression::visit(TypeIdAST *) { return false; diff --git a/src/libs/cplusplus/ResolveExpression.h b/src/libs/cplusplus/ResolveExpression.h index 25d1caefe5f40da5ea146f86a3791bf7b650c34a..3a367964223b1ed7b5fa3a5d17607fcb69ba33e6 100644 --- a/src/libs/cplusplus/ResolveExpression.h +++ b/src/libs/cplusplus/ResolveExpression.h @@ -90,7 +90,6 @@ protected: virtual bool visit(NestedExpressionAST *ast); virtual bool visit(StringLiteralAST *ast); virtual bool visit(ThrowExpressionAST *ast); - virtual bool visit(ObjCThrowExpressionAST *ast); virtual bool visit(TypeIdAST *ast); virtual bool visit(UnaryExpressionAST *ast); virtual bool visit(CompoundLiteralAST *ast); diff --git a/src/shared/cplusplus/AST.cpp b/src/shared/cplusplus/AST.cpp index 40893f4ca59c162656848faf313e85dab90c3730..51f5ce0a5fcbcac1029d248b8bb28b81fc937be2 100644 --- a/src/shared/cplusplus/AST.cpp +++ b/src/shared/cplusplus/AST.cpp @@ -1691,6 +1691,7 @@ unsigned ThisExpressionAST::lastToken() const return this_token + 1; } + unsigned ThrowExpressionAST::firstToken() const { return throw_token; @@ -1703,20 +1704,6 @@ unsigned ThrowExpressionAST::lastToken() const return throw_token + 1; } -unsigned ObjCThrowExpressionAST::firstToken() const -{ - return at_token; -} - -unsigned ObjCThrowExpressionAST::lastToken() const -{ - if (expression) - return expression->lastToken(); - if (throw_token) - return throw_token + 1; - return at_token + 1; -} - unsigned TranslationUnitAST::firstToken() const { if(declaration_list) @@ -2405,49 +2392,3 @@ unsigned ObjCSynchronizedStatementAST::lastToken() const if (synchronized_token) return synchronized_token + 1; return at_token + 1; } - -unsigned ObjCTryBlockStatementAST::firstToken() const -{ return at_token; } - -unsigned ObjCTryBlockStatementAST::lastToken() const -{ - if (finally_clause) - return finally_clause->lastToken(); - if (catch_clause_list) - return catch_clause_list->lastToken(); - if (statement) - return statement->lastToken(); - if (try_token) - return try_token + 1; - return at_token + 1; -} - -unsigned ObjCCatchClauseAST::firstToken() const -{ return at_token; } - -unsigned ObjCCatchClauseAST::lastToken() const -{ - if (statement) - return statement->lastToken(); - if (rparen_token) - return rparen_token + 1; - if (exception_declaration) - return exception_declaration->lastToken(); - if (lparen_token) - return lparen_token + 1; - if (catch_token) - return catch_token + 1; - return at_token + 1; -} - -unsigned ObjCFinallyClauseAST::firstToken() const -{ return at_token; } - -unsigned ObjCFinallyClauseAST::lastToken() const -{ - if (statement) - return statement->lastToken(); - if (finally_token) - return finally_token + 1; - return at_token + 1; -} diff --git a/src/shared/cplusplus/AST.h b/src/shared/cplusplus/AST.h index 52498c7da54caeb4fefe42e9fcdf296f1b46a6cf..76ec773226ef7f619cf148b2a85421c072a839bb 100644 --- a/src/shared/cplusplus/AST.h +++ b/src/shared/cplusplus/AST.h @@ -218,13 +218,11 @@ public: virtual NewPlacementAST *asNewPlacement() { return 0; } virtual NewTypeIdAST *asNewTypeId() { return 0; } virtual NumericLiteralAST *asNumericLiteral() { return 0; } - virtual ObjCCatchClauseAST *asObjCCatchClause() { return 0; } virtual ObjCClassDeclarationAST *asObjCClassDeclaration() { return 0; } virtual ObjCClassForwardDeclarationAST *asObjCClassForwardDeclaration() { return 0; } virtual ObjCDynamicPropertiesDeclarationAST *asObjCDynamicPropertiesDeclaration() { return 0; } virtual ObjCEncodeExpressionAST *asObjCEncodeExpression() { return 0; } virtual ObjCFastEnumerationAST *asObjCFastEnumeration() { return 0; } - virtual ObjCFinallyClauseAST *asObjCFinallyClause() { return 0; } virtual ObjCInstanceVariablesDeclarationAST *asObjCInstanceVariablesDeclaration() { return 0; } virtual ObjCMessageArgumentAST *asObjCMessageArgument() { return 0; } virtual ObjCMessageArgumentDeclarationAST *asObjCMessageArgumentDeclaration() { return 0; } @@ -245,8 +243,6 @@ public: virtual ObjCSynchronizedStatementAST *asObjCSynchronizedStatement() { return 0; } virtual ObjCSynthesizedPropertiesDeclarationAST *asObjCSynthesizedPropertiesDeclaration() { return 0; } virtual ObjCSynthesizedPropertyAST *asObjCSynthesizedProperty() { return 0; } - virtual ObjCThrowExpressionAST *asObjCThrowExpression() { return 0; } - virtual ObjCTryBlockStatementAST *asObjCTryBlockStatement() { return 0; } virtual ObjCTypeNameAST *asObjCTypeName() { return 0; } virtual ObjCVisibilityDeclarationAST *asObjCVisibilityDeclaration() { return 0; } virtual OperatorAST *asOperator() { return 0; } @@ -2363,26 +2359,6 @@ protected: virtual bool match0(AST *, ASTMatcher *); }; -class CPLUSPLUS_EXPORT ObjCThrowExpressionAST: public ExpressionAST -{ -public: - unsigned at_token; - unsigned throw_token; - ExpressionAST *expression; - -public: - virtual ObjCThrowExpressionAST *asObjCThrowExpression() { return this; } - - virtual unsigned firstToken() const; - virtual unsigned lastToken() const; - - virtual ObjCThrowExpressionAST *clone(MemoryPool *pool) const; - -protected: - virtual void accept0(ASTVisitor *visitor); - virtual bool match0(AST *, ASTMatcher *); -}; - class CPLUSPLUS_EXPORT TranslationUnitAST: public AST { public: @@ -3193,74 +3169,6 @@ protected: virtual bool match0(AST *, ASTMatcher *); }; -class CPLUSPLUS_EXPORT ObjCTryBlockStatementAST: public StatementAST -{ -public: - unsigned at_token; - unsigned try_token; - StatementAST *statement; - ObjCCatchClauseListAST *catch_clause_list; - ObjCFinallyClauseAST *finally_clause; - -public: - virtual ObjCTryBlockStatementAST *asObjCTryBlockStatement() { return this; } - - virtual unsigned firstToken() const; - virtual unsigned lastToken() const; - - virtual ObjCTryBlockStatementAST *clone(MemoryPool *pool) const; - -protected: - virtual void accept0(ASTVisitor *visitor); - virtual bool match0(AST *, ASTMatcher *); -}; - -class CPLUSPLUS_EXPORT ObjCCatchClauseAST: public StatementAST -{ -public: - unsigned at_token; - unsigned catch_token; - unsigned lparen_token; - ExceptionDeclarationAST *exception_declaration; - unsigned rparen_token; - StatementAST *statement; - -public: // annotations - Block *symbol; - -public: - virtual ObjCCatchClauseAST *asObjCCatchClause() { return this; } - - virtual unsigned firstToken() const; - virtual unsigned lastToken() const; - - virtual ObjCCatchClauseAST *clone(MemoryPool *pool) const; - -protected: - virtual void accept0(ASTVisitor *visitor); - virtual bool match0(AST *, ASTMatcher *); -}; - -class CPLUSPLUS_EXPORT ObjCFinallyClauseAST: public StatementAST -{ -public: - unsigned at_token; - unsigned finally_token; - StatementAST *statement; - -public: - virtual ObjCFinallyClauseAST *asObjCFinallyClause() { return this; } - - virtual unsigned firstToken() const; - virtual unsigned lastToken() const; - - virtual ObjCFinallyClauseAST *clone(MemoryPool *pool) const; - -protected: - virtual void accept0(ASTVisitor *visitor); - virtual bool match0(AST *, ASTMatcher *); -}; - } // end of namespace CPlusPlus diff --git a/src/shared/cplusplus/ASTClone.cpp b/src/shared/cplusplus/ASTClone.cpp index a909db03b7c984a7ba8128fd743a612fa25ff36d..d4247ad1160e8a61879cd3ce3f230717bde16ae3 100644 --- a/src/shared/cplusplus/ASTClone.cpp +++ b/src/shared/cplusplus/ASTClone.cpp @@ -1108,16 +1108,6 @@ ThrowExpressionAST *ThrowExpressionAST::clone(MemoryPool *pool) const return ast; } -ObjCThrowExpressionAST *ObjCThrowExpressionAST::clone(MemoryPool *pool) const -{ - ObjCThrowExpressionAST *ast = new (pool) ObjCThrowExpressionAST; - ast->at_token = at_token; - ast->throw_token = throw_token; - if (expression) - ast->expression = expression->clone(pool); - return ast; -} - TranslationUnitAST *TranslationUnitAST::clone(MemoryPool *pool) const { TranslationUnitAST *ast = new (pool) TranslationUnitAST; @@ -1574,42 +1564,3 @@ ObjCSynchronizedStatementAST *ObjCSynchronizedStatementAST::clone(MemoryPool *po return ast; } -ObjCTryBlockStatementAST *ObjCTryBlockStatementAST::clone(MemoryPool *pool) const -{ - ObjCTryBlockStatementAST *ast = new (pool) ObjCTryBlockStatementAST; - ast->at_token = at_token; - ast->try_token = try_token; - if (statement) - ast->statement = statement->clone(pool); - for (ObjCCatchClauseListAST *iter = catch_clause_list, **ast_iter = &ast->catch_clause_list; - iter; iter = iter->next, ast_iter = &(*ast_iter)->next) - *ast_iter = new (pool) ObjCCatchClauseListAST((iter->value) ? iter->value->clone(pool) : 0); - if (finally_clause) - ast->finally_clause = finally_clause->clone(pool); - return ast; -} - -ObjCCatchClauseAST *ObjCCatchClauseAST::clone(MemoryPool *pool) const -{ - ObjCCatchClauseAST *ast = new (pool) ObjCCatchClauseAST; - ast->at_token = at_token; - ast->catch_token = catch_token; - ast->lparen_token = lparen_token; - if (exception_declaration) - ast->exception_declaration = exception_declaration->clone(pool); - ast->rparen_token = rparen_token; - if (statement) - ast->statement = statement->clone(pool); - return ast; -} - -ObjCFinallyClauseAST *ObjCFinallyClauseAST::clone(MemoryPool *pool) const -{ - ObjCFinallyClauseAST *ast = new (pool) ObjCFinallyClauseAST; - ast->at_token = at_token; - ast->finally_token = finally_token; - if (statement) - ast->statement = statement->clone(pool); - return ast; -} - diff --git a/src/shared/cplusplus/ASTMatch0.cpp b/src/shared/cplusplus/ASTMatch0.cpp index 26a485a6c15ecd00bca363d458137a01814ec6b1..a2fcf8e0b96d4f4457a68b8386023b234aa55510 100644 --- a/src/shared/cplusplus/ASTMatch0.cpp +++ b/src/shared/cplusplus/ASTMatch0.cpp @@ -793,14 +793,6 @@ bool ThrowExpressionAST::match0(AST *pattern, ASTMatcher *matcher) return false; } -bool ObjCThrowExpressionAST::match0(AST *pattern, ASTMatcher *matcher) -{ - if (ObjCThrowExpressionAST *_other = pattern->asObjCThrowExpression()) - return matcher->match(this, _other); - - return false; -} - bool TranslationUnitAST::match0(AST *pattern, ASTMatcher *matcher) { if (TranslationUnitAST *_other = pattern->asTranslationUnit()) @@ -1089,27 +1081,3 @@ bool ObjCSynchronizedStatementAST::match0(AST *pattern, ASTMatcher *matcher) return false; } -bool ObjCTryBlockStatementAST::match0(AST *pattern, ASTMatcher *matcher) -{ - if (ObjCTryBlockStatementAST *_other = pattern->asObjCTryBlockStatement()) - return matcher->match(this, _other); - - return false; -} - -bool ObjCCatchClauseAST::match0(AST *pattern, ASTMatcher *matcher) -{ - if (ObjCCatchClauseAST *_other = pattern->asObjCCatchClause()) - return matcher->match(this, _other); - - return false; -} - -bool ObjCFinallyClauseAST::match0(AST *pattern, ASTMatcher *matcher) -{ - if (ObjCFinallyClauseAST *_other = pattern->asObjCFinallyClause()) - return matcher->match(this, _other); - - return false; -} - diff --git a/src/shared/cplusplus/ASTMatcher.cpp b/src/shared/cplusplus/ASTMatcher.cpp index 137b973e565db1fe99c6c73f31f7278fb2ca1f86..627fe3abf85a5f7f3551ec8830cff0a80c95ca94 100644 --- a/src/shared/cplusplus/ASTMatcher.cpp +++ b/src/shared/cplusplus/ASTMatcher.cpp @@ -1848,23 +1848,6 @@ bool ASTMatcher::match(ThrowExpressionAST *node, ThrowExpressionAST *pattern) return true; } -bool ASTMatcher::match(ObjCThrowExpressionAST *node, ObjCThrowExpressionAST *pattern) -{ - (void) node; - (void) pattern; - - pattern->at_token = node->at_token; - - pattern->throw_token = node->throw_token; - - if (! pattern->expression) - pattern->expression = node->expression; - else if (! AST::match(node->expression, pattern->expression, this)) - return false; - - return true; -} - bool ASTMatcher::match(TranslationUnitAST *node, TranslationUnitAST *pattern) { (void) node; @@ -2649,73 +2632,3 @@ bool ASTMatcher::match(ObjCSynchronizedStatementAST *node, ObjCSynchronizedState return true; } -bool ASTMatcher::match(ObjCTryBlockStatementAST *node, ObjCTryBlockStatementAST *pattern) -{ - (void) node; - (void) pattern; - - pattern->at_token = node->at_token; - - pattern->try_token = node->try_token; - - if (! pattern->statement) - pattern->statement = node->statement; - else if (! AST::match(node->statement, pattern->statement, this)) - return false; - - if (! pattern->catch_clause_list) - pattern->catch_clause_list = node->catch_clause_list; - else if (! AST::match(node->catch_clause_list, pattern->catch_clause_list, this)) - return false; - - if (! pattern->finally_clause) - pattern->finally_clause = node->finally_clause; - else if (! AST::match(node->finally_clause, pattern->finally_clause, this)) - return false; - - return true; -} - -bool ASTMatcher::match(ObjCCatchClauseAST *node, ObjCCatchClauseAST *pattern) -{ - (void) node; - (void) pattern; - - pattern->at_token = node->at_token; - - pattern->catch_token = node->catch_token; - - pattern->lparen_token = node->lparen_token; - - if (! pattern->exception_declaration) - pattern->exception_declaration = node->exception_declaration; - else if (! AST::match(node->exception_declaration, pattern->exception_declaration, this)) - return false; - - pattern->rparen_token = node->rparen_token; - - if (! pattern->statement) - pattern->statement = node->statement; - else if (! AST::match(node->statement, pattern->statement, this)) - return false; - - return true; -} - -bool ASTMatcher::match(ObjCFinallyClauseAST *node, ObjCFinallyClauseAST *pattern) -{ - (void) node; - (void) pattern; - - pattern->at_token = node->at_token; - - pattern->finally_token = node->finally_token; - - if (! pattern->statement) - pattern->statement = node->statement; - else if (! AST::match(node->statement, pattern->statement, this)) - return false; - - return true; -} - diff --git a/src/shared/cplusplus/ASTMatcher.h b/src/shared/cplusplus/ASTMatcher.h index 38331077fb0aceec4fb552add994c8367563c3cc..c6466a4919f6b171d202b48c36f9ab6e6f0322f7 100644 --- a/src/shared/cplusplus/ASTMatcher.h +++ b/src/shared/cplusplus/ASTMatcher.h @@ -126,7 +126,6 @@ public: virtual bool match(TemplateTypeParameterAST *node, TemplateTypeParameterAST *pattern); virtual bool match(ThisExpressionAST *node, ThisExpressionAST *pattern); virtual bool match(ThrowExpressionAST *node, ThrowExpressionAST *pattern); - virtual bool match(ObjCThrowExpressionAST *node, ObjCThrowExpressionAST *pattern); virtual bool match(TranslationUnitAST *node, TranslationUnitAST *pattern); virtual bool match(TryBlockStatementAST *node, TryBlockStatementAST *pattern); virtual bool match(TypeConstructorCallAST *node, TypeConstructorCallAST *pattern); @@ -170,9 +169,6 @@ public: virtual bool match(ObjCDynamicPropertiesDeclarationAST *node, ObjCDynamicPropertiesDeclarationAST *pattern); virtual bool match(ObjCFastEnumerationAST *node, ObjCFastEnumerationAST *pattern); virtual bool match(ObjCSynchronizedStatementAST *node, ObjCSynchronizedStatementAST *pattern); - virtual bool match(ObjCTryBlockStatementAST *node, ObjCTryBlockStatementAST *pattern); - virtual bool match(ObjCCatchClauseAST *node, ObjCCatchClauseAST *pattern); - virtual bool match(ObjCFinallyClauseAST *node, ObjCFinallyClauseAST *pattern); }; } // end of namespace CPlusPlus diff --git a/src/shared/cplusplus/ASTVisit.cpp b/src/shared/cplusplus/ASTVisit.cpp index 6620551dfc8b6ae0e3a4ae076c230e04f5c3dbd9..8b53d99f7f3cd40263b6c184e7fcc0cfcfe8ac5a 100644 --- a/src/shared/cplusplus/ASTVisit.cpp +++ b/src/shared/cplusplus/ASTVisit.cpp @@ -831,14 +831,6 @@ void ThrowExpressionAST::accept0(ASTVisitor *visitor) visitor->endVisit(this); } -void ObjCThrowExpressionAST::accept0(ASTVisitor *visitor) -{ - if (visitor->visit(this)) { - accept(expression, visitor); - } - visitor->endVisit(this); -} - void TranslationUnitAST::accept0(ASTVisitor *visitor) { if (visitor->visit(this)) { @@ -1155,30 +1147,3 @@ void ObjCSynchronizedStatementAST::accept0(ASTVisitor *visitor) visitor->endVisit(this); } -void ObjCTryBlockStatementAST::accept0(ASTVisitor *visitor) -{ - if (visitor->visit(this)) { - accept(statement, visitor); - accept(catch_clause_list, visitor); - accept(finally_clause, visitor); - } - visitor->endVisit(this); -} - -void ObjCCatchClauseAST::accept0(ASTVisitor *visitor) -{ - if (visitor->visit(this)) { - accept(exception_declaration, visitor); - accept(statement, visitor); - } - visitor->endVisit(this); -} - -void ObjCFinallyClauseAST::accept0(ASTVisitor *visitor) -{ - if (visitor->visit(this)) { - accept(statement, visitor); - } - visitor->endVisit(this); -} - diff --git a/src/shared/cplusplus/ASTVisitor.h b/src/shared/cplusplus/ASTVisitor.h index b07948f412772524b85e0d701fbf75e6364bb973..72a3f4b736e0ca2c45ee04e342ba2c499c8025ef 100644 --- a/src/shared/cplusplus/ASTVisitor.h +++ b/src/shared/cplusplus/ASTVisitor.h @@ -235,10 +235,6 @@ public: virtual bool visit(ObjCDynamicPropertiesDeclarationAST *) { return true; } virtual bool visit(ObjCFastEnumerationAST *) { return true; } virtual bool visit(ObjCSynchronizedStatementAST *) { return true; } - virtual bool visit(ObjCTryBlockStatementAST *) { return true; } - virtual bool visit(ObjCCatchClauseAST *) { return true; } - virtual bool visit(ObjCFinallyClauseAST *) { return true; } - virtual bool visit(ObjCThrowExpressionAST *) { return true; } virtual void endVisit(AccessDeclarationAST *) { } virtual void endVisit(QtPropertyDeclarationAST *) { } @@ -373,10 +369,6 @@ public: virtual void endVisit(ObjCDynamicPropertiesDeclarationAST *) { } virtual void endVisit(ObjCFastEnumerationAST *) { } virtual void endVisit(ObjCSynchronizedStatementAST *) { } - virtual void endVisit(ObjCTryBlockStatementAST *) { } - virtual void endVisit(ObjCCatchClauseAST *) { } - virtual void endVisit(ObjCFinallyClauseAST *) { } - virtual void endVisit(ObjCThrowExpressionAST *) { } private: TranslationUnit *_translationUnit; diff --git a/src/shared/cplusplus/ASTfwd.h b/src/shared/cplusplus/ASTfwd.h index 97b74a0a02b469949e79559e7c1e1776422ddd15..d2a1d317d8111c4e9b802252084580f7f5047b38 100644 --- a/src/shared/cplusplus/ASTfwd.h +++ b/src/shared/cplusplus/ASTfwd.h @@ -125,13 +125,11 @@ class NewInitializerAST; class NewPlacementAST; class NewTypeIdAST; class NumericLiteralAST; -class ObjCCatchClauseAST; class ObjCClassDeclarationAST; class ObjCClassForwardDeclarationAST; class ObjCDynamicPropertiesDeclarationAST; class ObjCEncodeExpressionAST; class ObjCFastEnumerationAST; -class ObjCFinallyClauseAST; class ObjCInstanceVariablesDeclarationAST; class ObjCMessageArgumentAST; class ObjCMessageArgumentDeclarationAST; @@ -152,8 +150,6 @@ class ObjCSelectorWithoutArgumentsAST; class ObjCSynchronizedStatementAST; class ObjCSynthesizedPropertiesDeclarationAST; class ObjCSynthesizedPropertyAST; -class ObjCThrowExpressionAST; -class ObjCTryBlockStatementAST; class ObjCTypeNameAST; class ObjCVisibilityDeclarationAST; class OperatorAST; @@ -228,7 +224,6 @@ typedef List<ObjCSelectorArgumentAST *> ObjCSelectorArgumentListAST; typedef List<ObjCPropertyAttributeAST *> ObjCPropertyAttributeListAST; typedef List<ObjCMessageArgumentDeclarationAST *> ObjCMessageArgumentDeclarationListAST; typedef List<ObjCSynthesizedPropertyAST *> ObjCSynthesizedPropertyListAST; -typedef List<ObjCCatchClauseAST *> ObjCCatchClauseListAST; typedef ExpressionListAST TemplateArgumentListAST; diff --git a/src/shared/cplusplus/CheckExpression.cpp b/src/shared/cplusplus/CheckExpression.cpp index 663f0c4f0bf1c5021b42ba70965c53505c0eb2ee..748fa9c9014a7abe9ee7bace53bc995965c72cc1 100644 --- a/src/shared/cplusplus/CheckExpression.cpp +++ b/src/shared/cplusplus/CheckExpression.cpp @@ -305,12 +305,6 @@ bool CheckExpression::visit(ThrowExpressionAST *ast) return false; } -bool CheckExpression::visit(ObjCThrowExpressionAST *ast) -{ - FullySpecifiedType exprTy = semantic()->check(ast->expression, _scope); - return false; -} - bool CheckExpression::visit(TypeIdAST *ast) { FullySpecifiedType typeSpecTy = semantic()->check(ast->type_specifier_list, _scope); diff --git a/src/shared/cplusplus/CheckExpression.h b/src/shared/cplusplus/CheckExpression.h index 25b0a470240e50bfc3a83fe43c6eee805b1b2b7d..9cc1722d7c2fc6ffccee251bd1b015c13df62235 100644 --- a/src/shared/cplusplus/CheckExpression.h +++ b/src/shared/cplusplus/CheckExpression.h @@ -90,7 +90,6 @@ protected: virtual bool visit(NestedExpressionAST *ast); virtual bool visit(StringLiteralAST *ast); virtual bool visit(ThrowExpressionAST *ast); - virtual bool visit(ObjCThrowExpressionAST *ast); virtual bool visit(TypeIdAST *ast); virtual bool visit(UnaryExpressionAST *ast); virtual bool visit(QtMethodAST *ast); diff --git a/src/shared/cplusplus/CheckStatement.cpp b/src/shared/cplusplus/CheckStatement.cpp index dac65892ecfa374c2a5aebd236238c74917ef652..26e4e7c835acebfdeb046dc10a3123171076ce4a 100644 --- a/src/shared/cplusplus/CheckStatement.cpp +++ b/src/shared/cplusplus/CheckStatement.cpp @@ -379,35 +379,3 @@ bool CheckStatement::visit(QtMemberDeclarationAST *ast) _exprType = FullySpecifiedType(); return false; } - -bool CheckStatement::visit(ObjCTryBlockStatementAST *ast) -{ - semantic()->check(ast->statement, _scope); - for (ObjCCatchClauseListAST *it = ast->catch_clause_list; it; it = it->next) { - semantic()->check(it->value, _scope); - } - _exprType = FullySpecifiedType(); - return false; -} - -bool CheckStatement::visit(ObjCCatchClauseAST *ast) -{ - Block *block = control()->newBlock(ast->at_token); - block->setStartOffset(tokenAt(ast->firstToken()).offset); - block->setEndOffset(tokenAt(ast->lastToken()).offset); - ast->symbol = block; - _scope->enterSymbol(block); - Scope *previousScope = switchScope(block->members()); - semantic()->check(ast->exception_declaration, _scope); - semantic()->check(ast->statement, _scope); - (void) switchScope(previousScope); - _exprType = FullySpecifiedType(); - return false; -} - -bool CheckStatement::visit(ObjCFinallyClauseAST *ast) -{ - semantic()->check(ast->statement, _scope); - _exprType = FullySpecifiedType(); - return false; -} diff --git a/src/shared/cplusplus/CheckStatement.h b/src/shared/cplusplus/CheckStatement.h index dd77d5ba87cb45e8efc33f43170683a7019df668..dc8447f37e4ac500ed5b7a2afee537fcf3b3a68b 100644 --- a/src/shared/cplusplus/CheckStatement.h +++ b/src/shared/cplusplus/CheckStatement.h @@ -90,9 +90,6 @@ protected: virtual bool visit(CatchClauseAST *ast); virtual bool visit(WhileStatementAST *ast); virtual bool visit(QtMemberDeclarationAST *ast); - virtual bool visit(ObjCTryBlockStatementAST *ast); - virtual bool visit(ObjCCatchClauseAST *ast); - virtual bool visit(ObjCFinallyClauseAST *ast); bool forEachFastEnum(unsigned firstToken, unsigned lastToken, diff --git a/src/shared/cplusplus/Parser.cpp b/src/shared/cplusplus/Parser.cpp index 62354e330463e5fd62b42dc43a8bb1115955e207..a6b6e0b1c8190f490f5aa5f6c9aac05ecebda360 100644 --- a/src/shared/cplusplus/Parser.cpp +++ b/src/shared/cplusplus/Parser.cpp @@ -362,17 +362,8 @@ bool Parser::skipUntilStatement() return true; case T_AT: - if (objCEnabled()) { - switch (LA(2)) { - case T_SYNCHRONIZED: - case T_TRY: - case T_THROW: - return true; - default: { - // INTENTIONAL FALL-THROUGH! - } - } - } + if (objCEnabled() && LA(2) == T_SYNCHRONIZED) + return true; default: consumeToken(); @@ -2451,12 +2442,8 @@ bool Parser::parseStatement(StatementAST *&node) } return true; case T_AT: - if (objCEnabled()) { - if (LA(2) == T_SYNCHRONIZED) - return parseObjCSynchronizedStatement(node); - if (LA(2) == T_TRY) - return parseObjCTryBlockStatement(node); - } + return objCEnabled() && LA(2) == T_SYNCHRONIZED + && parseObjCSynchronizedStatement(node); default: if (LA() == T_IDENTIFIER && LA(2) == T_COLON) @@ -3565,7 +3552,7 @@ bool Parser::parseObjCStringLiteral(ExpressionAST *&node) if (LA() != T_AT || LA(2) != T_STRING_LITERAL) return false; - StringLiteralAST **ast = reinterpret_cast<StringLiteralAST **> (&node); + StringLiteralAST **ast = 0; while (LA()) { if (LA() == T_AT && LA(2) == T_STRING_LITERAL) { *ast = new (_pool) StringLiteralAST; @@ -4516,14 +4503,6 @@ bool Parser::parseThrowExpression(ExpressionAST *&node) node = ast; return true; } - if (LA() == T_AT && LA(2) == T_THROW) { - ObjCThrowExpressionAST *ast = new (_pool) ObjCThrowExpressionAST; - ast->at_token = consumeToken(); - ast->throw_token = consumeToken(); - parseAssignmentExpression(ast->expression); - node = ast; - return true; - } return false; } @@ -5394,51 +5373,3 @@ int Parser::peekAtQtContextKeyword() const const Identifier *id = tok().identifier; return classifyQtContextKeyword(id->chars(), id->size()); } - -bool Parser::parseObjCTryBlockStatement(StatementAST *&node) -{ - DEBUG_THIS_RULE(); - if (LA() == T_AT && LA(2) == T_TRY) { - ObjCTryBlockStatementAST *ast = new (_pool) ObjCTryBlockStatementAST; - ast->at_token = consumeToken(); - ast->try_token = consumeToken(); - parseCompoundStatement(ast->statement); - ObjCCatchClauseListAST **catch_clause_ptr = &ast->catch_clause_list; - while (parseObjCCatchClause(*catch_clause_ptr)) - catch_clause_ptr = &(*catch_clause_ptr)->next; - parseObjCFinallyClause(ast->finally_clause); - node = ast; - return true; - } - return false; -} - -bool Parser::parseObjCCatchClause(ObjCCatchClauseListAST *&node) -{ - DEBUG_THIS_RULE(); - if (LA() == T_AT && LA(2) == T_CATCH) { - ObjCCatchClauseAST *ast = new (_pool) ObjCCatchClauseAST; - ast->at_token = consumeToken(); - ast->catch_token = consumeToken(); - match(T_LPAREN, &ast->lparen_token); - parseExceptionDeclaration(ast->exception_declaration); - match(T_RPAREN, &ast->rparen_token); - parseCompoundStatement(ast->statement); - node = new (_pool) ObjCCatchClauseListAST(ast); - return true; - } - return false; -} - -bool Parser::parseObjCFinallyClause(ObjCFinallyClauseAST *&node) -{ - DEBUG_THIS_RULE(); - if (LA() == T_AT && LA(2) == T_FINALLY) { - node = new (_pool) ObjCFinallyClauseAST; - node->at_token = consumeToken(); - node->finally_token = consumeToken(); - parseCompoundStatement(node->statement); - return true; - } - return false; -} diff --git a/src/shared/cplusplus/Parser.h b/src/shared/cplusplus/Parser.h index 4be9bdd903fe2c70a1af91c02e3eb0e5cecf6538..ab4449ee743b218427ff7c260896b53a00e38685 100644 --- a/src/shared/cplusplus/Parser.h +++ b/src/shared/cplusplus/Parser.h @@ -251,9 +251,6 @@ public: bool parseObjCTypeQualifiers(unsigned &type_qualifier); bool peekAtObjCContextKeyword(int kind); bool parseObjCContextKeyword(int kind, unsigned &in_token); - bool parseObjCTryBlockStatement(StatementAST *&node); - bool parseObjCCatchClause(ObjCCatchClauseListAST *&node); - bool parseObjCFinallyClause(ObjCFinallyClauseAST *&node); bool lookAtObjCSelector() const; diff --git a/tests/auto/cplusplus/ast/tst_ast.cpp b/tests/auto/cplusplus/ast/tst_ast.cpp index a97b3b29a81a9a0fd90392c4b32be488abcedfd2..14e82b6e8b025ae7cbf988d0db0055638bbdac35 100644 --- a/tests/auto/cplusplus/ast/tst_ast.cpp +++ b/tests/auto/cplusplus/ast/tst_ast.cpp @@ -79,7 +79,6 @@ private slots: void objc_protocol_forward_declaration_1(); void objc_protocol_definition_1(); void objc_method_attributes_1(); - void objc_exceptions(); // expressions with (square) brackets void normal_array_access(); @@ -785,22 +784,6 @@ void tst_AST::objc_method_attributes_1() QCOMPARE(unit->spell(unavailableAttr->identifier_token), "unavailable"); } -void tst_AST::objc_exceptions() -{ - const char *src = "\n" - "@try {@throw [NSException exceptionWithName:@\"FileNotFoundException\" reason:@\"Disk went wild.\" userInfo:nil];}\n" - "@catch (FileNotFoundException *e) { [e raise]; }\n" - "@catch (NSException *e) { @throw; }\n" - "@catch(...){}\n" - "@finally { }\n" - ; - - QSharedPointer<TranslationUnit> unit(parseStatement(src)); - - AST *ast = unit->ast(); - QVERIFY(ast); -} - void tst_AST::normal_array_access() { QSharedPointer<TranslationUnit> unit(parseDeclaration("\n" @@ -984,7 +967,8 @@ void tst_AST::objc_msg_send_expression_without_selector() "int f() {\n" " NSObject *obj = [[[NSObject alloc] init] autorelease];\n" " return [obj];\n" - "}", true)); + "}", + true)); AST *ast = unit->ast(); QVERIFY(ast);