From 470e9ba77623c68a1375a72c27d0c10db52a5216 Mon Sep 17 00:00:00 2001 From: Valentin Kipyatkov Date: Sat, 24 Oct 2015 15:04:45 +0300 Subject: [PATCH] Fixed --- .../kotlin/resolve/scopes/utils/ScopeUtils.kt | 2 +- .../codeInsight/ReferenceVariantsHelper.kt | 19 +++++++------------ .../completion/KDocCompletionContributor.kt | 4 ++-- .../ParameterNameAndTypeCompletion.kt | 4 ++-- .../macro/BaseJetVariableMacro.java | 7 +++---- .../macro/JetAnonymousSuperMacro.kt | 5 ++--- .../refactoring/pullUp/KotlinPullUpData.kt | 9 +++++---- 7 files changed, 22 insertions(+), 28 deletions(-) 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 d28147ee887..c45dcb481b1 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 @@ -66,7 +66,7 @@ public fun LexicalScope.getDeclarationsByLabel(labelName: Name): Collection Boolean = { true } ): Collection { diff --git a/idea/ide-common/src/org/jetbrains/kotlin/idea/codeInsight/ReferenceVariantsHelper.kt b/idea/ide-common/src/org/jetbrains/kotlin/idea/codeInsight/ReferenceVariantsHelper.kt index 806c4c58284..dd5888691f8 100644 --- a/idea/ide-common/src/org/jetbrains/kotlin/idea/codeInsight/ReferenceVariantsHelper.kt +++ b/idea/ide-common/src/org/jetbrains/kotlin/idea/codeInsight/ReferenceVariantsHelper.kt @@ -31,7 +31,6 @@ import org.jetbrains.kotlin.psi.psiUtil.getParentOfType import org.jetbrains.kotlin.resolve.BindingContext import org.jetbrains.kotlin.resolve.bindingContextUtil.getDataFlowInfo import org.jetbrains.kotlin.resolve.calls.smartcasts.SmartCastManager -import org.jetbrains.kotlin.resolve.descriptorUtil.isExtension import org.jetbrains.kotlin.resolve.isAnnotatedAsHidden import org.jetbrains.kotlin.resolve.scopes.DescriptorKindExclude import org.jetbrains.kotlin.resolve.scopes.DescriptorKindFilter @@ -39,7 +38,7 @@ import org.jetbrains.kotlin.resolve.scopes.LexicalScope import org.jetbrains.kotlin.resolve.scopes.getDescriptorsFiltered import org.jetbrains.kotlin.resolve.scopes.receivers.ExpressionReceiver import org.jetbrains.kotlin.resolve.scopes.utils.collectAllFromImportingScopes -import org.jetbrains.kotlin.resolve.scopes.utils.getDescriptorsFiltered +import org.jetbrains.kotlin.resolve.scopes.utils.getDescriptorsFromAllFiltered import org.jetbrains.kotlin.resolve.scopes.utils.memberScopeAsImportingScope import org.jetbrains.kotlin.synthetic.SyntheticJavaPropertyDescriptor import org.jetbrains.kotlin.types.KotlinType @@ -163,7 +162,7 @@ public class ReferenceVariantsHelper( descriptors.processAll(implicitReceiverTypes, implicitReceiverTypes, resolutionScope, callType, kindFilter, nameFilter) // add non-instance members - descriptors.addAll(resolutionScope.getDescriptorsFiltered(kindFilter exclude DescriptorKindExclude.Extensions, nameFilter)) + descriptors.addAll(resolutionScope.getDescriptorsFromAllFiltered(kindFilter exclude DescriptorKindExclude.Extensions, nameFilter)) } return descriptors @@ -183,7 +182,7 @@ public class ReferenceVariantsHelper( val lexicalScope = expression.getParentOfType(strict = true)?.let { context[BindingContext.LEXICAL_SCOPE, it] } ?: return emptyList() - return lexicalScope.getDescriptorsFiltered(kindFilter, nameFilter) + return lexicalScope.getDescriptorsFromAllFiltered(kindFilter, nameFilter) } } @@ -275,7 +274,7 @@ public class ReferenceVariantsHelper( filterToUse = filterToUse.withKinds(DescriptorKindFilter.NON_SINGLETON_CLASSIFIERS_MASK) } - for (descriptor in scope.getDescriptorsFiltered(filterToUse, nameFilter)) { + for (descriptor in scope.getDescriptorsFromAllFiltered(filterToUse, nameFilter)) { if (descriptor is ClassDescriptor) { if (descriptor.modality == Modality.ABSTRACT || descriptor.modality == Modality.SEALED) continue if (!constructorFilter(descriptor)) continue @@ -302,11 +301,9 @@ public class ReferenceVariantsHelper( } } - for (descriptor in resolutionScope.getDescriptors(kindFilter exclude DescriptorKindExclude.NonExtensions, nameFilter)) { + for (descriptor in resolutionScope.getDescriptorsFromAllFiltered(kindFilter exclude DescriptorKindExclude.NonExtensions, nameFilter)) { // todo: sometimes resolution scope here is LazyJavaClassMemberScope. see ea.jetbrains.com/browser/ea_problems/72572 - if (descriptor.isExtension) { - process(descriptor as CallableDescriptor) - } + process(descriptor as CallableDescriptor) } if (kindFilter.acceptsKinds(DescriptorKindFilter.VARIABLES_MASK)) { @@ -338,8 +335,6 @@ public class ReferenceVariantsHelper( nameFilter: (Name) -> Boolean ): Collection { val resolutionScope = context[BindingContext.LEXICAL_SCOPE, expression] ?: return listOf() - return resolutionScope.collectAllFromImportingScopes { - it.getDescriptorsFiltered(DescriptorKindFilter.PACKAGES, nameFilter).filter(visibilityFilter) - } + return resolutionScope.getDescriptorsFromAllFiltered(DescriptorKindFilter.PACKAGES, nameFilter).filter(visibilityFilter) } } diff --git a/idea/idea-completion/src/org/jetbrains/kotlin/idea/completion/KDocCompletionContributor.kt b/idea/idea-completion/src/org/jetbrains/kotlin/idea/completion/KDocCompletionContributor.kt index 76137855cbf..379f66abc37 100644 --- a/idea/idea-completion/src/org/jetbrains/kotlin/idea/completion/KDocCompletionContributor.kt +++ b/idea/idea-completion/src/org/jetbrains/kotlin/idea/completion/KDocCompletionContributor.kt @@ -38,7 +38,7 @@ import org.jetbrains.kotlin.psi.psiUtil.getStrictParentOfType import org.jetbrains.kotlin.resolve.BindingContext import org.jetbrains.kotlin.resolve.calls.smartcasts.DataFlowInfo import org.jetbrains.kotlin.resolve.scopes.DescriptorKindFilter -import org.jetbrains.kotlin.resolve.scopes.utils.getDescriptorsFiltered +import org.jetbrains.kotlin.resolve.scopes.utils.getDescriptorsFromAllFiltered import org.jetbrains.kotlin.resolve.scopes.utils.getImplicitReceiversHierarchy class KDocCompletionContributor(): CompletionContributor() { @@ -107,7 +107,7 @@ class KDocNameCompletionSession(parameters: CompletionParameters, return true } - scope.getDescriptorsFiltered(nameFilter = descriptorNameFilter).filter(::isApplicable).forEach { + scope.getDescriptorsFromAllFiltered(nameFilter = descriptorNameFilter).filter(::isApplicable).forEach { val element = lookupElementFactory.createLookupElement(it, useReceiverTypes = false, parametersAndTypeGrayed = true) collector.addElement(object: LookupElementDecorator(element) { override fun handleInsert(context: InsertionContext?) { diff --git a/idea/idea-completion/src/org/jetbrains/kotlin/idea/completion/ParameterNameAndTypeCompletion.kt b/idea/idea-completion/src/org/jetbrains/kotlin/idea/completion/ParameterNameAndTypeCompletion.kt index 079fbd11fd2..bfaac5a744f 100644 --- a/idea/idea-completion/src/org/jetbrains/kotlin/idea/completion/ParameterNameAndTypeCompletion.kt +++ b/idea/idea-completion/src/org/jetbrains/kotlin/idea/completion/ParameterNameAndTypeCompletion.kt @@ -42,7 +42,7 @@ import org.jetbrains.kotlin.psi.KtParameter import org.jetbrains.kotlin.psi.psiUtil.forEachDescendantOfType import org.jetbrains.kotlin.resolve.BindingContext import org.jetbrains.kotlin.resolve.scopes.DescriptorKindFilter -import org.jetbrains.kotlin.resolve.scopes.utils.getDescriptorsFiltered +import org.jetbrains.kotlin.resolve.scopes.utils.getDescriptorsFromAllFiltered import org.jetbrains.kotlin.types.KotlinType import java.util.* @@ -74,7 +74,7 @@ class ParameterNameAndTypeCompletion( public fun addFromImportedClasses(position: PsiElement, bindingContext: BindingContext, visibilityFilter: (DeclarationDescriptor) -> Boolean) { for ((classNameMatcher, userPrefix) in classNamePrefixMatchers.zip(userPrefixes)) { val resolutionScope = position.getResolutionScope(bindingContext, resolutionFacade) - val classifiers = resolutionScope.getDescriptorsFiltered(DescriptorKindFilter.NON_SINGLETON_CLASSIFIERS, classNameMatcher.asNameFilter()) + val classifiers = resolutionScope.getDescriptorsFromAllFiltered(DescriptorKindFilter.NON_SINGLETON_CLASSIFIERS, classNameMatcher.asNameFilter()) for (classifier in classifiers) { if (visibilityFilter(classifier)) { diff --git a/idea/src/org/jetbrains/kotlin/idea/liveTemplates/macro/BaseJetVariableMacro.java b/idea/src/org/jetbrains/kotlin/idea/liveTemplates/macro/BaseJetVariableMacro.java index cd341e8e93b..1f252366ed2 100644 --- a/idea/src/org/jetbrains/kotlin/idea/liveTemplates/macro/BaseJetVariableMacro.java +++ b/idea/src/org/jetbrains/kotlin/idea/liveTemplates/macro/BaseJetVariableMacro.java @@ -33,13 +33,12 @@ import org.jetbrains.annotations.Nullable; import org.jetbrains.kotlin.descriptors.DeclarationDescriptor; import org.jetbrains.kotlin.descriptors.ReceiverParameterDescriptor; import org.jetbrains.kotlin.descriptors.VariableDescriptor; -import org.jetbrains.kotlin.idea.core.UtilsKt; -import org.jetbrains.kotlin.idea.resolve.ResolutionFacade; import org.jetbrains.kotlin.idea.caches.resolve.ResolutionUtils; import org.jetbrains.kotlin.idea.core.IterableTypesDetection; import org.jetbrains.kotlin.idea.core.IterableTypesDetector; +import org.jetbrains.kotlin.idea.core.UtilsKt; +import org.jetbrains.kotlin.idea.resolve.ResolutionFacade; import org.jetbrains.kotlin.idea.util.ExtensionUtils; -import org.jetbrains.kotlin.idea.util.ScopeUtils; import org.jetbrains.kotlin.psi.*; import org.jetbrains.kotlin.resolve.BindingContext; import org.jetbrains.kotlin.resolve.DescriptorToSourceUtils; @@ -109,7 +108,7 @@ public abstract class BaseJetVariableMacro extends Macro { private static Collection getAllVariables(LexicalScope scope) { Collection result = ContainerUtil.newArrayList(); - result.addAll(scope.getDescriptors(DescriptorKindFilter.VARIABLES, KtScope.Companion.getALL_NAME_FILTER())); + result.addAll(ScopeUtilsKt.getDescriptorsFromAllFiltered(scope, DescriptorKindFilter.VARIABLES, KtScope.Companion.getALL_NAME_FILTER())); for (ReceiverParameterDescriptor implicitReceiver : ScopeUtilsKt.getImplicitReceiversHierarchy(scope)) { result.addAll(implicitReceiver.getType().getMemberScope().getDescriptors(DescriptorKindFilter.VARIABLES, KtScope.Companion.getALL_NAME_FILTER())); } diff --git a/idea/src/org/jetbrains/kotlin/idea/liveTemplates/macro/JetAnonymousSuperMacro.kt b/idea/src/org/jetbrains/kotlin/idea/liveTemplates/macro/JetAnonymousSuperMacro.kt index 532be53a524..4f962cdb0cb 100644 --- a/idea/src/org/jetbrains/kotlin/idea/liveTemplates/macro/JetAnonymousSuperMacro.kt +++ b/idea/src/org/jetbrains/kotlin/idea/liveTemplates/macro/JetAnonymousSuperMacro.kt @@ -35,8 +35,7 @@ import org.jetbrains.kotlin.psi.KtFile import org.jetbrains.kotlin.resolve.DescriptorToSourceUtils import org.jetbrains.kotlin.resolve.lazy.BodyResolveMode import org.jetbrains.kotlin.resolve.scopes.DescriptorKindFilter -import org.jetbrains.kotlin.resolve.scopes.utils.collectAllFromMeAndParent -import org.jetbrains.kotlin.resolve.scopes.utils.getDescriptorsFiltered +import org.jetbrains.kotlin.resolve.scopes.utils.getDescriptorsFromAllFiltered class JetAnonymousSuperMacro : Macro() { override fun getName() = "anonymousSuper" @@ -74,7 +73,7 @@ class JetAnonymousSuperMacro : Macro() { val resolutionScope = expression.getResolutionScope(bindingContext, expression.getResolutionFacade()) return resolutionScope - .collectAllFromMeAndParent { it.getDescriptorsFiltered(DescriptorKindFilter.NON_SINGLETON_CLASSIFIERS) } + .getDescriptorsFromAllFiltered(DescriptorKindFilter.NON_SINGLETON_CLASSIFIERS) .filter { it is ClassDescriptor && it.modality.isOverridable && (it.kind == ClassKind.CLASS || it.kind == ClassKind.INTERFACE) } .map { DescriptorToSourceUtils.descriptorToDeclaration(it) as PsiNamedElement? } .filterNotNull() diff --git a/idea/src/org/jetbrains/kotlin/idea/refactoring/pullUp/KotlinPullUpData.kt b/idea/src/org/jetbrains/kotlin/idea/refactoring/pullUp/KotlinPullUpData.kt index 460495ba358..50f5b24e53d 100644 --- a/idea/src/org/jetbrains/kotlin/idea/refactoring/pullUp/KotlinPullUpData.kt +++ b/idea/src/org/jetbrains/kotlin/idea/refactoring/pullUp/KotlinPullUpData.kt @@ -27,14 +27,14 @@ import org.jetbrains.kotlin.psi.KtClassOrObject import org.jetbrains.kotlin.psi.KtNamedDeclaration import org.jetbrains.kotlin.resolve.BindingContext import org.jetbrains.kotlin.resolve.scopes.DescriptorKindFilter -import org.jetbrains.kotlin.resolve.scopes.utils.getDescriptorsFiltered +import org.jetbrains.kotlin.resolve.scopes.utils.getDescriptorsFromAllFiltered import org.jetbrains.kotlin.types.TypeConstructor import org.jetbrains.kotlin.types.TypeProjection import org.jetbrains.kotlin.types.TypeProjectionImpl import org.jetbrains.kotlin.types.TypeSubstitutor import org.jetbrains.kotlin.types.substitutions.getTypeSubstitution import org.jetbrains.kotlin.utils.keysToMap -import java.util.LinkedHashMap +import java.util.* class KotlinPullUpData(val sourceClass: KtClassOrObject, val targetClass: PsiNamedElement, @@ -50,8 +50,9 @@ class KotlinPullUpData(val sourceClass: KtClassOrObject, val targetClassDescriptor = targetClass.getClassDescriptorIfAny(resolutionFacade)!! val typeParametersInSourceClassContext by lazy { - sourceClassDescriptor.typeConstructor.parameters + sourceClass.getResolutionScope(sourceClassContext, resolutionFacade) - .getDescriptorsFiltered(DescriptorKindFilter.NON_SINGLETON_CLASSIFIERS) + sourceClassDescriptor.typeConstructor.parameters + + sourceClass.getResolutionScope(sourceClassContext, resolutionFacade) + .getDescriptorsFromAllFiltered(DescriptorKindFilter.NON_SINGLETON_CLASSIFIERS) .filterIsInstance() }