Removed usages of MemberScope.ownerDescriptor property.

This commit is contained in:
Stanislav Erokhin
2015-11-04 22:30:05 +03:00
parent b8e828e040
commit 22f78b148c
21 changed files with 72 additions and 80 deletions
@@ -61,8 +61,7 @@ class LazyOperationsLog(
public fun getText(): String {
val groupedByOwner = records.groupByTo(IdentityHashMap()) {
val owner = it.data.fieldOwner
if (owner is MemberScope) owner.ownerDescriptor else owner
it.data.fieldOwner
}.map { Pair(it.getKey(), it.getValue()) }
return groupedByOwner.map {
@@ -28,29 +28,19 @@ import org.jetbrains.kotlin.descriptors.ClassDescriptor
import org.jetbrains.kotlin.resolve.MemberComparator
class DeserializedScopeValidationVisitor : ValidationVisitor() {
override fun validateScope(scope: MemberScope, collector: DescriptorValidator.DiagnosticCollector) {
super.validateScope(scope, collector)
validateDeserializedScope(scope)
override fun validateScope(scopeOwner: DeclarationDescriptor, scope: MemberScope, collector: DescriptorValidator.DiagnosticCollector) {
super.validateScope(scopeOwner, scope, collector)
validateDeserializedScope(scopeOwner, scope)
}
}
private fun validateDeserializedScope(scope: MemberScope) {
val isPackageViewScope = scope.safeGetContainingDeclaration() is PackageViewDescriptor
private fun validateDeserializedScope(scopeOwner: DeclarationDescriptor, scope: MemberScope) {
val isPackageViewScope = scopeOwner is PackageViewDescriptor
if (scope is DeserializedMemberScope || isPackageViewScope) {
val relevantDescriptors = scope.getContributedDescriptors().filter { member ->
member is CallableMemberDescriptor && member.getKind().isReal() || (!isPackageViewScope && member is ClassDescriptor)
}
checkSorted(relevantDescriptors, scope.ownerDescriptor)
}
}
//NOTE: see TypeUtils#IntersectionScope#getContainingDeclaration()
private fun MemberScope.safeGetContainingDeclaration(): DeclarationDescriptor? {
return try {
ownerDescriptor
}
catch (e: UnsupportedOperationException) {
null
checkSorted(relevantDescriptors, scopeOwner)
}
}
@@ -84,7 +84,7 @@ public class DescriptorValidator {
return this;
}
protected void validateScope(@NotNull MemberScope scope, @NotNull DiagnosticCollector collector) {
protected void validateScope(DeclarationDescriptor scopeOwner, @NotNull MemberScope scope, @NotNull DiagnosticCollector collector) {
for (DeclarationDescriptor descriptor : DescriptorUtils.getAllDescriptors(scope)) {
if (recursiveFilter.apply(descriptor)) {
descriptor.accept(new ScopeValidatorVisitor(collector), scope);
@@ -107,7 +107,7 @@ public class DescriptorValidator {
return;
}
validateScope(type.getMemberScope(), collector);
validateScope(descriptor, type.getMemberScope(), collector);
}
private void validateReturnType(CallableDescriptor descriptor, DiagnosticCollector collector) {
@@ -191,7 +191,7 @@ public class DescriptorValidator {
public Boolean visitPackageFragmentDescriptor(
PackageFragmentDescriptor descriptor, DiagnosticCollector collector
) {
validateScope(descriptor.getMemberScope(), collector);
validateScope(descriptor, descriptor.getMemberScope(), collector);
return true;
}
@@ -199,7 +199,7 @@ public class DescriptorValidator {
public Boolean visitPackageViewDescriptor(PackageViewDescriptor descriptor, DiagnosticCollector collector) {
if (!recursiveFilter.apply(descriptor)) return false;
validateScope(descriptor.getMemberScope(), collector);
validateScope(descriptor, descriptor.getMemberScope(), collector);
return true;
}
@@ -245,7 +245,7 @@ public class DescriptorValidator {
validateType(descriptor, descriptor.getDefaultType(), collector);
validateScope(descriptor.getUnsubstitutedInnerClassesScope(), collector);
validateScope(descriptor, descriptor.getUnsubstitutedInnerClassesScope(), collector);
List<ConstructorDescriptor> primary = Lists.newArrayList();
for (ConstructorDescriptor constructorDescriptor : descriptor.getConstructors()) {
@@ -32,7 +32,11 @@ import org.jetbrains.kotlin.resolve.calls.smartcasts.DataFlowInfo;
import org.jetbrains.kotlin.resolve.lazy.JvmResolveUtil;
import org.jetbrains.kotlin.resolve.lazy.ResolveSession;
import org.jetbrains.kotlin.resolve.lazy.declarations.FileBasedDeclarationProviderFactory;
import org.jetbrains.kotlin.resolve.scopes.*;
import org.jetbrains.kotlin.resolve.scopes.LexicalScope;
import org.jetbrains.kotlin.resolve.scopes.LexicalScopeImpl;
import org.jetbrains.kotlin.resolve.scopes.MemberScope;
import org.jetbrains.kotlin.resolve.scopes.RedeclarationHandler;
import org.jetbrains.kotlin.resolve.scopes.utils.ScopeUtilsKt;
import org.jetbrains.kotlin.test.ConfigurationKind;
import org.jetbrains.kotlin.test.KotlinLiteFixture;
import org.jetbrains.kotlin.test.KotlinTestUtils;
@@ -91,7 +95,7 @@ public class DefaultModalityModifiersTest extends KotlinLiteFixture {
assert aClass instanceof KtClass;
AnalysisResult bindingContext = JvmResolveUtil.analyzeOneFileWithJavaIntegrationAndCheckForErrors(file);
final DeclarationDescriptor classDescriptor = bindingContext.getBindingContext().get(BindingContext.DECLARATION_TO_DESCRIPTOR, aClass);
return new LexicalScopeImpl(TypeTestUtilsKt.asLexicalScope(libraryScope), root, false, null,
return new LexicalScopeImpl(ScopeUtilsKt.memberScopeAsImportingScope(libraryScope), root, false, null,
"JetDefaultModalityModifiersTest", RedeclarationHandler.DO_NOTHING,
new Function1<LexicalScopeImpl.InitializeHandler, Unit>() {
@Override
@@ -16,6 +16,7 @@
package org.jetbrains.kotlin.types;
import org.jetbrains.kotlin.builtins.KotlinBuiltIns;
import org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment;
import org.jetbrains.kotlin.descriptors.FunctionDescriptor;
import org.jetbrains.kotlin.descriptors.ModuleDescriptor;
@@ -26,6 +27,7 @@ import org.jetbrains.kotlin.resolve.OverloadUtil;
import org.jetbrains.kotlin.resolve.calls.smartcasts.DataFlowInfo;
import org.jetbrains.kotlin.resolve.jvm.platform.JvmPlatform;
import org.jetbrains.kotlin.resolve.scopes.LexicalScope;
import org.jetbrains.kotlin.resolve.scopes.utils.ScopeUtilsKt;
import org.jetbrains.kotlin.test.ConfigurationKind;
import org.jetbrains.kotlin.test.KotlinLiteFixture;
import org.jetbrains.kotlin.test.KotlinTestUtils;
@@ -170,7 +172,7 @@ public class KotlinOverloadTest extends KotlinLiteFixture {
private FunctionDescriptor makeFunction(String funDecl) {
KtNamedFunction function = KtPsiFactoryKt.KtPsiFactory(getProject()).createFunction(funDecl);
LexicalScope scope = TypeTestUtilsKt.asLexicalScope(JvmPlatform.INSTANCE$.getBuiltIns().getBuiltInsPackageScope());
LexicalScope scope = TypeTestUtilsKt.builtInPackageAsLexicalScope(JvmPlatform.INSTANCE$.getBuiltIns());
return functionDescriptorResolver.resolveFunctionDescriptor(root, scope, function, KotlinTestUtils.DUMMY_TRACE, DataFlowInfo.EMPTY);
}
}
@@ -166,7 +166,7 @@ public class KotlinOverridingTest extends KotlinLiteFixture {
private FunctionDescriptor makeFunction(String funDecl) {
KtNamedFunction function = KtPsiFactoryKt.KtPsiFactory(getProject()).createFunction(funDecl);
LexicalScope scope = TypeTestUtilsKt.asLexicalScope(root.getBuiltIns().getBuiltInsPackageScope());
LexicalScope scope = TypeTestUtilsKt.builtInPackageAsLexicalScope(root.getBuiltIns());
return functionDescriptorResolver.resolveFunctionDescriptor(root, scope, function,
KotlinTestUtils.DUMMY_TRACE, DataFlowInfo.EMPTY);
}
@@ -35,6 +35,7 @@ import org.jetbrains.kotlin.psi.KtTypeProjection;
import org.jetbrains.kotlin.psi.KtTypeReference;
import org.jetbrains.kotlin.resolve.TypeResolver;
import org.jetbrains.kotlin.resolve.scopes.*;
import org.jetbrains.kotlin.resolve.scopes.utils.ScopeUtilsKt;
import org.jetbrains.kotlin.test.ConfigurationKind;
import org.jetbrains.kotlin.test.KotlinLiteFixture;
import org.jetbrains.kotlin.test.KotlinTestUtils;
@@ -200,7 +201,7 @@ public class TypeUnifierTest extends KotlinLiteFixture {
}
private TypeProjection makeTypeProjection(MemberScope scope, String typeStr) {
LexicalScope withX = new LexicalScopeImpl(TypeTestUtilsKt.asLexicalScope(scope), scope.getOwnerDescriptor(),
LexicalScope withX = new LexicalScopeImpl(ScopeUtilsKt.memberScopeAsImportingScope(scope), builtIns.getBuiltInsModule(),
false, null, "With X", RedeclarationHandler.DO_NOTHING,
new Function1<LexicalScopeImpl.InitializeHandler, Unit>() {
@Override
@@ -16,17 +16,12 @@
package org.jetbrains.kotlin.types
import org.jetbrains.kotlin.builtins.KotlinBuiltIns
import org.jetbrains.kotlin.resolve.scopes.BaseLexicalScope
import org.jetbrains.kotlin.resolve.scopes.MemberScope
import org.jetbrains.kotlin.resolve.scopes.LexicalScope
import org.jetbrains.kotlin.resolve.scopes.utils.memberScopeAsImportingScope
import org.jetbrains.kotlin.utils.Printer
public fun MemberScope.asLexicalScope(): LexicalScope {
val importingScope = memberScopeAsImportingScope()
return object : BaseLexicalScope(importingScope, ownerDescriptor) {
override fun printStructure(p: Printer) {
p.println("Util scope for tests")
}
}
}
fun KotlinBuiltIns.builtInPackageAsLexicalScope()
= LexicalScope.empty(getBuiltInsPackageScope().memberScopeAsImportingScope(), getBuiltInsModule())