diff --git a/plugins/clang/codegen/adaptsignatureassistant.cpp b/plugins/clang/codegen/adaptsignatureassistant.cpp --- a/plugins/clang/codegen/adaptsignatureassistant.cpp +++ b/plugins/clang/codegen/adaptsignatureassistant.cpp @@ -48,7 +48,7 @@ bool isConstructor(const Declaration *functionDecl) { - auto classFun = dynamic_cast(functionDecl); + auto classFun = dynamic_cast(DUChainUtils::declarationForDefinition(const_cast(functionDecl))); return classFun && classFun->isConstructor(); } diff --git a/plugins/clang/tests/test_assistants.cpp b/plugins/clang/tests/test_assistants.cpp --- a/plugins/clang/tests/test_assistants.cpp +++ b/plugins/clang/tests/test_assistants.cpp @@ -484,6 +484,14 @@ << "class Foo { Foo(char c); };" << "Foo::Foo(char c)\n{}"; + // see https://bugs.kde.org/show_bug.cgi?id=365420 + QTest::newRow("no_retval_on_ctor_while_editing_definition") + << "class Foo {\nFoo(int a); \n};" + << "Foo::Foo(int a)\n{}" + << (QList() << StateChange(Testbed::CppDoc, Range(0,13,0,14), QStringLiteral("b"), SHOULD_ASSIST)) + << "class Foo {\nFoo(int b); \n};" + << "Foo::Foo(int b)\n{}"; + // see https://bugs.kde.org/show_bug.cgi?id=298511 QTest::newRow("change_return_type_header") << "struct Foo { int bar(); };"