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 971e1a394b2..fe50d382360 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/resolve/scopes/JetScopeUtils.java +++ b/compiler/frontend/src/org/jetbrains/kotlin/resolve/scopes/JetScopeUtils.java @@ -16,9 +16,6 @@ package org.jetbrains.kotlin.resolve.scopes; -import com.google.common.base.Function; -import com.google.common.collect.Collections2; -import com.google.common.collect.Lists; import kotlin.Unit; import kotlin.jvm.functions.Function1; import org.jetbrains.annotations.NotNull; @@ -29,30 +26,13 @@ import org.jetbrains.kotlin.descriptors.ReceiverParameterDescriptor; import org.jetbrains.kotlin.descriptors.TypeParameterDescriptor; import org.jetbrains.kotlin.resolve.BindingTrace; import org.jetbrains.kotlin.resolve.TraceBasedRedeclarationHandler; -import org.jetbrains.kotlin.resolve.scopes.receivers.ReceiverValue; import org.jetbrains.kotlin.utils.Printer; -import java.util.Collection; import java.util.List; public final class JetScopeUtils { private JetScopeUtils() {} - @NotNull - public static List getImplicitReceiversHierarchyValues(@NotNull KtScope scope) { - Collection hierarchy = scope.getImplicitReceiversHierarchy(); - - return Lists.newArrayList( - Collections2.transform(hierarchy, - new Function() { - @Override - public ReceiverValue apply(ReceiverParameterDescriptor receiverParameterDescriptor) { - return receiverParameterDescriptor.getValue(); - } - }) - ); - } - public static LexicalScope makeScopeForPropertyAccessor( @NotNull PropertyDescriptor propertyDescriptor, @NotNull LexicalScope parentScope, diff --git a/compiler/frontend/src/org/jetbrains/kotlin/resolve/scopes/utils/ScopeUtils.kt b/compiler/frontend/src/org/jetbrains/kotlin/resolve/scopes/utils/ScopeUtils.kt index c641f166319..d97735f73f5 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/resolve/scopes/utils/ScopeUtils.kt +++ b/compiler/frontend/src/org/jetbrains/kotlin/resolve/scopes/utils/ScopeUtils.kt @@ -35,29 +35,12 @@ public val LexicalScope.parents: Sequence /** * Adds receivers to the list in order of locality, so that the closest (the most local) receiver goes first */ -public fun LexicalScope.getImplicitReceiversHierarchy(): List { - // todo remove hack - var jetScopeRefactoringHack: KtScope? = null - val receivers = collectFromMeAndParent { - if (it is MemberScopeToImportingScopeAdapter) { - jetScopeRefactoringHack = it.memberScope - } - it.implicitReceiver - } - - return if (jetScopeRefactoringHack != null) { - receivers + jetScopeRefactoringHack!!.getImplicitReceiversHierarchy() - } - else { - receivers - } +public fun LexicalScope.getImplicitReceiversHierarchy(): List = collectFromMeAndParent { + it.implicitReceiver } public fun LexicalScope.getDeclarationsByLabel(labelName: Name): Collection = collectAllFromMeAndParent { - if(it is MemberScopeToImportingScopeAdapter) { // todo remove this hack - it.memberScope.getDeclarationsByLabel(labelName) - } - else if (it.isOwnerDescriptorAccessibleByLabel && it.ownerDescriptor.name == labelName) { + if (it.isOwnerDescriptorAccessibleByLabel && it.ownerDescriptor.name == labelName) { listOf(it.ownerDescriptor) } else { @@ -136,16 +119,16 @@ private class MemberScopeToImportingScopeAdapter(override val parent: ImportingS override fun getContributedPackage(name: Name): PackageViewDescriptor? = memberScope.getPackage(name) override fun getContributedSyntheticExtensionProperties(receiverTypes: Collection, name: Name, location: LookupLocation) - = memberScope.getSyntheticExtensionProperties(receiverTypes, name, location) + = emptyList() override fun getContributedSyntheticExtensionFunctions(receiverTypes: Collection, name: Name, location: LookupLocation) - = memberScope.getSyntheticExtensionFunctions(receiverTypes, name, location) + = emptyList() override fun getContributedSyntheticExtensionProperties(receiverTypes: Collection) - = memberScope.getSyntheticExtensionProperties(receiverTypes) + = emptyList() override fun getContributedSyntheticExtensionFunctions(receiverTypes: Collection) - = memberScope.getSyntheticExtensionFunctions(receiverTypes) + = emptyList() override fun getContributedDescriptors(kindFilter: DescriptorKindFilter, nameFilter: (Name) -> Boolean) = memberScope.getDescriptors(kindFilter, nameFilter) diff --git a/compiler/tests/org/jetbrains/kotlin/resolve/ExpectedResolveDataUtil.java b/compiler/tests/org/jetbrains/kotlin/resolve/ExpectedResolveDataUtil.java index ed159ea720d..a2aba679709 100644 --- a/compiler/tests/org/jetbrains/kotlin/resolve/ExpectedResolveDataUtil.java +++ b/compiler/tests/org/jetbrains/kotlin/resolve/ExpectedResolveDataUtil.java @@ -32,6 +32,8 @@ import org.jetbrains.kotlin.resolve.calls.smartcasts.DataFlowInfo; import org.jetbrains.kotlin.resolve.descriptorUtil.DescriptorUtilsKt; import org.jetbrains.kotlin.resolve.jvm.platform.JvmPlatform; import org.jetbrains.kotlin.resolve.lazy.LazyResolveTestUtil; +import org.jetbrains.kotlin.resolve.scopes.ImportingScope; +import org.jetbrains.kotlin.resolve.scopes.LexicalScopeImpl; import org.jetbrains.kotlin.resolve.scopes.receivers.ReceiverValue; import org.jetbrains.kotlin.resolve.scopes.utils.ScopeUtilsKt; import org.jetbrains.kotlin.test.KotlinTestUtils; @@ -136,8 +138,12 @@ public class ExpectedResolveDataUtil { emptyModule.setDependencies(emptyModule); emptyModule.initialize(PackageFragmentProvider.Empty.INSTANCE$); + LexicalScopeImpl lexicalScope = new LexicalScopeImpl(ImportingScope.Empty.INSTANCE, classDescriptor, false, + classDescriptor.getThisAsReceiverParameter(), + "Scope with implicit this for class: " + classDescriptor); + ExpressionTypingContext context = ExpressionTypingContext.newContext( - new BindingTraceContext(), ScopeUtilsKt.memberScopeAsImportingScope(classDescriptor.getDefaultType().getMemberScope()), + new BindingTraceContext(), lexicalScope, DataFlowInfo.EMPTY, TypeUtils.NO_EXPECTED_TYPE); OverloadResolutionResults functions = container.getFakeCallResolver().resolveFakeCall(