CppEditor: Trigger "Convert to Pointer" only in function scope

Change-Id: I449330e9d5811f88b359c82726154065b3a6b494
Task-number: QTCREATORBUG-12866
Reviewed-by: Erik Verbruggen <erik.verbruggen@digia.com>
Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
This commit is contained in:
Nikolai Kosjar
2014-08-21 09:30:27 +02:00
parent c82f64e974
commit 461a54bd2d
2 changed files with 41 additions and 3 deletions

View File

@@ -4152,15 +4152,25 @@ void ConvertFromAndToPointer::match(const CppQuickFixInterface &interface,
return;
SimpleDeclarationAST *simpleDeclaration = 0;
DeclaratorAST *declarator = 0;
bool isFunctionLocal = false;
bool isClassLocal = false;
ConvertFromAndToPointerOp::Mode mode = ConvertFromAndToPointerOp::FromVariable;
for (int i = path.count() - 2; i >= 0; --i) {
AST *ast = path.at(i);
if (!declarator && (declarator = ast->asDeclarator()))
continue;
else if (!simpleDeclaration && (simpleDeclaration = ast->asSimpleDeclaration()))
if (!simpleDeclaration && (simpleDeclaration = ast->asSimpleDeclaration()))
continue;
if (declarator && simpleDeclaration) {
if (ast->asClassSpecifier()) {
isClassLocal = true;
} else if (ast->asFunctionDefinition() && !isClassLocal) {
isFunctionLocal = true;
break;
}
}
}
if (!simpleDeclaration || !declarator)
if (!isFunctionLocal || !simpleDeclaration || !declarator)
return;
Symbol *symbol = 0;