C++: Make pointer declaration formatter more robust

- Abort on expanded tokens
- Abort on simple declarations starting with "class"/"struct"/"enum"
- Abort if rewritten declaration does not contain '*'/'&'

Change-Id: Ifddb6f20d6bc5c0afc3fcd1d742615198515a04c
Reviewed-by: Erik Verbruggen <erik.verbruggen@digia.com>
This commit is contained in:
Nikolai Kosjar
2013-02-07 09:02:56 +01:00
parent bd7dfeee92
commit aafbf2eaf0
4 changed files with 204 additions and 21 deletions

View File

@@ -106,9 +106,18 @@ protected:
bool visit(ForeachStatementAST *ast);
private:
class TokenRange {
public:
TokenRange() : start(0), end(0) {}
TokenRange(unsigned start, unsigned end) : start(start), end(end) {}
unsigned start;
unsigned end;
};
void processIfWhileForStatement(ExpressionAST *expression, Symbol *symbol);
void checkAndRewrite(Symbol *symbol, Range range, unsigned charactersToRemove = 0);
void checkAndRewrite(Symbol *symbol, TokenRange range, unsigned charactersToRemove = 0);
QString rewriteDeclaration(FullySpecifiedType type, const Name *name) const;
void printCandidate(AST *ast);
const CppRefactoringFilePtr m_cppRefactoringFile;
const Overview &m_overview;