Implement members: fix it works correctly if primary constructor has implemented member

#KT-37312 Fixed
This commit is contained in:
Toshiaki Kameyama
2020-03-11 19:21:48 +09:00
committed by Ilya Kirillov
parent 5eabc1117f
commit e455e926aa
8 changed files with 95 additions and 1 deletions
@@ -36,6 +36,7 @@ import org.jetbrains.kotlin.idea.search.usagesSearch.descriptor
import org.jetbrains.kotlin.psi.KtClassOrObject
import org.jetbrains.kotlin.psi.KtDeclaration
import org.jetbrains.kotlin.psi.KtFile
import org.jetbrains.kotlin.psi.KtParameter
import org.jetbrains.kotlin.psi.psiUtil.getNonStrictParentOfType
import org.jetbrains.kotlin.psi.psiUtil.prevSiblingOfSameType
import org.jetbrains.kotlin.psi.psiUtil.startOffset
@@ -147,7 +148,7 @@ abstract class OverrideImplementMembersHandler : LanguageCodeInsightActionHandle
fun ClassDescriptor.findElement(memberDescriptor: CallableMemberDescriptor): KtDeclaration? {
return implementedElements[memberDescriptor]
?: (findCallableMemberBySignature(memberDescriptor)?.source?.getPsi() as? KtDeclaration)
?.takeIf { it != classOrObject }
?.takeIf { it != classOrObject && it !is KtParameter }
?.also { implementedElements[memberDescriptor] = it }
}