diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/lazy/LazyClassDescriptor.java b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/lazy/LazyClassDescriptor.java index 32f4bb0e931..1ba80c895f1 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/lazy/LazyClassDescriptor.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/lazy/LazyClassDescriptor.java @@ -135,7 +135,10 @@ public class LazyClassDescriptor extends ClassDescriptorBase implements LazyDesc scope.changeLockLevel(WritableScope.LockLevel.READING); PsiElement scopeAnchor = declarationProvider.getOwnerInfo().getScopeAnchor(); - scopeForClassHeaderResolution = new ChainedScope(this, scope, getScopeProvider().getResolutionScopeForDeclaration(scopeAnchor)); + scopeForClassHeaderResolution = new ChainedScope( + this, + "ScopeForClassHeaderResolution: " + getName(), + scope, getScopeProvider().getResolutionScopeForDeclaration(scopeAnchor)); } return scopeForClassHeaderResolution; } @@ -147,7 +150,10 @@ public class LazyClassDescriptor extends ClassDescriptorBase implements LazyDesc scope.addLabeledDeclaration(this); scope.changeLockLevel(WritableScope.LockLevel.READING); - scopeForMemberDeclarationResolution = new ChainedScope(this, scope, getScopeForMemberLookup(), getScopeForClassHeaderResolution()); + scopeForMemberDeclarationResolution = new ChainedScope( + this, + "ScopeForMemberDeclarationResolution: " + getName(), + scope, getScopeForMemberLookup(), getScopeForClassHeaderResolution()); } return scopeForMemberDeclarationResolution; } @@ -167,7 +173,10 @@ public class LazyClassDescriptor extends ClassDescriptorBase implements LazyDesc scope.changeLockLevel(WritableScope.LockLevel.READING); - scopeForPropertyInitializerResolution = new ChainedScope(this, scope, getScopeForMemberDeclarationResolution()); + scopeForPropertyInitializerResolution = new ChainedScope( + this, + "ScopeForPropertyInitializerResolution: " + getName(), + scope, getScopeForMemberDeclarationResolution()); } return scopeForPropertyInitializerResolution; } diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/lazy/LazyPackageDescriptor.java b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/lazy/LazyPackageDescriptor.java index b83184086a0..6dbfc039ab9 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/lazy/LazyPackageDescriptor.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/lazy/LazyPackageDescriptor.java @@ -46,7 +46,7 @@ public class LazyPackageDescriptor extends AbstractNamespaceDescriptorImpl imple this.lazyScope = new LazyPackageMemberScope(resolveSession, declarationProvider, this); - this.memberScope = new ChainedScope(this, lazyScope, scope); + this.memberScope = new ChainedScope(this, "Lazy package members scope: " + name, lazyScope, scope); } @NotNull diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/scopes/ChainedScope.java b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/scopes/ChainedScope.java index f0615d2dcb5..5a0b8322bf7 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/scopes/ChainedScope.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/scopes/ChainedScope.java @@ -30,13 +30,20 @@ import java.util.Set; public class ChainedScope implements JetScope { private final DeclarationDescriptor containingDeclaration; + private final String debugName; private final JetScope[] scopeChain; private Collection allDescriptors; private List implicitReceiverHierarchy; public ChainedScope(DeclarationDescriptor containingDeclaration, JetScope... scopes) { + this(containingDeclaration, "Untitled chained scope", scopes); + } + + public ChainedScope(DeclarationDescriptor containingDeclaration, String debugName, JetScope... scopes) { this.containingDeclaration = containingDeclaration; scopeChain = scopes.clone(); + + this.debugName = debugName; } @Override @@ -133,7 +140,7 @@ public class ChainedScope implements JetScope { @NotNull @Override - public Collection getDeclarationsByLabel(LabelName labelName) { + public Collection getDeclarationsByLabel(@NotNull LabelName labelName) { for (JetScope jetScope : scopeChain) { Collection declarationsByLabel = jetScope.getDeclarationsByLabel(labelName); if (!declarationsByLabel.isEmpty()) return declarationsByLabel; // TODO : merge? @@ -169,4 +176,9 @@ public class ChainedScope implements JetScope { public Collection getOwnDeclaredDescriptors() { throw new UnsupportedOperationException(); } + + @Override + public String toString() { + return debugName; + } }