Instances of ChainedScope should always have a debugMessage

This commit is contained in:
Andrey Breslav
2013-12-26 14:21:56 +04:00
parent 9353bfc449
commit debacf0554
6 changed files with 10 additions and 9 deletions
@@ -460,7 +460,7 @@ public class TypeHierarchyResolver {
context.getPackageFragments().put(file, packageFragment); context.getPackageFragments().put(file, packageFragment);
PackageViewDescriptor packageView = packageFragment.getContainingDeclaration().getPackage(packageFragment.getFqName()); PackageViewDescriptor packageView = packageFragment.getContainingDeclaration().getPackage(packageFragment.getFqName());
ChainedScope rootPlusPackageScope = new ChainedScope(packageView, packageView.getMemberScope(), outerScope); ChainedScope rootPlusPackageScope = new ChainedScope(packageView, "Root scope for " + file, packageView.getMemberScope(), outerScope);
WriteThroughScope packageScope = new WriteThroughScope(rootPlusPackageScope, packageFragment.getMemberScope(), WriteThroughScope packageScope = new WriteThroughScope(rootPlusPackageScope, packageFragment.getMemberScope(),
new TraceBasedRedeclarationHandler(trace), "package in file " + file.getName()); new TraceBasedRedeclarationHandler(trace), "package in file " + file.getName());
packageScope.changeLockLevel(WritableScope.LockLevel.BOTH); packageScope.changeLockLevel(WritableScope.LockLevel.BOTH);
@@ -178,7 +178,9 @@ public class CallExpressionResolver {
scopes.add(namespace.getMemberScope()); scopes.add(namespace.getMemberScope());
} }
JetScope scope = new ChainedScope(classifier, scopes.toArray(new JetScope[scopes.size()])); JetScope scope = new ChainedScope(
classifier, "Member scope for extended class object type " + classifier, scopes.toArray(new JetScope[scopes.size()])
);
return new NamespaceType(referencedName, scope, new ExpressionReceiver(expression, classObjectType)); return new NamespaceType(referencedName, scope, new ExpressionReceiver(expression, classObjectType));
} }
@@ -213,7 +215,9 @@ public class CallExpressionResolver {
JetScope scope; JetScope scope;
ClassifierDescriptor classifier = context.scope.getClassifier(name); ClassifierDescriptor classifier = context.scope.getClassifier(name);
if (classifier instanceof ClassDescriptor) { if (classifier instanceof ClassDescriptor) {
scope = new ChainedScope(namespace, namespace.getMemberScope(), getStaticNestedClassesScope((ClassDescriptor) classifier)); scope = new ChainedScope(
namespace, "Namespace type member scope for " + expression.getText(), namespace.getMemberScope(), getStaticNestedClassesScope((ClassDescriptor) classifier)
);
} }
else { else {
scope = namespace.getMemberScope(); scope = namespace.getMemberScope();
@@ -93,6 +93,7 @@ public class TypeSubstitutorTest extends KotlinTestWithEnvironment {
} }
typeParameters.changeLockLevel(WritableScope.LockLevel.READING); typeParameters.changeLockLevel(WritableScope.LockLevel.READING);
return new ChainedScope(module, return new ChainedScope(module,
"TypeSubstitutorTest::getContextScope()",
topLevelDeclarations, topLevelDeclarations,
typeParameters, typeParameters,
contextClass.getDefaultType().getMemberScope(), contextClass.getDefaultType().getMemberScope(),
@@ -32,7 +32,7 @@ public class JavaFullPackageScope extends ChainedScope implements JavaPackageFra
@NotNull JetScope kotlinPackageScope, @NotNull JetScope kotlinPackageScope,
@NotNull JavaPurePackageScope purePackageScope @NotNull JavaPurePackageScope purePackageScope
) { ) {
super(packageFragment, kotlinPackageScope, purePackageScope); super(packageFragment, "JavaFullPackageScope", kotlinPackageScope, purePackageScope);
this.purePackageScope = purePackageScope; this.purePackageScope = purePackageScope;
} }
@@ -37,10 +37,6 @@ public class ChainedScope implements JetScope {
private Collection<DeclarationDescriptor> allDescriptors; private Collection<DeclarationDescriptor> allDescriptors;
private List<ReceiverParameterDescriptor> implicitReceiverHierarchy; private List<ReceiverParameterDescriptor> implicitReceiverHierarchy;
public ChainedScope(DeclarationDescriptor containingDeclaration, JetScope... scopes) {
this(containingDeclaration, "Untitled chained scope", scopes);
}
public ChainedScope(DeclarationDescriptor containingDeclaration, String debugName, JetScope... scopes) { public ChainedScope(DeclarationDescriptor containingDeclaration, String debugName, JetScope... scopes) {
this.containingDeclaration = containingDeclaration; this.containingDeclaration = containingDeclaration;
scopeChain = scopes.clone(); scopeChain = scopes.clone();
@@ -215,7 +215,7 @@ public class TypeUtils {
constructor, constructor,
allNullable, allNullable,
Collections.<TypeProjection>emptyList(), Collections.<TypeProjection>emptyList(),
new ChainedScope(null, scopes)); // TODO : check intersectibility, don't use a chanied scope new ChainedScope(null, "member scope for intersection type " + constructor, scopes)); // TODO : check intersectibility, don't use a chanied scope
} }
private static class TypeUnifier { private static class TypeUnifier {