From 16d585e204471b9a9e1254524294d4665c7b5303 Mon Sep 17 00:00:00 2001 From: Zalim Bashorov Date: Fri, 30 Oct 2015 16:43:26 +0300 Subject: [PATCH] Don't track lookups: * when find local variables we don't need them for incremental compilation; * when check overrides we going to track inheritance separatly; * when get companion object descriptor; * when find Descriptor by fqname isn't interesting now because used from light-classes and and java-loder; * when create qualifier we already looked up names in this context before. --- .../jetbrains/kotlin/resolve/OverrideResolver.java | 4 ++-- .../kotlin/resolve/lazy/ResolveSessionUtils.java | 2 +- .../lazy/descriptors/LazyClassDescriptor.java | 2 +- .../kotlin/resolve/scopes/receivers/Qualifier.kt | 12 ++++-------- .../kotlin/resolve/scopes/utils/ScopeUtils.kt | 2 +- 5 files changed, 9 insertions(+), 13 deletions(-) diff --git a/compiler/frontend/src/org/jetbrains/kotlin/resolve/OverrideResolver.java b/compiler/frontend/src/org/jetbrains/kotlin/resolve/OverrideResolver.java index 4723b34612e..f5111b19428 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/resolve/OverrideResolver.java +++ b/compiler/frontend/src/org/jetbrains/kotlin/resolve/OverrideResolver.java @@ -794,9 +794,9 @@ public class OverrideResolver { ) { for (KotlinType supertype : declaringClass.getTypeConstructor().getSupertypes()) { Set all = Sets.newLinkedHashSet(); - all.addAll(supertype.getMemberScope().getFunctions(declared.getName(), NoLookupLocation.UNSORTED)); + all.addAll(supertype.getMemberScope().getFunctions(declared.getName(), NoLookupLocation.WHEN_CHECK_OVERRIDES)); //noinspection unchecked - all.addAll((Collection) supertype.getMemberScope().getProperties(declared.getName(), NoLookupLocation.UNSORTED)); + all.addAll((Collection) supertype.getMemberScope().getProperties(declared.getName(), NoLookupLocation.WHEN_CHECK_OVERRIDES)); for (CallableMemberDescriptor fromSuper : all) { if (OverridingUtil.DEFAULT.isOverridableBy(fromSuper, declared).getResult() == OVERRIDABLE) { if (Visibilities.isVisible(ReceiverValue.IRRELEVANT_RECEIVER, fromSuper, declared)) { diff --git a/compiler/frontend/src/org/jetbrains/kotlin/resolve/lazy/ResolveSessionUtils.java b/compiler/frontend/src/org/jetbrains/kotlin/resolve/lazy/ResolveSessionUtils.java index 010191450b3..bf48cbae275 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/resolve/lazy/ResolveSessionUtils.java +++ b/compiler/frontend/src/org/jetbrains/kotlin/resolve/lazy/ResolveSessionUtils.java @@ -81,7 +81,7 @@ public class ResolveSessionUtils { KtScope scope = outerScope; for (Name name : path.pathSegments()) { - ClassifierDescriptor classifier = scope.getClassifier(name, NoLookupLocation.UNSORTED); + ClassifierDescriptor classifier = scope.getClassifier(name, NoLookupLocation.WHEN_FIND_BY_FQNAME); if (!(classifier instanceof ClassDescriptor)) return null; scope = ((ClassDescriptor) classifier).getUnsubstitutedInnerClassesScope(); } 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 4498b60ea57..70600b7ca10 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 @@ -358,7 +358,7 @@ public class LazyClassDescriptor extends ClassDescriptorBase implements ClassDes } Name name = ((JetClassOrObjectInfo) companionObjectInfo).getName(); assert name != null; - getUnsubstitutedMemberScope().getClassifier(name, NoLookupLocation.UNSORTED); + getUnsubstitutedMemberScope().getClassifier(name, NoLookupLocation.WHEN_GET_COMPANION_OBJECT); ClassDescriptor companionObjectDescriptor = c.getTrace().get(BindingContext.CLASS, companionObject); if (companionObjectDescriptor instanceof LazyClassDescriptor) { assert DescriptorUtils.isCompanionObject(companionObjectDescriptor) : "Not a companion object: " + companionObjectDescriptor; diff --git a/compiler/frontend/src/org/jetbrains/kotlin/resolve/scopes/receivers/Qualifier.kt b/compiler/frontend/src/org/jetbrains/kotlin/resolve/scopes/receivers/Qualifier.kt index c0f41a8f7c1..d76030c574c 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/resolve/scopes/receivers/Qualifier.kt +++ b/compiler/frontend/src/org/jetbrains/kotlin/resolve/scopes/receivers/Qualifier.kt @@ -17,17 +17,13 @@ package org.jetbrains.kotlin.resolve.scopes.receivers import org.jetbrains.kotlin.descriptors.* -import org.jetbrains.kotlin.diagnostics.Errors.EXPRESSION_EXPECTED_PACKAGE_FOUND -import org.jetbrains.kotlin.diagnostics.Errors.NO_COMPANION_OBJECT -import org.jetbrains.kotlin.diagnostics.Errors.TYPE_PARAMETER_IS_NOT_AN_EXPRESSION -import org.jetbrains.kotlin.diagnostics.Errors.TYPE_PARAMETER_ON_LHS_OF_DOT +import org.jetbrains.kotlin.diagnostics.Errors.* +import org.jetbrains.kotlin.incremental.components.NoLookupLocation import org.jetbrains.kotlin.name.Name import org.jetbrains.kotlin.psi.KtExpression import org.jetbrains.kotlin.psi.KtSimpleNameExpression import org.jetbrains.kotlin.psi.psiUtil.getTopmostParentQualifiedExpressionForSelector -import org.jetbrains.kotlin.resolve.BindingContext.QUALIFIER -import org.jetbrains.kotlin.resolve.BindingContext.REFERENCE_TARGET -import org.jetbrains.kotlin.resolve.BindingContext.SHORT_REFERENCE_TO_COMPANION_OBJECT +import org.jetbrains.kotlin.resolve.BindingContext.* import org.jetbrains.kotlin.resolve.DescriptorUtils import org.jetbrains.kotlin.resolve.DescriptorUtils.getFqName import org.jetbrains.kotlin.resolve.bindingContextUtil.recordScope @@ -158,7 +154,7 @@ fun createQualifier( val name = expression.getReferencedNameAsName() val packageViewDescriptor = receiverScope.getPackage(name) - val classifierDescriptor = receiverScope.getClassifier(name) + val classifierDescriptor = receiverScope.getClassifier(name, NoLookupLocation.WHEN_TYPING) if (packageViewDescriptor == null && classifierDescriptor == null) return null 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 22faa51fbdb..1ddebcc5f8b 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 @@ -84,7 +84,7 @@ public fun LexicalScope.findLocalVariable(name: Name): VariableDescriptor? { it is MemberScopeToImportingScopeAdapter -> it.memberScope.getLocalVariable(name) /* todo remove hack*/ - it !is ImportingScope && it !is LexicalChainedScope -> it.getContributedVariables(name, NoLookupLocation.UNSORTED).singleOrNull() /* todo check this*/ + it !is ImportingScope && it !is LexicalChainedScope -> it.getContributedVariables(name, NoLookupLocation.WHEN_GET_LOCAL_VARIABLE).singleOrNull() /* todo check this*/ else -> null }