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:
+8
@@ -0,0 +1,8 @@
|
||||
interface Interface {
|
||||
var field: Int
|
||||
}
|
||||
|
||||
expect class SClass : Interface {
|
||||
override<caret>
|
||||
}
|
||||
// ELEMENT_TEXT: "override var field: Int"
|
||||
+8
@@ -0,0 +1,8 @@
|
||||
interface Interface {
|
||||
var field: Int
|
||||
}
|
||||
|
||||
expect class SClass : Interface {
|
||||
override var field: Int<caret>
|
||||
}
|
||||
// ELEMENT_TEXT: "override var field: Int"
|
||||
+5
@@ -491,6 +491,11 @@ public class BasicCompletionHandlerTestGenerated extends AbstractBasicCompletion
|
||||
KotlinTestUtils.assertAllTestsPresentByMetadata(this.getClass(), new File("idea/idea-completion/testData/handlers/basic/override"), Pattern.compile("^([^.]+)\\.kt$"), TargetBackend.ANY, true);
|
||||
}
|
||||
|
||||
@TestMetadata("ExpectClassValOverride.kt")
|
||||
public void testExpectClassValOverride() throws Exception {
|
||||
runTest("idea/idea-completion/testData/handlers/basic/override/ExpectClassValOverride.kt");
|
||||
}
|
||||
|
||||
@TestMetadata("ImplementFunction.kt")
|
||||
public void testImplementFunction() throws Exception {
|
||||
runTest("idea/idea-completion/testData/handlers/basic/override/ImplementFunction.kt");
|
||||
|
||||
@@ -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()
|
||||
}
|
||||
}
|
||||
|
||||
+11
-8
@@ -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)
|
||||
}
|
||||
|
||||
|
||||
+3
-3
@@ -1,9 +1,9 @@
|
||||
// WITH_RUNTIME
|
||||
// DISABLE-ERRORS
|
||||
interface T<X> {
|
||||
val <caret>foo: X
|
||||
val foo: X
|
||||
}
|
||||
|
||||
enum class E(override val foo: Int) : T<Int> {
|
||||
enum class E(override val foo: Int<caret>) : T<Int> {
|
||||
A, B, C
|
||||
}
|
||||
}
|
||||
|
||||
+2
-2
@@ -1,14 +1,14 @@
|
||||
// WITH_RUNTIME
|
||||
// DISABLE-ERRORS
|
||||
interface T<X> {
|
||||
val <caret>foo: X
|
||||
val foo: X
|
||||
}
|
||||
|
||||
class U(override val foo: String) : T<String> {
|
||||
|
||||
}
|
||||
|
||||
class V(override val foo: Int) : T<Int> {
|
||||
class V(override val foo: Int<caret>) : T<Int> {
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -3,4 +3,4 @@ interface I {
|
||||
val foo: Int
|
||||
}
|
||||
|
||||
<caret>class A(override val foo: Int) : I
|
||||
class A(override val foo: Int<caret>) : I
|
||||
|
||||
Reference in New Issue
Block a user