diff --git a/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/compiler/CliLightClassGenerationSupport.java b/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/compiler/CliLightClassGenerationSupport.java index e7dd64a8b8b..5892928a13b 100644 --- a/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/compiler/CliLightClassGenerationSupport.java +++ b/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/compiler/CliLightClassGenerationSupport.java @@ -17,7 +17,6 @@ package org.jetbrains.kotlin.cli.jvm.compiler; import com.google.common.base.Predicate; -import com.google.common.base.Predicates; import com.google.common.collect.Collections2; import com.intellij.openapi.project.Project; import com.intellij.psi.PsiClass; @@ -140,8 +139,7 @@ public class CliLightClassGenerationSupport extends LightClassGenerationSupport ); } - Collection classDescriptors = - ResolveSessionUtils.getClassOrObjectDescriptorsByFqName(getModule(), fqName, Predicates.alwaysTrue()); + Collection classDescriptors = ResolveSessionUtils.getClassDescriptorsByFqName(getModule(), fqName); return ContainerUtil.mapNotNull(classDescriptors, new Function() { @Override diff --git a/compiler/frontend/src/org/jetbrains/kotlin/resolve/lazy/ResolveSessionUtils.java b/compiler/frontend/src/org/jetbrains/kotlin/resolve/lazy/ResolveSessionUtils.java index 3044404a742..3d7d3ce328a 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/resolve/lazy/ResolveSessionUtils.java +++ b/compiler/frontend/src/org/jetbrains/kotlin/resolve/lazy/ResolveSessionUtils.java @@ -38,28 +38,12 @@ import java.util.Collections; public class ResolveSessionUtils { - public static final Predicate NON_SINGLETON_FILTER = new Predicate() { - @Override - public boolean apply(@Nullable ClassDescriptor descriptor) { - assert descriptor != null; - return !descriptor.getKind().isSingleton(); - } - }; - - public static final Predicate SINGLETON_FILTER = new Predicate() { - @Override - public boolean apply(@Nullable ClassDescriptor descriptor) { - assert descriptor != null; - return descriptor.getKind().isSingleton(); - } - }; - private ResolveSessionUtils() { } @NotNull public static Collection getClassDescriptorsByFqName(@NotNull ModuleDescriptor moduleDescriptor, @NotNull FqName fqName) { - return getClassOrObjectDescriptorsByFqName(moduleDescriptor, fqName, NON_SINGLETON_FILTER); + return getClassOrObjectDescriptorsByFqName(moduleDescriptor, fqName, Predicates.alwaysTrue()); } @NotNull diff --git a/idea/src/org/jetbrains/kotlin/idea/quickfix/createFromUsage/callableBuilder/typeUtils.kt b/idea/src/org/jetbrains/kotlin/idea/quickfix/createFromUsage/callableBuilder/typeUtils.kt index d152c81e710..46e861a4a23 100644 --- a/idea/src/org/jetbrains/kotlin/idea/quickfix/createFromUsage/callableBuilder/typeUtils.kt +++ b/idea/src/org/jetbrains/kotlin/idea/quickfix/createFromUsage/callableBuilder/typeUtils.kt @@ -45,12 +45,12 @@ import org.jetbrains.kotlin.psi.JetDeclaration import org.jetbrains.kotlin.psi.JetPropertyDelegate import org.jetbrains.kotlin.psi.JetProperty import org.jetbrains.kotlin.descriptors.ModuleDescriptor -import org.jetbrains.kotlin.resolve.lazy.ResolveSessionUtils import org.jetbrains.kotlin.name.FqName import org.jetbrains.kotlin.descriptors.PropertyDescriptor import org.jetbrains.kotlin.idea.util.makeNotNullable import org.jetbrains.kotlin.psi.JetAnnotationEntry import org.jetbrains.kotlin.psi.psiUtil.getNonStrictParentOfType +import org.jetbrains.kotlin.resolve.descriptorUtil.resolveTopLevelClass private fun JetType.contains(inner: JetType): Boolean { return JetTypeChecker.DEFAULT.equalTypes(this, inner) || getArguments().any { inner in it.getType() } @@ -175,10 +175,9 @@ fun JetExpression.guessTypes( } parent is JetPropertyDelegate && module != null -> { val property = context[BindingContext.DECLARATION_TO_DESCRIPTOR, parent.getParent() as JetProperty] as PropertyDescriptor - val delegateClassName = if (property.isVar() ) "ReadWriteProperty" else "ReadOnlyProperty" - val delegateClass = - ResolveSessionUtils.getClassDescriptorsByFqName(module, FqName("kotlin.properties.$delegateClassName")).firstOrNull() - ?: return array(builtIns.getAnyType()) + val delegateClassName = if (property.isVar()) "ReadWriteProperty" else "ReadOnlyProperty" + val delegateClass = module.resolveTopLevelClass(FqName("kotlin.properties.$delegateClassName")) + ?: return array(builtIns.getAnyType()) val receiverType = (property.getExtensionReceiverParameter() ?: property.getDispatchReceiverParameter())?.getType() ?: builtIns.getNullableNothingType() val typeArguments = listOf(TypeProjectionImpl(receiverType), TypeProjectionImpl(property.getType())) diff --git a/idea/src/org/jetbrains/kotlin/idea/refactoring/extractFunction/ExtractableCodeDescriptor.kt b/idea/src/org/jetbrains/kotlin/idea/refactoring/extractFunction/ExtractableCodeDescriptor.kt index f3dffd5cd43..157d14fa1cd 100644 --- a/idea/src/org/jetbrains/kotlin/idea/refactoring/extractFunction/ExtractableCodeDescriptor.kt +++ b/idea/src/org/jetbrains/kotlin/idea/refactoring/extractFunction/ExtractableCodeDescriptor.kt @@ -49,7 +49,6 @@ import org.jetbrains.kotlin.idea.refactoring.extractFunction.OutputValue.Express import org.jetbrains.kotlin.psi.JetReturnExpression import org.jetbrains.kotlin.idea.refactoring.extractFunction.OutputValue.Jump import org.jetbrains.kotlin.descriptors.ModuleDescriptor -import org.jetbrains.kotlin.resolve.lazy.ResolveSessionUtils import org.jetbrains.kotlin.types.TypeUtils import kotlin.properties.Delegates import com.intellij.util.containers.ContainerUtil @@ -57,6 +56,7 @@ import org.jetbrains.kotlin.psi.psiUtil.getQualifiedElementSelector import org.jetbrains.kotlin.idea.util.psi.patternMatching.JetPsiRange import org.jetbrains.kotlin.resolve.BindingContext import org.jetbrains.kotlin.idea.util.isUnit +import org.jetbrains.kotlin.resolve.descriptorUtil.resolveTopLevelClass trait Parameter { val argumentText: String @@ -206,8 +206,8 @@ abstract class OutputValueBoxer(val outputValues: List) { fun getType(): JetType { val boxingClass = when (outputValues.size()) { 1 -> return outputValues.first().valueType - 2 -> ResolveSessionUtils.getClassDescriptorsByFqName(module, FqName("kotlin.Pair")).first() - 3 -> ResolveSessionUtils.getClassDescriptorsByFqName(module, FqName("kotlin.Triple")).first() + 2 -> module.resolveTopLevelClass(FqName("kotlin.Pair"))!! + 3 -> module.resolveTopLevelClass(FqName("kotlin.Triple"))!! else -> return DEFAULT_RETURN_TYPE } return TypeUtils.substituteParameters(boxingClass, outputValueTypes)