diff --git a/compiler/frontend/src/org/jetbrains/kotlin/resolve/callableReferences/CallableReferencesResolutionUtils.kt b/compiler/frontend/src/org/jetbrains/kotlin/resolve/callableReferences/CallableReferencesResolutionUtils.kt index bfcceed9db5..845ba914ce6 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/resolve/callableReferences/CallableReferencesResolutionUtils.kt +++ b/compiler/frontend/src/org/jetbrains/kotlin/resolve/callableReferences/CallableReferencesResolutionUtils.kt @@ -22,9 +22,7 @@ import org.jetbrains.kotlin.descriptors.* import org.jetbrains.kotlin.descriptors.annotations.Annotations import org.jetbrains.kotlin.descriptors.impl.AnonymousFunctionDescriptor import org.jetbrains.kotlin.descriptors.impl.LocalVariableDescriptor -import org.jetbrains.kotlin.diagnostics.Errors.CALLABLE_REFERENCE_LHS_NOT_A_CLASS -import org.jetbrains.kotlin.diagnostics.Errors.EXTENSION_IN_CLASS_REFERENCE_NOT_ALLOWED -import org.jetbrains.kotlin.diagnostics.Errors.UNSUPPORTED +import org.jetbrains.kotlin.diagnostics.Errors.* import org.jetbrains.kotlin.name.Name import org.jetbrains.kotlin.psi.KtCallableReferenceExpression import org.jetbrains.kotlin.psi.KtExpression @@ -40,6 +38,7 @@ import org.jetbrains.kotlin.resolve.calls.context.TemporaryTraceAndCache import org.jetbrains.kotlin.resolve.calls.results.OverloadResolutionResults import org.jetbrains.kotlin.resolve.calls.results.OverloadResolutionResultsUtil import org.jetbrains.kotlin.resolve.calls.util.CallMaker +import org.jetbrains.kotlin.resolve.scopes.JetScopeUtils import org.jetbrains.kotlin.resolve.scopes.KtScope import org.jetbrains.kotlin.resolve.scopes.receivers.ReceiverValue import org.jetbrains.kotlin.resolve.scopes.receivers.TransientReceiver @@ -130,7 +129,7 @@ public fun resolvePossiblyAmbiguousCallableReference( if (possibleStatic.isSomething()) return possibleStatic val possibleNested = resolveInScope("trace to resolve ::${reference.getReferencedName()} in static nested classes scope", - DescriptorUtils.getStaticNestedClassesScope(classifier)) + JetScopeUtils.getStaticNestedClassesScope(classifier)) if (possibleNested.isSomething()) return possibleNested val possibleWithReceiver = resolveWithReceiver("trace to resolve ::${reference.getReferencedName()} with receiver", diff --git a/core/descriptors/src/org/jetbrains/kotlin/resolve/scopes/FilteringScope.kt b/compiler/frontend/src/org/jetbrains/kotlin/resolve/scopes/FilteringScope.kt similarity index 100% rename from core/descriptors/src/org/jetbrains/kotlin/resolve/scopes/FilteringScope.kt rename to compiler/frontend/src/org/jetbrains/kotlin/resolve/scopes/FilteringScope.kt diff --git a/compiler/frontend/src/org/jetbrains/kotlin/resolve/scopes/JetScopeUtils.java b/compiler/frontend/src/org/jetbrains/kotlin/resolve/scopes/JetScopeUtils.java index fe50d382360..78e1ca3a392 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/resolve/scopes/JetScopeUtils.java +++ b/compiler/frontend/src/org/jetbrains/kotlin/resolve/scopes/JetScopeUtils.java @@ -21,9 +21,7 @@ import kotlin.jvm.functions.Function1; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import org.jetbrains.annotations.TestOnly; -import org.jetbrains.kotlin.descriptors.PropertyDescriptor; -import org.jetbrains.kotlin.descriptors.ReceiverParameterDescriptor; -import org.jetbrains.kotlin.descriptors.TypeParameterDescriptor; +import org.jetbrains.kotlin.descriptors.*; import org.jetbrains.kotlin.resolve.BindingTrace; import org.jetbrains.kotlin.resolve.TraceBasedRedeclarationHandler; import org.jetbrains.kotlin.utils.Printer; @@ -33,6 +31,17 @@ import java.util.List; public final class JetScopeUtils { private JetScopeUtils() {} + @NotNull + public static KtScope getStaticNestedClassesScope(@NotNull ClassDescriptor descriptor) { + KtScope innerClassesScope = descriptor.getUnsubstitutedInnerClassesScope(); + return new FilteringScope(innerClassesScope, new Function1() { + @Override + public Boolean invoke(DeclarationDescriptor descriptor) { + return descriptor instanceof ClassDescriptor && !((ClassDescriptor) descriptor).isInner(); + } + }); + } + public static LexicalScope makeScopeForPropertyAccessor( @NotNull PropertyDescriptor propertyDescriptor, @NotNull LexicalScope parentScope, diff --git a/compiler/frontend/src/org/jetbrains/kotlin/resolve/scopes/receivers/Qualifier.kt b/compiler/frontend/src/org/jetbrains/kotlin/resolve/scopes/receivers/Qualifier.kt index a99500ed848..6d310709afd 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/resolve/scopes/receivers/Qualifier.kt +++ b/compiler/frontend/src/org/jetbrains/kotlin/resolve/scopes/receivers/Qualifier.kt @@ -24,13 +24,13 @@ import org.jetbrains.kotlin.psi.KtExpression import org.jetbrains.kotlin.psi.KtSimpleNameExpression import org.jetbrains.kotlin.psi.psiUtil.getTopmostParentQualifiedExpressionForSelector import org.jetbrains.kotlin.resolve.BindingContext.* -import org.jetbrains.kotlin.resolve.DescriptorUtils import org.jetbrains.kotlin.resolve.DescriptorUtils.getFqName import org.jetbrains.kotlin.resolve.bindingContextUtil.recordScope import org.jetbrains.kotlin.resolve.descriptorUtil.classObjectType import org.jetbrains.kotlin.resolve.descriptorUtil.hasClassObjectType import org.jetbrains.kotlin.resolve.scopes.ChainedScope import org.jetbrains.kotlin.resolve.scopes.FilteringScope +import org.jetbrains.kotlin.resolve.scopes.JetScopeUtils import org.jetbrains.kotlin.resolve.scopes.KtScope import org.jetbrains.kotlin.resolve.scopes.utils.findClassifier import org.jetbrains.kotlin.resolve.scopes.utils.findPackage @@ -133,7 +133,7 @@ class ClassifierQualifier( scopes.add(classifier.staticScope) if (classifier.kind != ClassKind.ENUM_ENTRY) { - scopes.add(DescriptorUtils.getStaticNestedClassesScope(classifier)) + scopes.add(JetScopeUtils.getStaticNestedClassesScope(classifier)) } return ChainedScope(descriptor, "Static scope for $name as class or object", *scopes.toTypedArray()) diff --git a/core/descriptors/src/org/jetbrains/kotlin/resolve/DescriptorUtils.java b/core/descriptors/src/org/jetbrains/kotlin/resolve/DescriptorUtils.java index f446718e5b2..ef5f9d66e05 100644 --- a/core/descriptors/src/org/jetbrains/kotlin/resolve/DescriptorUtils.java +++ b/core/descriptors/src/org/jetbrains/kotlin/resolve/DescriptorUtils.java @@ -16,7 +16,6 @@ package org.jetbrains.kotlin.resolve; -import kotlin.jvm.functions.Function1; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import org.jetbrains.kotlin.builtins.KotlinBuiltIns; @@ -32,8 +31,6 @@ import org.jetbrains.kotlin.name.Name; import org.jetbrains.kotlin.name.SpecialNames; import org.jetbrains.kotlin.resolve.constants.ConstantValue; import org.jetbrains.kotlin.resolve.constants.StringValue; -import org.jetbrains.kotlin.resolve.scopes.FilteringScope; -import org.jetbrains.kotlin.resolve.scopes.KtScope; import org.jetbrains.kotlin.types.ErrorUtils; import org.jetbrains.kotlin.types.KotlinType; import org.jetbrains.kotlin.types.LazyType; @@ -406,17 +403,6 @@ public class DescriptorUtils { !((ClassDescriptor) descriptor).isInner(); } - @NotNull - public static KtScope getStaticNestedClassesScope(@NotNull ClassDescriptor descriptor) { - KtScope innerClassesScope = descriptor.getUnsubstitutedInnerClassesScope(); - return new FilteringScope(innerClassesScope, new Function1() { - @Override - public Boolean invoke(DeclarationDescriptor descriptor) { - return descriptor instanceof ClassDescriptor && !((ClassDescriptor) descriptor).isInner(); - } - }); - } - /** * @return true iff {@code descriptor}'s first non-class container is a package */