Override completion in expect class should behave differently

Caret placement is at the end of new fun/property

#KT-25313 Fixed
This commit is contained in:
Alexander Podkhalyuzin
2018-09-07 23:15:43 +03:00
parent d571d0ad51
commit baa0f2dc1b
8 changed files with 40 additions and 15 deletions
@@ -96,6 +96,7 @@ private fun moveCaretIntoGeneratedElementDocumentUnblocked(editor: Editor, eleme
}
}
editor.moveCaret(element.endOffset)
return false
}
@@ -213,4 +214,4 @@ fun <T : KtDeclaration> insertMembersAfter(
fun <T : KtDeclaration> insertMember(editor: Editor?, classOrObject: KtClassOrObject, declaration: T, anchor: PsiElement? = null): T {
return insertMembersAfter(editor, classOrObject, listOf(declaration), anchor).single()
}
}
@@ -192,14 +192,17 @@ private fun FunctionDescriptor.wrap(): FunctionDescriptor {
private fun generateProperty(project: Project, descriptor: PropertyDescriptor, bodyType: OverrideMemberChooserObject.BodyType): KtProperty {
val newDescriptor = descriptor.wrap()
val body = buildString {
append("\nget()")
append(" = ")
append(generateUnsupportedOrSuperCall(project, descriptor, bodyType))
if (descriptor.isVar) {
append("\nset(value) {}")
}
}
val body =
if (bodyType != OverrideMemberChooserObject.BodyType.NO_BODY) {
buildString {
append("\nget()")
append(" = ")
append(generateUnsupportedOrSuperCall(project, descriptor, bodyType))
if (descriptor.isVar) {
append("\nset(value) {}")
}
}
} else ""
return KtPsiFactory(project).createProperty(OVERRIDE_RENDERER.render(newDescriptor) + body)
}