From 9139a8f060942d916c5eecea217430259ba8c37e Mon Sep 17 00:00:00 2001 From: Valentin Kipyatkov Date: Fri, 12 Jun 2015 15:08:20 +0300 Subject: [PATCH] WritableScope: removed addLabeledDeclarations --- .../impl/MutableClassDescriptor.java | 3 +- .../resolve/FunctionDescriptorResolver.kt | 7 +++-- .../resolve/FunctionDescriptorUtil.java | 3 +- .../lazy/descriptors/LazyClassDescriptor.java | 4 +-- .../kotlin/resolve/scopes/JetScopeUtils.java | 6 ++-- .../kotlin/resolve/scopes/WritableScope.kt | 2 -- .../resolve/scopes/WritableScopeImpl.kt | 30 +++++++------------ 7 files changed, 22 insertions(+), 33 deletions(-) diff --git a/compiler/frontend/src/org/jetbrains/kotlin/descriptors/impl/MutableClassDescriptor.java b/compiler/frontend/src/org/jetbrains/kotlin/descriptors/impl/MutableClassDescriptor.java index af844e04472..445b2fcaa7e 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/descriptors/impl/MutableClassDescriptor.java +++ b/compiler/frontend/src/org/jetbrains/kotlin/descriptors/impl/MutableClassDescriptor.java @@ -72,7 +72,7 @@ public class MutableClassDescriptor extends ClassDescriptorBase implements Class RedeclarationHandler redeclarationHandler = RedeclarationHandler.DO_NOTHING; - setScopeForMemberLookup(new WritableScopeImpl(JetScope.Empty.INSTANCE$, this, redeclarationHandler, "MemberLookup") + setScopeForMemberLookup(new WritableScopeImpl(JetScope.Empty.INSTANCE$, this, redeclarationHandler, "MemberLookup", this) .changeLockLevel(WritableScope.LockLevel.BOTH)); this.scopeForSupertypeResolution = new WritableScopeImpl(outerScope, this, redeclarationHandler, "SupertypeResolution") .changeLockLevel(WritableScope.LockLevel.BOTH); @@ -84,7 +84,6 @@ public class MutableClassDescriptor extends ClassDescriptorBase implements Class } this.scopeForMemberResolution = new ChainedScope(this, "MemberResolutionWithStatic", writableScopeForMemberResolution, staticScope); - writableScopeForMemberResolution.addLabeledDeclaration(this); } @Nullable diff --git a/compiler/frontend/src/org/jetbrains/kotlin/resolve/FunctionDescriptorResolver.kt b/compiler/frontend/src/org/jetbrains/kotlin/resolve/FunctionDescriptorResolver.kt index 8370114b027..9b81a8349a3 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/resolve/FunctionDescriptorResolver.kt +++ b/compiler/frontend/src/org/jetbrains/kotlin/resolve/FunctionDescriptorResolver.kt @@ -134,8 +134,11 @@ class FunctionDescriptorResolver( trace: BindingTrace, expectedFunctionType: JetType ) { - val innerScope = WritableScopeImpl(scope, functionDescriptor, TraceBasedRedeclarationHandler(trace), "Function descriptor header scope") - innerScope.addLabeledDeclaration(functionDescriptor) + val innerScope = WritableScopeImpl(scope, + functionDescriptor, + TraceBasedRedeclarationHandler(trace), + "Function descriptor header scope", + labeledDeclaration = functionDescriptor) val typeParameterDescriptors = descriptorResolver. resolveTypeParametersForCallableDescriptor(functionDescriptor, innerScope, function.getTypeParameters(), trace) diff --git a/compiler/frontend/src/org/jetbrains/kotlin/resolve/FunctionDescriptorUtil.java b/compiler/frontend/src/org/jetbrains/kotlin/resolve/FunctionDescriptorUtil.java index 801b3af2abd..7835d397cc3 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/resolve/FunctionDescriptorUtil.java +++ b/compiler/frontend/src/org/jetbrains/kotlin/resolve/FunctionDescriptorUtil.java @@ -80,7 +80,7 @@ public class FunctionDescriptorUtil { @NotNull FunctionDescriptor descriptor, @NotNull RedeclarationHandler redeclarationHandler ) { - WritableScope parameterScope = new WritableScopeImpl(outerScope, descriptor, redeclarationHandler, "Function inner scope"); + WritableScope parameterScope = new WritableScopeImpl(outerScope, descriptor, redeclarationHandler, "Function inner scope", descriptor); ReceiverParameterDescriptor receiver = descriptor.getExtensionReceiverParameter(); if (receiver != null) { parameterScope.setImplicitReceiver(receiver); @@ -91,7 +91,6 @@ public class FunctionDescriptorUtil { for (ValueParameterDescriptor valueParameterDescriptor : descriptor.getValueParameters()) { parameterScope.addVariableDescriptor(valueParameterDescriptor); } - parameterScope.addLabeledDeclaration(descriptor); parameterScope.changeLockLevel(WritableScope.LockLevel.READING); return parameterScope; } diff --git a/compiler/frontend/src/org/jetbrains/kotlin/resolve/lazy/descriptors/LazyClassDescriptor.java b/compiler/frontend/src/org/jetbrains/kotlin/resolve/lazy/descriptors/LazyClassDescriptor.java index 347ee72d4de..946d47867b7 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/resolve/lazy/descriptors/LazyClassDescriptor.java +++ b/compiler/frontend/src/org/jetbrains/kotlin/resolve/lazy/descriptors/LazyClassDescriptor.java @@ -265,8 +265,8 @@ public class LazyClassDescriptor extends ClassDescriptorBase implements ClassDes @NotNull private JetScope computeScopeForMemberDeclarationResolution() { - WritableScopeImpl thisScope = new WritableScopeImpl(JetScope.Empty.INSTANCE$, this, RedeclarationHandler.DO_NOTHING, "Scope with 'this' for " + getName()); - thisScope.addLabeledDeclaration(this); + WritableScopeImpl thisScope = new WritableScopeImpl(JetScope.Empty.INSTANCE$, this, RedeclarationHandler.DO_NOTHING, + "Scope with 'this' for " + getName(), this); thisScope.setImplicitReceiver(this.getThisAsReceiverParameter()); thisScope.changeLockLevel(WritableScope.LockLevel.READING); 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 2e879d268f3..612b28faede 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/resolve/scopes/JetScopeUtils.java +++ b/compiler/frontend/src/org/jetbrains/kotlin/resolve/scopes/JetScopeUtils.java @@ -126,10 +126,8 @@ public final class JetScopeUtils { ) { WritableScopeImpl result = new WritableScopeImpl( outerScope, propertyDescriptor, redeclarationHandler, - "Property declaration inner scope"); - if (addLabelForProperty) { - result.addLabeledDeclaration(propertyDescriptor); - } + "Property declaration inner scope", + addLabelForProperty ? propertyDescriptor : null); for (TypeParameterDescriptor typeParameterDescriptor : typeParameters) { result.addClassifierDescriptor(typeParameterDescriptor); } diff --git a/compiler/frontend/src/org/jetbrains/kotlin/resolve/scopes/WritableScope.kt b/compiler/frontend/src/org/jetbrains/kotlin/resolve/scopes/WritableScope.kt index 37d0220cc0b..d33def2c732 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/resolve/scopes/WritableScope.kt +++ b/compiler/frontend/src/org/jetbrains/kotlin/resolve/scopes/WritableScope.kt @@ -31,8 +31,6 @@ public trait WritableScope : JetScope { public fun changeLockLevel(lockLevel: LockLevel): WritableScope - public fun addLabeledDeclaration(descriptor: DeclarationDescriptor) - public fun addVariableDescriptor(variableDescriptor: VariableDescriptor) public fun addFunctionDescriptor(functionDescriptor: FunctionDescriptor) diff --git a/compiler/frontend/src/org/jetbrains/kotlin/resolve/scopes/WritableScopeImpl.kt b/compiler/frontend/src/org/jetbrains/kotlin/resolve/scopes/WritableScopeImpl.kt index 4e6bb0a6a6d..2d35d82f218 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/resolve/scopes/WritableScopeImpl.kt +++ b/compiler/frontend/src/org/jetbrains/kotlin/resolve/scopes/WritableScopeImpl.kt @@ -32,11 +32,13 @@ import org.jetbrains.kotlin.util.collectionUtils.concatInOrder // Writes to: maps -public class WritableScopeImpl(outerScope: JetScope, - private val ownerDeclarationDescriptor: DeclarationDescriptor, - protected val redeclarationHandler: RedeclarationHandler, - private val debugName: String) -: AbstractScopeAdapter(), WritableScope { +public class WritableScopeImpl @jvmOverloads constructor( + outerScope: JetScope, + private val ownerDeclarationDescriptor: DeclarationDescriptor, + protected val redeclarationHandler: RedeclarationHandler, + private val debugName: String, + private val labeledDeclaration: DeclarationDescriptor? = null +) : AbstractScopeAdapter(), WritableScope { private val explicitlyAddedDescriptors = SmartList() @@ -44,8 +46,6 @@ public class WritableScopeImpl(outerScope: JetScope, private var variableOrClassDescriptors: MutableMap? = null - private var labelsToDescriptors: MutableMap>? = null - private var implicitReceiver: ReceiverParameterDescriptor? = null private var implicitReceiverHierarchy: List? = null @@ -101,18 +101,10 @@ public class WritableScopeImpl(outerScope: JetScope, checkMayRead() val superResult = super.getDeclarationsByLabel(labelName) - val declarationDescriptors = labelsToDescriptors?.get(labelName) ?: return superResult - if (superResult.isEmpty()) return declarationDescriptors - return declarationDescriptors + superResult - } - - override fun addLabeledDeclaration(descriptor: DeclarationDescriptor) { - checkMayWrite() - - if (labelsToDescriptors == null) { - labelsToDescriptors = HashMap() - } - labelsToDescriptors!!.getOrPut(descriptor.getName()) { SmartList() }.add(descriptor) + return if (labeledDeclaration != null && labeledDeclaration.getName() == labelName) + listOf(labeledDeclaration) + superResult + else + superResult } private fun addVariableOrClassDescriptor(descriptor: DeclarationDescriptor) {