Skip to content

Commit ed1d4ad

Browse files
committed
Simplify code based upon PR comments
1 parent c5c4f51 commit ed1d4ad

File tree

1 file changed

+12
-19
lines changed

1 file changed

+12
-19
lines changed

server/src/main/kotlin/org/javacs/kt/overridemembers/OverrideMembers.kt

Lines changed: 12 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ import org.jetbrains.kotlin.descriptors.ClassConstructorDescriptor
2222
import org.jetbrains.kotlin.descriptors.FunctionDescriptor
2323
import org.jetbrains.kotlin.descriptors.isInterface
2424
import org.jetbrains.kotlin.descriptors.PropertyDescriptor
25+
import org.jetbrains.kotlin.descriptors.MemberDescriptor
2526
import org.jetbrains.kotlin.js.resolve.diagnostics.findPsi
2627
import org.jetbrains.kotlin.psi.psiUtil.endOffset
2728
import org.jetbrains.kotlin.psi.psiUtil.isAbstract
@@ -112,11 +113,9 @@ private fun getUnimplementedMembersStubs(file: CompiledFile, kotlinClass: KtClas
112113
private fun ClassDescriptor.canBeExtended() = this.kind.isInterface ||
113114
this.modality == Modality.ABSTRACT ||
114115
this.modality == Modality.OPEN
115-
116-
private fun FunctionDescriptor.canBeOverriden() = (Modality.ABSTRACT == this.modality || Modality.OPEN == this.modality) && Modality.FINAL != this.modality && this.visibility != DescriptorVisibilities.PRIVATE && this.visibility != DescriptorVisibilities.PROTECTED
117-
118-
private fun PropertyDescriptor.canBeOverriden() = (Modality.ABSTRACT == this.modality || Modality.OPEN == this.modality) && Modality.FINAL != this.modality && this.visibility != DescriptorVisibilities.PRIVATE && this.visibility != DescriptorVisibilities.PROTECTED
119116

117+
private fun MemberDescriptor.canBeOverriden() = (Modality.ABSTRACT == this.modality || Modality.OPEN == this.modality) && Modality.FINAL != this.modality && this.visibility != DescriptorVisibilities.PRIVATE && this.visibility != DescriptorVisibilities.PROTECTED
118+
120119
// interfaces are ClassDescriptors by default. When calling AbstractClass super methods, we get a ClassConstructorDescriptor
121120
fun getClassDescriptor(descriptor: DeclarationDescriptor?): ClassDescriptor? =
122121
if (descriptor is ClassDescriptor) {
@@ -145,24 +144,18 @@ fun getSuperClassTypeProjections(
145144
?: emptyList()
146145

147146
// Checks if the class overrides the given declaration
148-
fun overridesDeclaration(kotlinClass: KtClass, descriptor: FunctionDescriptor): Boolean =
149-
kotlinClass.declarations.any {
150-
if (it.name == descriptor.name.asString() && it.hasModifier(KtTokens.OVERRIDE_KEYWORD)
151-
) {
152-
if (it is KtNamedFunction) {
153-
parametersMatch(it, descriptor)
154-
} else {
155-
true
156-
}
157-
} else {
158-
false
159-
}
147+
fun overridesDeclaration(kotlinClass: KtClass, descriptor: MemberDescriptor): Boolean =
148+
when (descriptor) {
149+
is FunctionDescriptor -> kotlinClass.declarations.any {
150+
it.name == descriptor.name.asString()
151+
&& it.hasModifier(KtTokens.OVERRIDE_KEYWORD)
152+
&& ((it as? KtNamedFunction)?.let { parametersMatch(it, descriptor) } ?: true)
160153
}
161-
162-
fun overridesDeclaration(kotlinClass: KtClass, descriptor: PropertyDescriptor): Boolean =
163-
kotlinClass.declarations.any {
154+
is PropertyDescriptor -> kotlinClass.declarations.any {
164155
it.name == descriptor.name.asString() && it.hasModifier(KtTokens.OVERRIDE_KEYWORD)
165156
}
157+
else -> false
158+
}
166159

167160
// Checks if two functions have matching parameters
168161
private fun parametersMatch(

0 commit comments

Comments
 (0)