Override Members: Allow overriding virtual synthetic members (e.g. equals(), hashCode(), toString(), etc.) in data classes
#KT-15563 Fixed
This commit is contained in:
@@ -474,6 +474,7 @@ These artifacts include extensions for the types available in the latter JDKs, s
|
||||
- [`KT-15602`](https://youtrack.jetbrains.com/issue/KT-15602) Extract Interface/Superclass: Disable "Make abstract" for inline/external/lateinit members
|
||||
- Extract Interface: Disable inline/external/lateinit members
|
||||
- [`KT-12704`](https://youtrack.jetbrains.com/issue/KT-12704), [`KT-15583`](https://youtrack.jetbrains.com/issue/KT-15583) Override/Implement Members: Support all nullability annotations respected by the Kotlin compiler
|
||||
- [`KT-15563`](https://youtrack.jetbrains.com/issue/KT-15563) Override Members: Allow overriding virtual synthetic members (e.g. equals(), hashCode(), toString(), etc.) in data classes
|
||||
|
||||
#### Intention actions, inspections and quickfixes
|
||||
|
||||
|
||||
+2
-3
@@ -27,8 +27,7 @@ class OverrideMembersHandler(private val preferConstructorParameters: Boolean =
|
||||
override fun collectMembersToGenerate(descriptor: ClassDescriptor, project: Project): Collection<OverrideMemberChooserObject> {
|
||||
val result = ArrayList<OverrideMemberChooserObject>()
|
||||
for (member in descriptor.unsubstitutedMemberScope.getContributedDescriptors()) {
|
||||
if (member is CallableMemberDescriptor
|
||||
&& (member.kind == CallableMemberDescriptor.Kind.FAKE_OVERRIDE || member.kind == CallableMemberDescriptor.Kind.DELEGATION)) {
|
||||
if (member is CallableMemberDescriptor && (member.kind != CallableMemberDescriptor.Kind.DECLARATION)) {
|
||||
val overridden = member.overriddenDescriptors
|
||||
if (overridden.any { it.modality == Modality.FINAL || Visibilities.isPrivate(it.visibility.normalize()) }) continue
|
||||
|
||||
@@ -52,7 +51,7 @@ class OverrideMembersHandler(private val preferConstructorParameters: Boolean =
|
||||
nonAbstractRealSupers
|
||||
}
|
||||
else {
|
||||
listOf(realSupers.first())
|
||||
listOf(realSupers.firstOrNull() ?: continue)
|
||||
}
|
||||
|
||||
for (realSuper in realSupersToUse) {
|
||||
|
||||
@@ -0,0 +1,3 @@
|
||||
data class Foo(val name: String) {
|
||||
<caret>
|
||||
}
|
||||
@@ -0,0 +1,5 @@
|
||||
data class Foo(val name: String) {
|
||||
override fun equals(other: Any?): Boolean {
|
||||
<selection>return super.equals(other)</selection>
|
||||
}
|
||||
}
|
||||
@@ -271,4 +271,8 @@ class OverrideImplementTest : AbstractOverrideImplementTest() {
|
||||
fun testTypeAliasNotExpanded() {
|
||||
doOverrideFileTest("test")
|
||||
}
|
||||
|
||||
fun testDataClassEquals() {
|
||||
doOverrideFileTest("equals")
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user