diff --git a/idea/src/org/jetbrains/kotlin/idea/actions/generate/KotlinGenerateEqualsWizard.kt b/idea/src/org/jetbrains/kotlin/idea/actions/generate/KotlinGenerateEqualsWizard.kt index df993100723..6f8edc736c2 100644 --- a/idea/src/org/jetbrains/kotlin/idea/actions/generate/KotlinGenerateEqualsWizard.kt +++ b/idea/src/org/jetbrains/kotlin/idea/actions/generate/KotlinGenerateEqualsWizard.kt @@ -25,7 +25,9 @@ import com.intellij.openapi.ui.VerticalFlowLayout import com.intellij.refactoring.classMembers.AbstractMemberInfoModel import com.intellij.ui.NonFocusableCheckBox import com.intellij.util.containers.HashMap +import org.jetbrains.kotlin.descriptors.PropertyDescriptor import org.jetbrains.kotlin.idea.KotlinBundle +import org.jetbrains.kotlin.idea.caches.resolve.unsafeResolveToDescriptor import org.jetbrains.kotlin.idea.core.isInheritable import org.jetbrains.kotlin.idea.refactoring.memberInfo.KotlinMemberInfo import org.jetbrains.kotlin.idea.refactoring.memberInfo.KotlinMemberSelectionPanel @@ -73,7 +75,12 @@ class KotlinGenerateEqualsWizard( } else null } - private fun createMemberInfo(it: KtNamedDeclaration) = KotlinMemberInfo(it).apply { isChecked = true } + private fun createMemberInfo(it: KtNamedDeclaration): KotlinMemberInfo { + return KotlinMemberInfo(it).apply { + val descriptor = it.unsafeResolveToDescriptor() + isChecked = (descriptor as? PropertyDescriptor)?.getter?.isDefault ?: true + } + } override fun getPsiClass() = klass 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 31a935c1046..27ee86e3df6 100644 --- a/idea/src/org/jetbrains/kotlin/idea/actions/generate/KotlinGenerateToStringAction.kt +++ b/idea/src/org/jetbrains/kotlin/idea/actions/generate/KotlinGenerateToStringAction.kt @@ -28,6 +28,7 @@ import com.intellij.util.IncorrectOperationException import org.jetbrains.kotlin.builtins.KotlinBuiltIns import org.jetbrains.kotlin.descriptors.ClassDescriptor import org.jetbrains.kotlin.descriptors.FunctionDescriptor +import org.jetbrains.kotlin.descriptors.PropertyDescriptor import org.jetbrains.kotlin.descriptors.VariableDescriptor import org.jetbrains.kotlin.idea.KotlinBundle import org.jetbrains.kotlin.idea.caches.resolve.analyzeWithContent @@ -168,11 +169,12 @@ class KotlinGenerateToStringAction : KotlinGenerateMemberActionBase(memberChooserObjects, true, true, project, false, headerPanel).apply { title = KotlinBundle.message("action.generate.tostring.name") setCopyJavadocVisible(false) - selectElements(memberChooserObjects) + selectElements(selectedElements) } if (!klass.hasExpectModifier()) { diff --git a/idea/src/org/jetbrains/kotlin/idea/actions/generate/utils.kt b/idea/src/org/jetbrains/kotlin/idea/actions/generate/utils.kt index 97c3694757e..28f7b54f0e5 100644 --- a/idea/src/org/jetbrains/kotlin/idea/actions/generate/utils.kt +++ b/idea/src/org/jetbrains/kotlin/idea/actions/generate/utils.kt @@ -41,8 +41,7 @@ fun getPropertiesToUseInGeneratedMember(classOrObject: KtClassOrObject): List().filterTo(this) { val descriptor = it.unsafeResolveToDescriptor() when (descriptor) { - is ValueParameterDescriptor -> true - is PropertyDescriptor -> descriptor.getter?.isDefault ?: true + is ValueParameterDescriptor, is PropertyDescriptor -> true else -> false } } diff --git a/idea/testData/codeInsight/generate/equalsWithHashCode/customAccessors.kt b/idea/testData/codeInsight/generate/equalsWithHashCode/customAccessors.kt index 298e17ea97c..458a61fda6d 100644 --- a/idea/testData/codeInsight/generate/equalsWithHashCode/customAccessors.kt +++ b/idea/testData/codeInsight/generate/equalsWithHashCode/customAccessors.kt @@ -4,5 +4,8 @@ class Test { field = value.toUpperCase() } var name: String = "" + val age by lazy { 15 + 10 } + val color: String + get() = "Purple" } \ No newline at end of file diff --git a/idea/testData/codeInsight/generate/equalsWithHashCode/customAccessors.kt.after b/idea/testData/codeInsight/generate/equalsWithHashCode/customAccessors.kt.after index ed7b81a0f71..387399d4bce 100644 --- a/idea/testData/codeInsight/generate/equalsWithHashCode/customAccessors.kt.after +++ b/idea/testData/codeInsight/generate/equalsWithHashCode/customAccessors.kt.after @@ -4,6 +4,10 @@ class Test { field = value.toUpperCase() } var name: String = "" + val age by lazy { 15 + 10 } + val color: String + get() = "Purple" + override fun equals(other: Any?): Boolean { if (this === other) return true if (javaClass != other?.javaClass) return false @@ -12,6 +16,8 @@ class Test { if (serial != other.serial) return false if (name != other.name) return false + if (age != other.age) return false + if (color != other.color) return false return true } @@ -19,6 +25,8 @@ class Test { override fun hashCode(): Int { var result = serial.hashCode() result = 31 * result + name.hashCode() + result = 31 * result + age + result = 31 * result + color.hashCode() return result } diff --git a/idea/testData/codeInsight/generate/equalsWithHashCode/explicitDefaultAccessors.kt.after b/idea/testData/codeInsight/generate/equalsWithHashCode/explicitDefaultAccessors.kt.after index 4d778fc1f50..1613040da72 100644 --- a/idea/testData/codeInsight/generate/equalsWithHashCode/explicitDefaultAccessors.kt.after +++ b/idea/testData/codeInsight/generate/equalsWithHashCode/explicitDefaultAccessors.kt.after @@ -8,11 +8,19 @@ class Test { override fun equals(other: Any?): Boolean { if (this === other) return true if (javaClass != other?.javaClass) return false + + other as Test + + if (serial != other.serial) return false + if (name != other.name) return false + return true } override fun hashCode(): Int { - return javaClass.hashCode() + var result = serial.hashCode() + result = 31 * result + name.hashCode() + return result } } \ No newline at end of file diff --git a/idea/testData/codeInsight/generate/toString/multipeTemplates/customAccessors.kt b/idea/testData/codeInsight/generate/toString/multipeTemplates/customAccessors.kt index 883aba89717..73ae23a142b 100644 --- a/idea/testData/codeInsight/generate/toString/multipeTemplates/customAccessors.kt +++ b/idea/testData/codeInsight/generate/toString/multipeTemplates/customAccessors.kt @@ -5,5 +5,8 @@ class Test { field = value.toUpperCase() } var name: String = "" + val age by lazy { 15 + 10 } + val color: String + get() = "Purple" } \ No newline at end of file diff --git a/idea/testData/codeInsight/generate/toString/multipeTemplates/customAccessors.kt.after b/idea/testData/codeInsight/generate/toString/multipeTemplates/customAccessors.kt.after index d34f18d212e..bdf9e6ffe0f 100644 --- a/idea/testData/codeInsight/generate/toString/multipeTemplates/customAccessors.kt.after +++ b/idea/testData/codeInsight/generate/toString/multipeTemplates/customAccessors.kt.after @@ -5,10 +5,16 @@ class Test { field = value.toUpperCase() } var name: String = "" + val age by lazy { 15 + 10 } + val color: String + get() = "Purple" + override fun toString(): String { return "Test(" + "serial='$serial', " + - "name='$name'" + + "name='$name', " + + "age=$age, " + + "color='$color'" + ")" } diff --git a/idea/testData/codeInsight/generate/toString/singleTemplate/customAccessors.kt b/idea/testData/codeInsight/generate/toString/singleTemplate/customAccessors.kt index 298e17ea97c..458a61fda6d 100644 --- a/idea/testData/codeInsight/generate/toString/singleTemplate/customAccessors.kt +++ b/idea/testData/codeInsight/generate/toString/singleTemplate/customAccessors.kt @@ -4,5 +4,8 @@ class Test { field = value.toUpperCase() } var name: String = "" + val age by lazy { 15 + 10 } + val color: String + get() = "Purple" } \ No newline at end of file diff --git a/idea/testData/codeInsight/generate/toString/singleTemplate/customAccessors.kt.after b/idea/testData/codeInsight/generate/toString/singleTemplate/customAccessors.kt.after index a4375357c96..d92ec39cbbd 100644 --- a/idea/testData/codeInsight/generate/toString/singleTemplate/customAccessors.kt.after +++ b/idea/testData/codeInsight/generate/toString/singleTemplate/customAccessors.kt.after @@ -4,8 +4,12 @@ class Test { field = value.toUpperCase() } var name: String = "" + val age by lazy { 15 + 10 } + val color: String + get() = "Purple" + override fun toString(): String { - return "Test(serial='$serial', name='$name')" + return "Test(serial='$serial', name='$name', age=$age, color='$color')" } } \ No newline at end of file diff --git a/idea/testData/codeInsight/generate/toString/singleTemplate/explicitDefaultAccessors.kt.after b/idea/testData/codeInsight/generate/toString/singleTemplate/explicitDefaultAccessors.kt.after index 7f0b6ee6628..1968240cc9a 100644 --- a/idea/testData/codeInsight/generate/toString/singleTemplate/explicitDefaultAccessors.kt.after +++ b/idea/testData/codeInsight/generate/toString/singleTemplate/explicitDefaultAccessors.kt.after @@ -6,7 +6,7 @@ class Test { get override fun toString(): String { - return "Test()" + return "Test(serial='$serial', name='$name')" } } \ No newline at end of file