diff options
Diffstat (limited to 'src/plugins/cpptools/cpppointerdeclarationformatter.cpp')
-rw-r--r-- | src/plugins/cpptools/cpppointerdeclarationformatter.cpp | 46 |
1 files changed, 20 insertions, 26 deletions
diff --git a/src/plugins/cpptools/cpppointerdeclarationformatter.cpp b/src/plugins/cpptools/cpppointerdeclarationformatter.cpp index a40316f290..edcb105028 100644 --- a/src/plugins/cpptools/cpppointerdeclarationformatter.cpp +++ b/src/plugins/cpptools/cpppointerdeclarationformatter.cpp @@ -30,9 +30,6 @@ #include "cpppointerdeclarationformatter.h" -#include <AST.h> - -#include <QtGlobal> #include <QTextCursor> #define DEBUG_OUTPUT 0 @@ -118,7 +115,7 @@ static unsigned firstTypeSpecifierWithoutFollowingAttribute( PointerDeclarationFormatter::PointerDeclarationFormatter( const CppRefactoringFilePtr refactoringFile, - const Overview &overview, + Overview &overview, CursorHandling cursorHandling) : ASTVisitor(refactoringFile->cppDocument()->translationUnit()) , m_cppRefactoringFile(refactoringFile) @@ -219,7 +216,7 @@ bool PointerDeclarationFormatter::visit(SimpleDeclarationAST *ast) range.end = lastActivationToken; - checkAndRewrite(symbol, range, charactersToRemove); + checkAndRewrite(declarator, symbol, range, charactersToRemove); } return true; } @@ -253,7 +250,7 @@ bool PointerDeclarationFormatter::visit(FunctionDefinitionAST *ast) CHECK_RV(foundBegin, "Declaration without attributes not supported", true); TokenRange range(firstActivationToken, lastActivationToken); - checkAndRewrite(symbol, range); + checkAndRewrite(declarator, symbol, range); return true; } @@ -274,7 +271,7 @@ bool PointerDeclarationFormatter::visit(ParameterDeclarationAST *ast) : ast->lastToken() - 1; TokenRange range(ast->firstToken(), lastActivationToken); - checkAndRewrite(symbol, range); + checkAndRewrite(declarator, symbol, range); return true; } @@ -299,7 +296,7 @@ bool PointerDeclarationFormatter::visit(ForeachStatementAST *ast) : declarator->lastToken() - 1; TokenRange range(firstSpecifier->firstToken(), lastActivationToken); - checkAndRewrite(symbol, range); + checkAndRewrite(declarator, symbol, range); return true; } @@ -362,7 +359,7 @@ void PointerDeclarationFormatter::processIfWhileForStatement(ExpressionAST *expr // Specify activation range TokenRange range(condition->firstToken(), declarator->equal_token - 1); - checkAndRewrite(symbol, range); + checkAndRewrite(declarator, symbol, range); } /*! @@ -372,7 +369,9 @@ void PointerDeclarationFormatter::processIfWhileForStatement(ExpressionAST *expr \param symbol the symbol to be rewritten \param range the substitution range in the file */ -void PointerDeclarationFormatter::checkAndRewrite(Symbol *symbol, TokenRange tokenRange, +void PointerDeclarationFormatter::checkAndRewrite(DeclaratorAST *declarator, + Symbol *symbol, + TokenRange tokenRange, unsigned charactersToRemove) { CHECK_R(tokenRange.end > 0, "TokenRange invalid1"); @@ -411,7 +410,17 @@ void PointerDeclarationFormatter::checkAndRewrite(Symbol *symbol, TokenRange tok || originalDeclaration.contains(QLatin1Char('*')), "No pointer or references"); // Does the rewritten declaration (part) differs from the original source (part)? - QString rewrittenDeclaration = rewriteDeclaration(type, symbol->name()); + QString rewrittenDeclaration; + const Name *name = symbol->name(); + if (name) { + if (name->isOperatorNameId() + || (name->isQualifiedNameId() + && name->asQualifiedNameId()->name()->isOperatorNameId())) { + const QString operatorText = m_cppRefactoringFile->textOf(declarator->core_declarator); + m_overview.includeWhiteSpaceInOperatorName = operatorText.contains(QLatin1Char(' ')); + } + } + rewrittenDeclaration = m_overview.prettyType(type, name); rewrittenDeclaration.remove(0, charactersToRemove); CHECK_R(originalDeclaration != rewrittenDeclaration, "Rewritten is same as original"); @@ -444,21 +453,6 @@ void PointerDeclarationFormatter::checkAndRewrite(Symbol *symbol, TokenRange tok qDebug() << "Replacement operation failed"; } -/*! Rewrite/format the given type and name. */ -QString PointerDeclarationFormatter::rewriteDeclaration(FullySpecifiedType type, const Name *name) - const -{ - CHECK_RV(type.isValid(), "Invalid type", QString()); - - const char *identifier = 0; - if (const Name *declarationName = name) { - if (const Identifier *id = declarationName->identifier()) - identifier = id->chars(); - } - - return m_overview.prettyType(type, QLatin1String(identifier)); -} - void PointerDeclarationFormatter::printCandidate(AST *ast) { #if DEBUG_OUTPUT |