diff --git a/compiler/light-classes/src/org/jetbrains/kotlin/asJava/LightClassUtil.kt b/compiler/light-classes-base/src/org/jetbrains/kotlin/asJava/LightClassUtil.kt similarity index 100% rename from compiler/light-classes/src/org/jetbrains/kotlin/asJava/LightClassUtil.kt rename to compiler/light-classes-base/src/org/jetbrains/kotlin/asJava/LightClassUtil.kt diff --git a/compiler/light-classes-base/src/org/jetbrains/kotlin/asJava/elements/utils.kt b/compiler/light-classes-base/src/org/jetbrains/kotlin/asJava/elements/utils.kt new file mode 100644 index 00000000000..a25c7ee1c8f --- /dev/null +++ b/compiler/light-classes-base/src/org/jetbrains/kotlin/asJava/elements/utils.kt @@ -0,0 +1,35 @@ +/* + * Copyright 2010-2022 JetBrains s.r.o. and Kotlin Programming Language contributors. + * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. + */ + +package org.jetbrains.kotlin.asJava.elements + +import com.intellij.psi.util.PsiTreeUtil +import org.jetbrains.kotlin.psi.* + +fun KtLightMethod.isTraitFakeOverride(): Boolean { + val methodOrigin = this.kotlinOrigin + if (!(methodOrigin is KtNamedFunction || methodOrigin is KtPropertyAccessor || methodOrigin is KtProperty)) { + return false + } + + val parentOfMethodOrigin = PsiTreeUtil.getParentOfType(methodOrigin, KtClassOrObject::class.java) + val thisClassDeclaration = this.containingClass.kotlinOrigin + + // Method was generated from declaration in some other trait + return (parentOfMethodOrigin != null && thisClassDeclaration !== parentOfMethodOrigin && KtPsiUtil.isTrait(parentOfMethodOrigin)) +} + +fun KtLightMethod.isAccessor(getter: Boolean): Boolean { + val origin = kotlinOrigin as? KtCallableDeclaration ?: return false + if (origin !is KtProperty && origin !is KtParameter) return false + val expectedParametersCount = (if (getter) 0 else 1) + (if (origin.receiverTypeReference != null) 1 else 0) + return parameterList.parametersCount == expectedParametersCount +} + +val KtLightMethod.isGetter: Boolean + get() = isAccessor(true) + +val KtLightMethod.isSetter: Boolean + get() = isAccessor(false) diff --git a/compiler/light-classes/src/org/jetbrains/kotlin/asJava/elements/KtLightMethodImpl.kt b/compiler/light-classes/src/org/jetbrains/kotlin/asJava/elements/KtLightMethodImpl.kt index e200e7e8bf7..66c991bd2d9 100644 --- a/compiler/light-classes/src/org/jetbrains/kotlin/asJava/elements/KtLightMethodImpl.kt +++ b/compiler/light-classes/src/org/jetbrains/kotlin/asJava/elements/KtLightMethodImpl.kt @@ -10,7 +10,6 @@ import com.intellij.psi.* import com.intellij.psi.scope.PsiScopeProcessor import com.intellij.psi.util.MethodSignature import com.intellij.psi.util.MethodSignatureBackedByPsiMethod -import com.intellij.psi.util.PsiTreeUtil import org.jetbrains.kotlin.asJava.* import org.jetbrains.kotlin.asJava.builder.LightMemberOriginForDeclaration import org.jetbrains.kotlin.asJava.classes.KtLightClass @@ -163,29 +162,3 @@ abstract class KtLightMethodImpl protected constructor( abstract override fun findSuperMethods(parentClass: PsiClass?): Array } - -fun KtLightMethod.isTraitFakeOverride(): Boolean { - val methodOrigin = this.kotlinOrigin - if (!(methodOrigin is KtNamedFunction || methodOrigin is KtPropertyAccessor || methodOrigin is KtProperty)) { - return false - } - - val parentOfMethodOrigin = PsiTreeUtil.getParentOfType(methodOrigin, KtClassOrObject::class.java) - val thisClassDeclaration = this.containingClass.kotlinOrigin - - // Method was generated from declaration in some other trait - return (parentOfMethodOrigin != null && thisClassDeclaration !== parentOfMethodOrigin && KtPsiUtil.isTrait(parentOfMethodOrigin)) -} - -fun KtLightMethod.isAccessor(getter: Boolean): Boolean { - val origin = kotlinOrigin as? KtCallableDeclaration ?: return false - if (origin !is KtProperty && origin !is KtParameter) return false - val expectedParametersCount = (if (getter) 0 else 1) + (if (origin.receiverTypeReference != null) 1 else 0) - return parameterList.parametersCount == expectedParametersCount -} - -val KtLightMethod.isGetter: Boolean - get() = isAccessor(true) - -val KtLightMethod.isSetter: Boolean - get() = isAccessor(false)