Refactor: merge synonymous utils

This commit is contained in:
Pavel V. Talanov
2018-03-14 18:54:27 +01:00
parent 784936eb00
commit 36d23e4501
6 changed files with 26 additions and 32 deletions
@@ -16,8 +16,8 @@ import org.jetbrains.kotlin.idea.core.toDescriptor
import org.jetbrains.kotlin.idea.search.usagesSearch.descriptor
import org.jetbrains.kotlin.psi.KtClassOrObject
import org.jetbrains.kotlin.psi.KtDeclaration
import org.jetbrains.kotlin.psi.KtNamedDeclaration
import org.jetbrains.kotlin.psi.psiUtil.containingClassOrObject
import org.jetbrains.kotlin.psi.psiUtil.hasActualModifier
import org.jetbrains.kotlin.psi.psiUtil.hasExpectModifier
import org.jetbrains.kotlin.resolve.DescriptorToSourceUtils
import org.jetbrains.kotlin.resolve.descriptorUtil.module
@@ -35,17 +35,6 @@ fun KtDeclaration.expectedDeclarationIfAny(): KtDeclaration? {
return DescriptorToSourceUtils.descriptorToDeclaration(expectedDescriptor) as? KtDeclaration
}
fun KtDeclaration.isExpectedOrExpectedClassMember(): Boolean {
if (hasExpectModifier()) return true
if (this is KtClassOrObject) return this.isExpected()
return containingClassOrObject?.isExpected() == true
}
fun KtClassOrObject.isExpected(): Boolean {
return this.hasExpectModifier() || this.descriptor.safeAs<ClassDescriptor>()?.isExpect == true
}
fun DeclarationDescriptor.liftToExpected(): DeclarationDescriptor? {
if (this is MemberDescriptor) {
return when {
@@ -114,8 +103,19 @@ fun KtDeclaration.actualsForExpected(module: Module? = null): Set<KtDeclaration>
} ?: emptySet()
fun KtNamedDeclaration.isExpectDeclaration(): Boolean =
(toDescriptor() as? MemberDescriptor)?.isExpect == true
fun KtDeclaration.isExpectDeclaration(): Boolean {
if (hasExpectModifier()) return true
if (this is KtClassOrObject) return this.isExpected()
fun KtNamedDeclaration.isActualDeclaration(): Boolean =
(toDescriptor() as? MemberDescriptor)?.isActual == true
return containingClassOrObject?.isExpected() == true
}
private fun KtClassOrObject.isExpected(): Boolean {
return this.hasExpectModifier() || this.descriptor.safeAs<ClassDescriptor>()?.isExpect == true
}
fun KtDeclaration.isActualDeclaration(): Boolean {
if (hasActualModifier()) return true
return (toDescriptor() as? MemberDescriptor)?.isActual == true
}