From 44aa96fcf5f7f9ff88d8eeaba0d64e3d7e228b6f Mon Sep 17 00:00:00 2001 From: Roberto Raggi <roberto.raggi@nokia.com> Date: Thu, 18 Jun 2009 14:13:44 +0200 Subject: [PATCH] Disable the undefined-type check for all the C-cast expressions. --- src/plugins/cpptools/cppmodelmanager.cpp | 35 ++++++++++-------------- 1 file changed, 15 insertions(+), 20 deletions(-) diff --git a/src/plugins/cpptools/cppmodelmanager.cpp b/src/plugins/cpptools/cppmodelmanager.cpp index b00596df85c..b1ed719a365 100644 --- a/src/plugins/cpptools/cppmodelmanager.cpp +++ b/src/plugins/cpptools/cppmodelmanager.cpp @@ -529,27 +529,22 @@ protected: return true; } - virtual bool visit(BinaryExpressionAST *ast) + virtual bool visit(CastExpressionAST *ast) { - if (ast->right_expression) { - if (CastExpressionAST *right_cast_expr = ast->right_expression->asCastExpression()) { - if (right_cast_expr->type_id) { - if (TypeIdAST *right_cast_type_id = right_cast_expr->type_id->asTypeId()) { - SpecifierAST *type_specifier = right_cast_type_id->type_specifier; - if (! right_cast_type_id->declarator && type_specifier && ! type_specifier->next && - type_specifier->asNamedTypeSpecifier() && right_cast_expr->expression && - right_cast_expr->expression->asUnaryExpression()) { - // this ast node is ambigious, e.g. - // 1 + (a) + b - // it can be parsed as - // 1 + ((a) + b) - // or - // 1 + (a) (+b) - accept(ast->left_expression); - accept(right_cast_expr->expression); - return false; - } - } + if (ast->lparen_token && ast->type_id && ast->rparen_token && ast->expression) { + if (TypeIdAST *cast_type_id = ast->type_id->asTypeId()) { + SpecifierAST *type_specifier = cast_type_id->type_specifier; + if (! cast_type_id->declarator && type_specifier && ! type_specifier->next && + type_specifier->asNamedTypeSpecifier() && ast->expression && + ast->expression->asUnaryExpression()) { + // this ast node is ambigious, e.g. + // (a) + b + // it can be parsed as + // ((a) + b) + // or + // (a) (+b) + accept(ast->expression); + return false; } } } -- GitLab