forked from qt-creator/qt-creator
CppEditor: Fix triggering AssignToLocalVariable
Do not trigger for functions inside a function call. Task-number: QTCREATORBUG-9510 Change-Id: I908483fe80ff3ac0f737b21061375e206c1b1d1d Reviewed-by: Nikolai Kosjar <nikolai.kosjar@digia.com>
This commit is contained in:
committed by
Nikolai Kosjar
parent
bd7150ab89
commit
d2faf880f3
@@ -199,6 +199,7 @@ private slots:
|
|||||||
void test_quickfix_AssignToLocalVariable_noVoidMemberFunction();
|
void test_quickfix_AssignToLocalVariable_noVoidMemberFunction();
|
||||||
void test_quickfix_AssignToLocalVariable_noVoidStaticMemberFunction();
|
void test_quickfix_AssignToLocalVariable_noVoidStaticMemberFunction();
|
||||||
void test_quickfix_AssignToLocalVariable_noFunctionInExpression();
|
void test_quickfix_AssignToLocalVariable_noFunctionInExpression();
|
||||||
|
void test_quickfix_AssignToLocalVariable_noFunctionInFunction();
|
||||||
void test_quickfix_AssignToLocalVariable_noReturnClass();
|
void test_quickfix_AssignToLocalVariable_noReturnClass();
|
||||||
void test_quickfix_AssignToLocalVariable_noReturnFunc();
|
void test_quickfix_AssignToLocalVariable_noReturnFunc();
|
||||||
void test_quickfix_AssignToLocalVariable_noSignatureMatch();
|
void test_quickfix_AssignToLocalVariable_noSignatureMatch();
|
||||||
|
@@ -2091,6 +2091,22 @@ void CppEditorPlugin::test_quickfix_AssignToLocalVariable_noFunctionInExpression
|
|||||||
data.run(&factory);
|
data.run(&factory);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Check: No trigger for functions in functions. (QTCREATORBUG-9510)
|
||||||
|
void CppEditorPlugin::test_quickfix_AssignToLocalVariable_noFunctionInFunction()
|
||||||
|
{
|
||||||
|
const QByteArray original =
|
||||||
|
"int foo(int a, int b) {return a + b;}\n"
|
||||||
|
"int bar(int a) {return a;}\n"
|
||||||
|
"void baz() {\n"
|
||||||
|
" int a = foo(ba@r(), bar());\n"
|
||||||
|
"}\n";
|
||||||
|
const QByteArray expected = original + "\n";
|
||||||
|
|
||||||
|
AssignToLocalVariable factory;
|
||||||
|
TestCase data(original, expected);
|
||||||
|
data.run(&factory);
|
||||||
|
}
|
||||||
|
|
||||||
/// Check: No trigger for functions in return statements (classes).
|
/// Check: No trigger for functions in return statements (classes).
|
||||||
void CppEditorPlugin::test_quickfix_AssignToLocalVariable_noReturnClass()
|
void CppEditorPlugin::test_quickfix_AssignToLocalVariable_noReturnClass()
|
||||||
{
|
{
|
||||||
|
@@ -4227,6 +4227,8 @@ void AssignToLocalVariable::match(const CppQuickFixInterface &interface, QuickFi
|
|||||||
return;
|
return;
|
||||||
if (path.at(i - 1)->asReturnStatement())
|
if (path.at(i - 1)->asReturnStatement())
|
||||||
return;
|
return;
|
||||||
|
if (path.at(i - 1)->asCall())
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (MemberAccessAST *member = path.at(i + 1)->asMemberAccess()) { // member
|
if (MemberAccessAST *member = path.at(i + 1)->asMemberAccess()) { // member
|
||||||
@@ -4261,6 +4263,8 @@ void AssignToLocalVariable::match(const CppQuickFixInterface &interface, QuickFi
|
|||||||
return;
|
return;
|
||||||
if (path.at(i - 1)->asReturnStatement())
|
if (path.at(i - 1)->asReturnStatement())
|
||||||
return;
|
return;
|
||||||
|
if (path.at(i - 1)->asCall())
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
if (NamedTypeSpecifierAST *ts = path.at(i + 2)->asNamedTypeSpecifier()) {
|
if (NamedTypeSpecifierAST *ts = path.at(i + 2)->asNamedTypeSpecifier()) {
|
||||||
nameAST = ts->name->asSimpleName();
|
nameAST = ts->name->asSimpleName();
|
||||||
|
Reference in New Issue
Block a user