diff --git a/idea/src/org/jetbrains/kotlin/idea/actions/generate/KotlinGenerateEqualsAndHashcodeAction.kt b/idea/src/org/jetbrains/kotlin/idea/actions/generate/KotlinGenerateEqualsAndHashcodeAction.kt index ef8cc18a57a..2120d7fa269 100644 --- a/idea/src/org/jetbrains/kotlin/idea/actions/generate/KotlinGenerateEqualsAndHashcodeAction.kt +++ b/idea/src/org/jetbrains/kotlin/idea/actions/generate/KotlinGenerateEqualsAndHashcodeAction.kt @@ -250,7 +250,7 @@ class KotlinGenerateEqualsAndHashcodeAction : KotlinGenerateMemberActionBase : KotlinGenerateActionBase() { protected abstract fun prepareMembersInfo(klass: KtClassOrObject, project: Project, editor: Editor?): Info? protected abstract fun generateMembers(project: Project, editor: Editor?, info: Info): List + protected fun KtNamedFunction.replaceBody(generateBody: () -> KtExpression) { + bodyExpression?.replace(generateBody()) + } + override fun invoke(project: Project, editor: Editor, file: PsiFile) { if (!CodeInsightUtilBase.prepareEditorForWrite(editor)) return if (!FileDocumentManager.getInstance().requestWriting(editor.document, project)) return diff --git a/idea/src/org/jetbrains/kotlin/idea/actions/generate/KotlinGenerateToStringAction.kt b/idea/src/org/jetbrains/kotlin/idea/actions/generate/KotlinGenerateToStringAction.kt index c91fdfc002b..cc8e8db6914 100644 --- a/idea/src/org/jetbrains/kotlin/idea/actions/generate/KotlinGenerateToStringAction.kt +++ b/idea/src/org/jetbrains/kotlin/idea/actions/generate/KotlinGenerateToStringAction.kt @@ -181,7 +181,9 @@ class KotlinGenerateToStringAction : KotlinGenerateMemberActionBaseConstructor(x: Int, s: String) { + val x: Int + val s: String + + override fun hashCode(): Int +} \ No newline at end of file diff --git a/idea/testData/multiModuleQuickFix/generateEqualsInExpect/common/common.kt.after b/idea/testData/multiModuleQuickFix/generateEqualsInExpect/common/common.kt.after new file mode 100644 index 00000000000..884e286a59e --- /dev/null +++ b/idea/testData/multiModuleQuickFix/generateEqualsInExpect/common/common.kt.after @@ -0,0 +1,10 @@ +// "Generate 'equals()'" "true" +// TOOL: org.jetbrains.kotlin.idea.inspections.EqualsOrHashCodeInspection + +expect class WithConstructor(x: Int, s: String) { + val x: Int + val s: String + + override fun hashCode(): Int + override fun equals(other: Any?): Boolean +} \ No newline at end of file diff --git a/idea/testData/multiModuleQuickFix/generateEqualsInExpect/jvm/jvm.kt b/idea/testData/multiModuleQuickFix/generateEqualsInExpect/jvm/jvm.kt new file mode 100644 index 00000000000..8b0ee2ce909 --- /dev/null +++ b/idea/testData/multiModuleQuickFix/generateEqualsInExpect/jvm/jvm.kt @@ -0,0 +1 @@ +actual class WithConstructor(actual val x: Int, actual val s: String) \ No newline at end of file diff --git a/idea/testData/multiModuleQuickFix/generateEqualsInExpect/jvm/jvm.kt.after b/idea/testData/multiModuleQuickFix/generateEqualsInExpect/jvm/jvm.kt.after new file mode 100644 index 00000000000..8b0ee2ce909 --- /dev/null +++ b/idea/testData/multiModuleQuickFix/generateEqualsInExpect/jvm/jvm.kt.after @@ -0,0 +1 @@ +actual class WithConstructor(actual val x: Int, actual val s: String) \ No newline at end of file diff --git a/idea/testData/multiModuleQuickFix/generateHashCodeInExpect/common/common.kt b/idea/testData/multiModuleQuickFix/generateHashCodeInExpect/common/common.kt new file mode 100644 index 00000000000..4f661c9c14c --- /dev/null +++ b/idea/testData/multiModuleQuickFix/generateHashCodeInExpect/common/common.kt @@ -0,0 +1,9 @@ +// "Generate 'hashCode()'" "true" +// TOOL: org.jetbrains.kotlin.idea.inspections.EqualsOrHashCodeInspection + +expect class WithConstructor(x: Int, s: String) { + val x: Int + val s: String + + override fun equals(other: Any?): Boolean +} \ No newline at end of file diff --git a/idea/testData/multiModuleQuickFix/generateHashCodeInExpect/common/common.kt.after b/idea/testData/multiModuleQuickFix/generateHashCodeInExpect/common/common.kt.after new file mode 100644 index 00000000000..1e6a73def29 --- /dev/null +++ b/idea/testData/multiModuleQuickFix/generateHashCodeInExpect/common/common.kt.after @@ -0,0 +1,10 @@ +// "Generate 'hashCode()'" "true" +// TOOL: org.jetbrains.kotlin.idea.inspections.EqualsOrHashCodeInspection + +expect class WithConstructor(x: Int, s: String) { + val x: Int + val s: String + + override fun equals(other: Any?): Boolean + override fun hashCode(): Int +} \ No newline at end of file diff --git a/idea/testData/multiModuleQuickFix/generateHashCodeInExpect/jvm/jvm.kt b/idea/testData/multiModuleQuickFix/generateHashCodeInExpect/jvm/jvm.kt new file mode 100644 index 00000000000..8b0ee2ce909 --- /dev/null +++ b/idea/testData/multiModuleQuickFix/generateHashCodeInExpect/jvm/jvm.kt @@ -0,0 +1 @@ +actual class WithConstructor(actual val x: Int, actual val s: String) \ No newline at end of file diff --git a/idea/testData/multiModuleQuickFix/generateHashCodeInExpect/jvm/jvm.kt.after b/idea/testData/multiModuleQuickFix/generateHashCodeInExpect/jvm/jvm.kt.after new file mode 100644 index 00000000000..8b0ee2ce909 --- /dev/null +++ b/idea/testData/multiModuleQuickFix/generateHashCodeInExpect/jvm/jvm.kt.after @@ -0,0 +1 @@ +actual class WithConstructor(actual val x: Int, actual val s: String) \ No newline at end of file diff --git a/idea/tests/org/jetbrains/kotlin/idea/quickfix/QuickFixMultiModuleTestGenerated.java b/idea/tests/org/jetbrains/kotlin/idea/quickfix/QuickFixMultiModuleTestGenerated.java index 008d633204e..24ef00eec03 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/quickfix/QuickFixMultiModuleTestGenerated.java +++ b/idea/tests/org/jetbrains/kotlin/idea/quickfix/QuickFixMultiModuleTestGenerated.java @@ -259,6 +259,16 @@ public class QuickFixMultiModuleTestGenerated extends AbstractQuickFixMultiModul runTest("idea/testData/multiModuleQuickFix/functionTypeReceiverToParameterByImpl/"); } + @TestMetadata("generateEqualsInExpect") + public void testGenerateEqualsInExpect() throws Exception { + runTest("idea/testData/multiModuleQuickFix/generateEqualsInExpect/"); + } + + @TestMetadata("generateHashCodeInExpect") + public void testGenerateHashCodeInExpect() throws Exception { + runTest("idea/testData/multiModuleQuickFix/generateHashCodeInExpect/"); + } + @TestMetadata("implementAbstractExpectMemberInheritedFromInterface") public void testImplementAbstractExpectMemberInheritedFromInterface() throws Exception { runTest("idea/testData/multiModuleQuickFix/implementAbstractExpectMemberInheritedFromInterface/");