@@ -22,6 +22,7 @@ import org.jetbrains.kotlin.descriptors.ClassConstructorDescriptor
22
22
import org.jetbrains.kotlin.descriptors.FunctionDescriptor
23
23
import org.jetbrains.kotlin.descriptors.isInterface
24
24
import org.jetbrains.kotlin.descriptors.PropertyDescriptor
25
+ import org.jetbrains.kotlin.descriptors.MemberDescriptor
25
26
import org.jetbrains.kotlin.js.resolve.diagnostics.findPsi
26
27
import org.jetbrains.kotlin.psi.psiUtil.endOffset
27
28
import org.jetbrains.kotlin.psi.psiUtil.isAbstract
@@ -112,11 +113,9 @@ private fun getUnimplementedMembersStubs(file: CompiledFile, kotlinClass: KtClas
112
113
private fun ClassDescriptor.canBeExtended () = this .kind.isInterface ||
113
114
this .modality == Modality .ABSTRACT ||
114
115
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
119
116
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
+
120
119
// interfaces are ClassDescriptors by default. When calling AbstractClass super methods, we get a ClassConstructorDescriptor
121
120
fun getClassDescriptor (descriptor : DeclarationDescriptor ? ): ClassDescriptor ? =
122
121
if (descriptor is ClassDescriptor ) {
@@ -145,24 +144,18 @@ fun getSuperClassTypeProjections(
145
144
? : emptyList()
146
145
147
146
// 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 )
160
153
}
161
-
162
- fun overridesDeclaration (kotlinClass : KtClass , descriptor : PropertyDescriptor ): Boolean =
163
- kotlinClass.declarations.any {
154
+ is PropertyDescriptor -> kotlinClass.declarations.any {
164
155
it.name == descriptor.name.asString() && it.hasModifier(KtTokens .OVERRIDE_KEYWORD )
165
156
}
157
+ else -> false
158
+ }
166
159
167
160
// Checks if two functions have matching parameters
168
161
private fun parametersMatch (
0 commit comments