summaryrefslogtreecommitdiff
path: root/src/plugins/cpptools/cpppointerdeclarationformatter.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins/cpptools/cpppointerdeclarationformatter.cpp')
-rw-r--r--src/plugins/cpptools/cpppointerdeclarationformatter.cpp46
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