diff --git a/compiler/light-classes/src/org/jetbrains/kotlin/asJava/lightClassUtils.kt b/compiler/light-classes/src/org/jetbrains/kotlin/asJava/lightClassUtils.kt index faa1b6382c9..6b50884a56d 100644 --- a/compiler/light-classes/src/org/jetbrains/kotlin/asJava/lightClassUtils.kt +++ b/compiler/light-classes/src/org/jetbrains/kotlin/asJava/lightClassUtils.kt @@ -17,22 +17,24 @@ package org.jetbrains.kotlin.asJava import com.intellij.psi.* +import com.intellij.util.containers.ContainerUtil import org.jetbrains.kotlin.psi.* import java.util.Collections import org.jetbrains.kotlin.psi.psiUtil.getNonStrictParentOfType import java.util.ArrayList import org.jetbrains.kotlin.psi.psiUtil.isExtensionDeclaration +import org.jetbrains.kotlin.utils.addToStdlib.singletonList import org.jetbrains.kotlin.utils.addToStdlib.singletonOrEmptyList public fun JetClassOrObject.toLightClass(): KotlinLightClass? = LightClassUtil.getPsiClass(this) as KotlinLightClass? public fun JetDeclaration.toLightElements(): List = when (this) { - is JetClassOrObject -> Collections.singletonList(LightClassUtil.getPsiClass(this)) + is JetClassOrObject -> LightClassUtil.getPsiClass(this).singletonOrEmptyList() is JetNamedFunction, - is JetSecondaryConstructor -> Collections.singletonList(LightClassUtil.getLightClassMethod(this as JetFunction)) + is JetSecondaryConstructor -> LightClassUtil.getLightClassMethod(this as JetFunction).singletonOrEmptyList() is JetProperty -> LightClassUtil.getLightClassPropertyMethods(this).toList() - is JetPropertyAccessor -> Collections.singletonList(LightClassUtil.getLightClassAccessorMethod(this)) + is JetPropertyAccessor -> LightClassUtil.getLightClassAccessorMethod(this).singletonOrEmptyList() is JetParameter -> ArrayList().let { elements -> toPsiParameter()?.let { psiParameter -> elements.add(psiParameter) } LightClassUtil.getLightClassPropertyMethods(this).toCollection(elements) @@ -49,8 +51,8 @@ public fun PsiElement.toLightMethods(): List = is JetProperty -> LightClassUtil.getLightClassPropertyMethods(this).toList() is JetParameter -> LightClassUtil.getLightClassPropertyMethods(this).toList() is JetPropertyAccessor -> LightClassUtil.getLightClassAccessorMethod(this).singletonOrEmptyList() - is JetClass -> Collections.singletonList(LightClassUtil.getPsiClass(this).getConstructors()[0]) - is PsiMethod -> Collections.singletonList(this) + is JetClass -> LightClassUtil.getPsiClass(this)?.getConstructors()?.first().singletonOrEmptyList() + is PsiMethod -> this.singletonList() else -> listOf() } diff --git a/compiler/util/src/org/jetbrains/kotlin/utils/addToStdlib.kt b/compiler/util/src/org/jetbrains/kotlin/utils/addToStdlib.kt index 3fbf2414204..e1dc44476d2 100644 --- a/compiler/util/src/org/jetbrains/kotlin/utils/addToStdlib.kt +++ b/compiler/util/src/org/jetbrains/kotlin/utils/addToStdlib.kt @@ -21,6 +21,8 @@ import java.util.NoSuchElementException public fun T?.singletonOrEmptyList(): List = if (this != null) Collections.singletonList(this) else Collections.emptyList() +public fun T.singletonList(): List = Collections.singletonList(this) + public fun T?.singletonOrEmptySet(): Set = if (this != null) Collections.singleton(this) else Collections.emptySet() public inline fun Stream<*>.firstIsInstanceOrNull(): T? {