forked from qt-creator/qt-creator
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:
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user