From 1983a9f3da25964e2eba4bebebfde0e9024ca088 Mon Sep 17 00:00:00 2001 From: Valentin Kipyatkov Date: Thu, 30 Oct 2014 13:42:46 +0300 Subject: [PATCH] Replaced usages of JetScope.getAllDescriptors() with JetScope.getDescriptors() (where makes sense) --- .../jetbrains/jet/backend/common/CodegenUtilKt.kt | 3 ++- .../org/jetbrains/jet/codegen/PackageCodegen.java | 3 ++- ...ilderFactoryForDuplicateSignatureDiagnostics.kt | 3 ++- .../builtins-serializer/src/BuiltInsSerializer.kt | 5 +++-- .../src/ClassSerializationUtil.kt | 3 ++- .../compiler/CliLightClassGenerationSupport.java | 3 ++- .../jet/lang/resolve/OverrideResolver.java | 7 +++---- .../lazy/descriptors/AbstractLazyMemberScope.kt | 2 +- .../lazy/descriptors/LazyClassMemberScope.kt | 2 +- .../jet/lang/resolve/scopes/JetScopeUtils.java | 2 +- .../jet/lang/resolve/scopes/WritableScopeImpl.kt | 4 ++-- .../jet/lang/resolve/scopes/WriteThroughScope.kt | 4 ++-- .../java/lazy/descriptors/LazyJavaMemberScope.kt | 2 +- .../java/lazy/descriptors/LazyJavaStaticScope.kt | 2 +- .../jet/lang/resolve/scopes/ChainedScope.kt | 2 +- .../resolve/scopes/InnerClassesScopeWrapper.kt | 8 ++++---- .../jetbrains/jet/lang/resolve/scopes/JetScope.kt | 7 ++++++- .../jet/lang/resolve/scopes/SubstitutingScope.kt | 2 +- .../jet/plugin/codeInsight/TipsManager.kt | 14 ++++++++------ .../liveTemplates/macro/BaseJetVariableMacro.java | 2 +- .../macro/JetAnonymousSuperMacro.java | 2 +- .../k2js/translate/utils/ManglingUtils.java | 2 +- 22 files changed, 48 insertions(+), 36 deletions(-) diff --git a/compiler/backend-common/src/org/jetbrains/jet/backend/common/CodegenUtilKt.kt b/compiler/backend-common/src/org/jetbrains/jet/backend/common/CodegenUtilKt.kt index 2d36b04c5c8..fef8c0699fe 100644 --- a/compiler/backend-common/src/org/jetbrains/jet/backend/common/CodegenUtilKt.kt +++ b/compiler/backend-common/src/org/jetbrains/jet/backend/common/CodegenUtilKt.kt @@ -25,6 +25,7 @@ import org.jetbrains.jet.utils.keysToMapExceptNulls import org.jetbrains.jet.lang.resolve.DescriptorUtils import org.jetbrains.jet.lang.resolve.MemberComparator import java.util.Comparator +import org.jetbrains.jet.lang.resolve.scopes.JetScope public object CodegenUtilKt { @@ -39,7 +40,7 @@ public object CodegenUtilKt { delegateExpressionType: JetType? = null ): Map { - return descriptor.getDefaultType().getMemberScope().getAllDescriptors().stream() + return descriptor.getDefaultType().getMemberScope().getDescriptors().stream() .filterIsInstance(javaClass()) .filter { it.getKind() == CallableMemberDescriptor.Kind.DELEGATION } .toList() diff --git a/compiler/backend/src/org/jetbrains/jet/codegen/PackageCodegen.java b/compiler/backend/src/org/jetbrains/jet/codegen/PackageCodegen.java index 8724bc7aa1f..d0e0616bcff 100644 --- a/compiler/backend/src/org/jetbrains/jet/codegen/PackageCodegen.java +++ b/compiler/backend/src/org/jetbrains/jet/codegen/PackageCodegen.java @@ -54,6 +54,7 @@ import org.jetbrains.jet.lang.resolve.java.jvmSignature.JvmMethodSignature; import org.jetbrains.jet.lang.resolve.kotlin.PackagePartClassUtils; import org.jetbrains.jet.lang.resolve.kotlin.incremental.IncrementalPackageFragmentProvider; import org.jetbrains.jet.lang.resolve.name.FqName; +import org.jetbrains.jet.lang.resolve.scopes.JetScope; import org.jetbrains.org.objectweb.asm.AnnotationVisitor; import org.jetbrains.org.objectweb.asm.MethodVisitor; import org.jetbrains.org.objectweb.asm.Type; @@ -150,7 +151,7 @@ public class PackageCodegen { return Collections.emptyList(); } List callables = Lists.newArrayList(); - for (DeclarationDescriptor member : packageFragment.getMemberScope().getAllDescriptors()) { + for (DeclarationDescriptor member : packageFragment.getMemberScope().getDescriptors(JetScope.DescriptorKind.CALLABLES, JetScope.ALL_NAME_FILTER)) { if (member instanceof DeserializedCallableMemberDescriptor) { callables.add((DeserializedCallableMemberDescriptor) member); } diff --git a/compiler/backend/src/org/jetbrains/jet/codegen/state/BuilderFactoryForDuplicateSignatureDiagnostics.kt b/compiler/backend/src/org/jetbrains/jet/codegen/state/BuilderFactoryForDuplicateSignatureDiagnostics.kt index 3c1c27a6e1c..46f71c409e8 100644 --- a/compiler/backend/src/org/jetbrains/jet/codegen/state/BuilderFactoryForDuplicateSignatureDiagnostics.kt +++ b/compiler/backend/src/org/jetbrains/jet/codegen/state/BuilderFactoryForDuplicateSignatureDiagnostics.kt @@ -31,6 +31,7 @@ import org.jetbrains.jet.codegen.ClassBuilderMode import org.jetbrains.jet.lang.resolve.java.descriptor.SamAdapterDescriptor import org.jetbrains.jet.lang.resolve.DescriptorToSourceUtils import org.jetbrains.jet.lang.diagnostics.DiagnosticSink +import org.jetbrains.jet.lang.resolve.scopes.JetScope class BuilderFactoryForDuplicateSignatureDiagnostics( builderFactory: ClassBuilderFactory, @@ -127,7 +128,7 @@ class BuilderFactoryForDuplicateSignatureDiagnostics( } } - for (member in descriptor.getDefaultType().getMemberScope().getAllDescriptors()) { + for (member in descriptor.getDefaultType().getMemberScope().getDescriptors()) { processMember(member) } diff --git a/compiler/builtins-serializer/src/BuiltInsSerializer.kt b/compiler/builtins-serializer/src/BuiltInsSerializer.kt index 0d5553885b7..2056d200915 100644 --- a/compiler/builtins-serializer/src/BuiltInsSerializer.kt +++ b/compiler/builtins-serializer/src/BuiltInsSerializer.kt @@ -47,6 +47,7 @@ import org.jetbrains.jet.analyzer.ModuleInfo import org.jetbrains.jet.lang.resolve.java.JvmPlatformParameters import org.jetbrains.jet.analyzer.ModuleContent import org.jetbrains.jet.lang.resolve.kotlin.DeserializedResolverUtils +import org.jetbrains.jet.lang.resolve.scopes.JetScope public class BuiltInsSerializer(val out: PrintStream?) { private var totalSize = 0 @@ -116,9 +117,9 @@ public class BuiltInsSerializer(val out: PrintStream?) { }) val classNames = ArrayList() - val allDescriptors = DescriptorSerializer.sort(packageView.getMemberScope().getAllDescriptors()) + val classifierDescriptors = DescriptorSerializer.sort(packageView.getMemberScope().getDescriptors({ it == JetScope.DescriptorKind.CLASSIFIER })) - ClassSerializationUtil.serializeClasses(allDescriptors, serializer, object : ClassSerializationUtil.Sink { + ClassSerializationUtil.serializeClasses(classifierDescriptors, serializer, object : ClassSerializationUtil.Sink { override fun writeClass(classDescriptor: ClassDescriptor, classProto: ProtoBuf.Class) { val stream = ByteArrayOutputStream() classProto.writeTo(stream) diff --git a/compiler/builtins-serializer/src/ClassSerializationUtil.kt b/compiler/builtins-serializer/src/ClassSerializationUtil.kt index 41359cc8f0d..9d74e9db8df 100644 --- a/compiler/builtins-serializer/src/ClassSerializationUtil.kt +++ b/compiler/builtins-serializer/src/ClassSerializationUtil.kt @@ -20,6 +20,7 @@ import org.jetbrains.jet.descriptors.serialization.DescriptorSerializer import org.jetbrains.jet.descriptors.serialization.ProtoBuf import org.jetbrains.jet.lang.descriptors.ClassDescriptor import org.jetbrains.jet.lang.descriptors.DeclarationDescriptor +import org.jetbrains.jet.lang.resolve.scopes.JetScope public object ClassSerializationUtil { public trait Sink { @@ -30,7 +31,7 @@ public object ClassSerializationUtil { val classProto = serializer.classProto(classDescriptor).build() ?: error("Class not serialized: $classDescriptor") sink.writeClass(classDescriptor, classProto) - serializeClasses(classDescriptor.getUnsubstitutedInnerClassesScope().getAllDescriptors(), serializer, sink) + serializeClasses(classDescriptor.getUnsubstitutedInnerClassesScope().getDescriptors(), serializer, sink) val classObjectDescriptor = classDescriptor.getClassObjectDescriptor() if (classObjectDescriptor != null) { diff --git a/compiler/cli/src/org/jetbrains/jet/cli/jvm/compiler/CliLightClassGenerationSupport.java b/compiler/cli/src/org/jetbrains/jet/cli/jvm/compiler/CliLightClassGenerationSupport.java index 2b324b35d92..278f85b1c80 100644 --- a/compiler/cli/src/org/jetbrains/jet/cli/jvm/compiler/CliLightClassGenerationSupport.java +++ b/compiler/cli/src/org/jetbrains/jet/cli/jvm/compiler/CliLightClassGenerationSupport.java @@ -42,6 +42,7 @@ import org.jetbrains.jet.lang.resolve.*; import org.jetbrains.jet.lang.resolve.java.TopDownAnalyzerFacadeForJVM; import org.jetbrains.jet.lang.resolve.java.JvmAbi; import org.jetbrains.jet.lang.resolve.name.FqName; +import org.jetbrains.jet.lang.resolve.scopes.JetScope; import org.jetbrains.jet.lang.types.lang.KotlinBuiltIns; import org.jetbrains.jet.util.slicedmap.WritableSlice; @@ -215,7 +216,7 @@ public class CliLightClassGenerationSupport extends LightClassGenerationSupport PackageViewDescriptor packageView = getModule().getPackage(fqn); if (packageView == null) return Collections.emptyList(); - Collection members = packageView.getMemberScope().getAllDescriptors(); + Collection members = packageView.getMemberScope().getDescriptors(JetScope.DescriptorKind.PACKAGES, JetScope.ALL_NAME_FILTER); return ContainerUtil.mapNotNull(members, new Function() { @Override public FqName fun(DeclarationDescriptor member) { diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/OverrideResolver.java b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/OverrideResolver.java index ddc812c7107..396e0c01dbb 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/OverrideResolver.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/OverrideResolver.java @@ -37,7 +37,6 @@ import org.jetbrains.jet.lang.psi.*; import org.jetbrains.jet.lang.resolve.calls.CallResolverUtil; import org.jetbrains.jet.lang.resolve.dataClassUtils.DataClassUtilsPackage; import org.jetbrains.jet.lang.resolve.name.Name; -import org.jetbrains.jet.lang.resolve.scopes.JetScope; import org.jetbrains.jet.lang.types.*; import org.jetbrains.jet.lang.types.checker.JetTypeChecker; import org.jetbrains.jet.lang.types.lang.KotlinBuiltIns; @@ -318,14 +317,14 @@ public class OverrideResolver { private static List getCallableMembersFromSupertypes(ClassDescriptor classDescriptor) { Set r = Sets.newLinkedHashSet(); for (JetType supertype : classDescriptor.getTypeConstructor().getSupertypes()) { - r.addAll(getCallableMembersFromType(supertype.getMemberScope())); + r.addAll(getCallableMembersFromType(supertype)); } return new ArrayList(r); } - private static List getCallableMembersFromType(JetScope scope) { + private static List getCallableMembersFromType(JetType type) { List r = Lists.newArrayList(); - for (DeclarationDescriptor decl : scope.getAllDescriptors()) { + for (DeclarationDescriptor decl : type.getMemberScope().getAllDescriptors()) { if (decl instanceof PropertyDescriptor || decl instanceof SimpleFunctionDescriptor) { r.add((CallableMemberDescriptor) decl); } diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/lazy/descriptors/AbstractLazyMemberScope.kt b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/lazy/descriptors/AbstractLazyMemberScope.kt index ff101bd971e..61128d26848 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/lazy/descriptors/AbstractLazyMemberScope.kt +++ b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/lazy/descriptors/AbstractLazyMemberScope.kt @@ -183,7 +183,7 @@ public abstract class AbstractLazyMemberScope { val result = ArrayList() for (supertype in thisDescriptor.getTypeConstructor().getSupertypes()) { - for (descriptor in supertype.getMemberScope().getAllDescriptors()) { + for (descriptor in supertype.getMemberScope().getDescriptors()) { if (descriptor is FunctionDescriptor) { result.addAll(getFunctions(descriptor.getName())) } diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/scopes/JetScopeUtils.java b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/scopes/JetScopeUtils.java index 152262bde21..305b05e6a76 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/scopes/JetScopeUtils.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/scopes/JetScopeUtils.java @@ -61,7 +61,7 @@ public final class JetScopeUtils { public static Collection getAllExtensions(@NotNull JetScope scope) { Set result = Sets.newHashSet(); - for (DeclarationDescriptor descriptor : scope.getAllDescriptors()) { + for (DeclarationDescriptor descriptor : scope.getDescriptors(JetScope.DescriptorKind.EXTENSIONS, JetScope.ALL_NAME_FILTER)) { if (descriptor instanceof CallableDescriptor) { CallableDescriptor callDescriptor = (CallableDescriptor) descriptor; if (callDescriptor.getExtensionReceiverParameter() != null) { diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/scopes/WritableScopeImpl.kt b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/scopes/WritableScopeImpl.kt index 3c858c5a9dd..816d08c0ff0 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/scopes/WritableScopeImpl.kt +++ b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/scopes/WritableScopeImpl.kt @@ -109,9 +109,9 @@ public class WritableScopeImpl(scope: JetScope, // make sure no descriptors added to allDescriptors collection changeLockLevel(WritableScope.LockLevel.READING) - allDescriptors.addAll(workerScope.getAllDescriptors()) + allDescriptors.addAll(workerScope.getDescriptors()) for (imported in getImports()) { - allDescriptors.addAll(imported.getAllDescriptors()) + allDescriptors.addAll(imported.getDescriptors()) } } return allDescriptors diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/scopes/WriteThroughScope.kt b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/scopes/WriteThroughScope.kt index 01d3b3f23bd..b3f2d914afe 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/scopes/WriteThroughScope.kt +++ b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/scopes/WriteThroughScope.kt @@ -170,10 +170,10 @@ public class WriteThroughScope(outerScope: JetScope, private val writableWorker: if (_allDescriptors == null) { _allDescriptors = Lists.newArrayList() - _allDescriptors!!.addAll(workerScope.getAllDescriptors()) + _allDescriptors!!.addAll(workerScope.getDescriptors()) for (imported in getImports()) { - _allDescriptors!!.addAll(imported.getAllDescriptors()) + _allDescriptors!!.addAll(imported.getDescriptors()) } } return _allDescriptors!! diff --git a/core/descriptor.loader.java/src/org/jetbrains/jet/lang/resolve/java/lazy/descriptors/LazyJavaMemberScope.kt b/core/descriptor.loader.java/src/org/jetbrains/jet/lang/resolve/java/lazy/descriptors/LazyJavaMemberScope.kt index 00ae488e5cb..e95324fa55f 100644 --- a/core/descriptor.loader.java/src/org/jetbrains/jet/lang/resolve/java/lazy/descriptors/LazyJavaMemberScope.kt +++ b/core/descriptor.loader.java/src/org/jetbrains/jet/lang/resolve/java/lazy/descriptors/LazyJavaMemberScope.kt @@ -282,7 +282,7 @@ public abstract class LazyJavaMemberScope( override fun getLocalVariable(name: Name): VariableDescriptor? = null override fun getDeclarationsByLabel(labelName: Name) = listOf() - override fun getOwnDeclaredDescriptors() = getAllDescriptors() + override fun getOwnDeclaredDescriptors() = getDescriptors() override fun getDescriptors(kindFilter: (JetScope.DescriptorKind) -> Boolean, nameFilter: (String) -> Boolean) = allDescriptors() diff --git a/core/descriptor.loader.java/src/org/jetbrains/jet/lang/resolve/java/lazy/descriptors/LazyJavaStaticScope.kt b/core/descriptor.loader.java/src/org/jetbrains/jet/lang/resolve/java/lazy/descriptors/LazyJavaStaticScope.kt index fed20d8a4fe..9db97439cca 100644 --- a/core/descriptor.loader.java/src/org/jetbrains/jet/lang/resolve/java/lazy/descriptors/LazyJavaStaticScope.kt +++ b/core/descriptor.loader.java/src/org/jetbrains/jet/lang/resolve/java/lazy/descriptors/LazyJavaStaticScope.kt @@ -102,7 +102,7 @@ public class LazyPackageFragmentScopeForJavaPackage( override fun getFunctions(name: Name) = deserializedPackageScope().getFunctions(name) + super.getFunctions(name) override fun addExtraDescriptors(result: MutableSet) { - result.addAll(deserializedPackageScope().getAllDescriptors()) + result.addAll(deserializedPackageScope().getDescriptors()) } override fun computeMemberIndex(): MemberIndex = object : MemberIndex by EMPTY_MEMBER_INDEX { diff --git a/core/descriptors/src/org/jetbrains/jet/lang/resolve/scopes/ChainedScope.kt b/core/descriptors/src/org/jetbrains/jet/lang/resolve/scopes/ChainedScope.kt index 227a9531f2b..c8adc6b6ff8 100644 --- a/core/descriptors/src/org/jetbrains/jet/lang/resolve/scopes/ChainedScope.kt +++ b/core/descriptors/src/org/jetbrains/jet/lang/resolve/scopes/ChainedScope.kt @@ -77,7 +77,7 @@ public class ChainedScope(private val containingDeclaration: DeclarationDescript if (_allDescriptors == null) { _allDescriptors = HashSet() for (scope in scopeChain) { - _allDescriptors!!.addAll(scope.getAllDescriptors()) + _allDescriptors!!.addAll(scope.getDescriptors()) } } return _allDescriptors!! diff --git a/core/descriptors/src/org/jetbrains/jet/lang/resolve/scopes/InnerClassesScopeWrapper.kt b/core/descriptors/src/org/jetbrains/jet/lang/resolve/scopes/InnerClassesScopeWrapper.kt index ff11f5c5522..aab6640833c 100644 --- a/core/descriptors/src/org/jetbrains/jet/lang/resolve/scopes/InnerClassesScopeWrapper.kt +++ b/core/descriptors/src/org/jetbrains/jet/lang/resolve/scopes/InnerClassesScopeWrapper.kt @@ -17,11 +17,8 @@ package org.jetbrains.jet.lang.resolve.scopes import org.jetbrains.jet.lang.descriptors.ClassDescriptor -import org.jetbrains.jet.lang.descriptors.ClassifierDescriptor -import org.jetbrains.jet.lang.descriptors.DeclarationDescriptor import org.jetbrains.jet.lang.descriptors.ReceiverParameterDescriptor import org.jetbrains.jet.lang.resolve.name.Name -import java.util.Collections public class InnerClassesScopeWrapper(override val workerScope: JetScope) : AbstractScopeAdapter() { @@ -30,7 +27,10 @@ public class InnerClassesScopeWrapper(override val workerScope: JetScope) : Abst override fun getDeclarationsByLabel(labelName: Name) = workerScope.getDeclarationsByLabel(labelName).filterIsInstance(javaClass()) override fun getDescriptors(kindFilter: (JetScope.DescriptorKind) -> Boolean, - nameFilter: (String) -> Boolean) = workerScope.getDescriptors(kindFilter, nameFilter).filterIsInstance(javaClass()) + nameFilter: (String) -> Boolean): List { + if (!kindFilter(JetScope.DescriptorKind.CLASSIFIER)) return listOf() + return workerScope.getDescriptors({ it == JetScope.DescriptorKind.CLASSIFIER }, nameFilter).filterIsInstance(javaClass()) + } override fun getImplicitReceiversHierarchy(): List = listOf() diff --git a/core/descriptors/src/org/jetbrains/jet/lang/resolve/scopes/JetScope.kt b/core/descriptors/src/org/jetbrains/jet/lang/resolve/scopes/JetScope.kt index 113d7b179d4..3cd8db20410 100644 --- a/core/descriptors/src/org/jetbrains/jet/lang/resolve/scopes/JetScope.kt +++ b/core/descriptors/src/org/jetbrains/jet/lang/resolve/scopes/JetScope.kt @@ -44,7 +44,7 @@ public trait JetScope { * * @return All visible descriptors from current scope. */ - public fun getAllDescriptors(): Collection = getDescriptors(DescriptorKind.ALL, {true}) + public fun getAllDescriptors(): Collection = getDescriptors() /** * All visible descriptors from current scope possibly filtered by the given name and kind filters @@ -90,7 +90,12 @@ public trait JetScope { public val ALL: (DescriptorKind) -> Boolean = { true } public val EXTENSIONS: (DescriptorKind) -> Boolean = { it == EXTENSION_FUNCTION || it == EXTENSION_PROPERTY } public val FUNCTIONS: (DescriptorKind) -> Boolean = { it == NON_EXTENSION_FUNCTION || it == EXTENSION_FUNCTION } + public val CALLABLES: (DescriptorKind) -> Boolean = { it != CLASSIFIER && it != PACKAGE } public val NON_EXTENSION_CALLABLES: (DescriptorKind) -> Boolean = { it == NON_EXTENSION_FUNCTION || it == NON_EXTENSION_PROPERTY || it == LOCAL_VARIABLE } + public val NON_EXTENSIONS: (DescriptorKind) -> Boolean = { it != EXTENSION_FUNCTION && it != EXTENSION_PROPERTY } + public val CLASSIFIERS: (DescriptorKind) -> Boolean = { it == CLASSIFIER } + public val PACKAGES: (DescriptorKind) -> Boolean = { it == PACKAGE } + public val VARIABLES_AND_PROPERTIES: (DescriptorKind) -> Boolean = { it == LOCAL_VARIABLE || it == NON_EXTENSION_PROPERTY || it == EXTENSION_PROPERTY } } } diff --git a/core/descriptors/src/org/jetbrains/jet/lang/resolve/scopes/SubstitutingScope.kt b/core/descriptors/src/org/jetbrains/jet/lang/resolve/scopes/SubstitutingScope.kt index b8b7be2dc0f..1af94eea9fb 100644 --- a/core/descriptors/src/org/jetbrains/jet/lang/resolve/scopes/SubstitutingScope.kt +++ b/core/descriptors/src/org/jetbrains/jet/lang/resolve/scopes/SubstitutingScope.kt @@ -28,7 +28,7 @@ public class SubstitutingScope(private val workerScope: JetScope, private val su private var substitutedDescriptors: MutableMap? = null - private val _allDescriptors by Delegates.lazy { substitute(workerScope.getAllDescriptors()) } + private val _allDescriptors by Delegates.lazy { substitute(workerScope.getDescriptors()) } private fun substitute(descriptor: D?): D? { if (descriptor == null) return null diff --git a/idea/src/org/jetbrains/jet/plugin/codeInsight/TipsManager.kt b/idea/src/org/jetbrains/jet/plugin/codeInsight/TipsManager.kt index d2d1622a32c..25def7c00e5 100644 --- a/idea/src/org/jetbrains/jet/plugin/codeInsight/TipsManager.kt +++ b/idea/src/org/jetbrains/jet/plugin/codeInsight/TipsManager.kt @@ -56,8 +56,9 @@ public object TipsManager{ val qualifier = context[BindingContext.QUALIFIER, receiverExpression] if (qualifier != null) { + //TODO: filter out extensions! // It's impossible to add extension function for package or class (if it's class object, expression type is not null) - qualifier.scope.getAllDescriptors().filterTo(descriptors, ::filterIfInfix) + qualifier.scope.getDescriptors(JetScope.DescriptorKind.NON_EXTENSIONS).filterTo(descriptors, ::filterIfInfix) } val expressionType = context[BindingContext.EXPRESSION_TYPE, receiverExpression] @@ -66,7 +67,8 @@ public object TipsManager{ val dataFlowInfo = context.getDataFlowInfo(expression) for (variant in SmartCastUtils.getSmartCastVariants(receiverValue, context, dataFlowInfo)) { - variant.getMemberScope().getAllDescriptors().filterTo(descriptors) { filterIfInfix(it) && !it.isExtension } + //TODO: filter out nested classes! + variant.getMemberScope().getDescriptors().filterTo(descriptors) { filterIfInfix(it) && !it.isExtension } } JetScopeUtils.getAllExtensions(resolutionScope).filterTo(descriptors) { @@ -79,16 +81,16 @@ public object TipsManager{ } if (parent is JetImportDirective || parent is JetPackageDirective) { - return excludeNonPackageDescriptors(resolutionScope.getAllDescriptors()) + return excludeNonPackageDescriptors(resolutionScope.getDescriptors({ it == JetScope.DescriptorKind.PACKAGE })) } else { val descriptorsSet = HashSet() for (receiverDescriptor in resolutionScope.getImplicitReceiversHierarchy()) { - receiverDescriptor.getType().getMemberScope().getAllDescriptors().filterTo(descriptorsSet) { !it.isExtension } + receiverDescriptor.getType().getMemberScope().getDescriptors().filterTo(descriptorsSet) { !it.isExtension } } - descriptorsSet.addAll(resolutionScope.getAllDescriptors()) + descriptorsSet.addAll(resolutionScope.getDescriptors()) descriptorsSet.excludeNotCallableExtensions(resolutionScope, context, context.getDataFlowInfo(expression)) @@ -98,7 +100,7 @@ public object TipsManager{ public fun getPackageReferenceVariants(expression: JetSimpleNameExpression, context: BindingContext): Collection { val resolutionScope = context[BindingContext.RESOLUTION_SCOPE, expression] ?: return listOf() - return excludeNonPackageDescriptors(resolutionScope.getAllDescriptors()) + return excludeNonPackageDescriptors(resolutionScope.getDescriptors({ it == JetScope.DescriptorKind.PACKAGE })) } public fun excludeNotCallableExtensions(descriptors: Collection, diff --git a/idea/src/org/jetbrains/jet/plugin/liveTemplates/macro/BaseJetVariableMacro.java b/idea/src/org/jetbrains/jet/plugin/liveTemplates/macro/BaseJetVariableMacro.java index ab4b432a24a..c94046ad0e5 100644 --- a/idea/src/org/jetbrains/jet/plugin/liveTemplates/macro/BaseJetVariableMacro.java +++ b/idea/src/org/jetbrains/jet/plugin/liveTemplates/macro/BaseJetVariableMacro.java @@ -75,7 +75,7 @@ public abstract class BaseJetVariableMacro extends Macro { new InjectorForMacros(project, resolveSession.getModuleDescriptor()).getExpressionTypingComponents(); List filteredDescriptors = new ArrayList(); - for (DeclarationDescriptor declarationDescriptor : scope.getAllDescriptors()) { + for (DeclarationDescriptor declarationDescriptor : scope.getDescriptors(JetScope.DescriptorKind.VARIABLES_AND_PROPERTIES, JetScope.ALL_NAME_FILTER)) { if (declarationDescriptor instanceof VariableDescriptor) { VariableDescriptor variableDescriptor = (VariableDescriptor) declarationDescriptor; if (isSuitable(variableDescriptor, scope, project, components)) { diff --git a/idea/src/org/jetbrains/jet/plugin/liveTemplates/macro/JetAnonymousSuperMacro.java b/idea/src/org/jetbrains/jet/plugin/liveTemplates/macro/JetAnonymousSuperMacro.java index d5e11605953..a7aba05f3ba 100644 --- a/idea/src/org/jetbrains/jet/plugin/liveTemplates/macro/JetAnonymousSuperMacro.java +++ b/idea/src/org/jetbrains/jet/plugin/liveTemplates/macro/JetAnonymousSuperMacro.java @@ -96,7 +96,7 @@ public class JetAnonymousSuperMacro extends Macro { List result = new ArrayList(); - for (DeclarationDescriptor descriptor : scope.getAllDescriptors()) { + for (DeclarationDescriptor descriptor : scope.getDescriptors(JetScope.DescriptorKind.CLASSIFIERS, JetScope.ALL_NAME_FILTER)) { if (!(descriptor instanceof ClassDescriptor)) continue; ClassDescriptor classDescriptor = (ClassDescriptor) descriptor; if (!classDescriptor.getModality().isOverridable()) continue; diff --git a/js/js.translator/src/org/jetbrains/k2js/translate/utils/ManglingUtils.java b/js/js.translator/src/org/jetbrains/k2js/translate/utils/ManglingUtils.java index f086dda5108..2729c3d3df7 100644 --- a/js/js.translator/src/org/jetbrains/k2js/translate/utils/ManglingUtils.java +++ b/js/js.translator/src/org/jetbrains/k2js/translate/utils/ManglingUtils.java @@ -144,7 +144,7 @@ public class ManglingUtils { int counter = 0; if (jetScope != null) { - Collection declarations = jetScope.getAllDescriptors(); + Collection declarations = jetScope.getDescriptors(JetScope.DescriptorKind.CALLABLES, JetScope.ALL_NAME_FILTER); List overloadedFunctions = ContainerUtil.mapNotNull(declarations, new Function() { @Override