From 73de54f557d5b72a7e7b00a50415aa40a52bf864 Mon Sep 17 00:00:00 2001 From: Alexander Udalov Date: Thu, 23 Apr 2015 23:12:14 +0300 Subject: [PATCH] Get rid of unneeded additional map in JavaToKotlinClassMap --- .../kotlin/platform/JavaToKotlinClassMap.java | 27 ++++++++++++------- .../idea/completion/AllClassesCompletion.kt | 3 +-- 2 files changed, 18 insertions(+), 12 deletions(-) diff --git a/core/descriptor.loader.java/src/org/jetbrains/kotlin/platform/JavaToKotlinClassMap.java b/core/descriptor.loader.java/src/org/jetbrains/kotlin/platform/JavaToKotlinClassMap.java index e2f069210a5..c1d3f6fd300 100644 --- a/core/descriptor.loader.java/src/org/jetbrains/kotlin/platform/JavaToKotlinClassMap.java +++ b/core/descriptor.loader.java/src/org/jetbrains/kotlin/platform/JavaToKotlinClassMap.java @@ -34,7 +34,6 @@ public class JavaToKotlinClassMap extends JavaToKotlinClassMapBuilder implements private final Map classDescriptorMap = new HashMap(); private final Map classDescriptorMapForCovariantPositions = new HashMap(); - private final Set allKotlinClasses = new LinkedHashSet(); private JavaToKotlinClassMap() { init(); @@ -45,12 +44,8 @@ public class JavaToKotlinClassMap extends JavaToKotlinClassMapBuilder implements KotlinBuiltIns builtIns = KotlinBuiltIns.getInstance(); for (JvmPrimitiveType jvmType : JvmPrimitiveType.values()) { - PrimitiveType type = jvmType.getPrimitiveType(); - register(jvmType.getWrapperFqName(), builtIns.getPrimitiveClassDescriptor(type)); - allKotlinClasses.add(builtIns.getPrimitiveArrayClassDescriptor(type)); + register(jvmType.getWrapperFqName(), builtIns.getPrimitiveClassDescriptor(jvmType.getPrimitiveType())); } - - allKotlinClasses.add(builtIns.getUnit()); } @Nullable @@ -89,12 +84,10 @@ public class JavaToKotlinClassMap extends JavaToKotlinClassMapBuilder implements private void register(@NotNull FqName javaClassName, @NotNull ClassDescriptor kotlinDescriptor) { classDescriptorMap.put(javaClassName, kotlinDescriptor); - allKotlinClasses.add(kotlinDescriptor); } private void registerCovariant(@NotNull FqName javaClassName, @NotNull ClassDescriptor kotlinDescriptor) { classDescriptorMapForCovariantPositions.put(javaClassName, kotlinDescriptor); - allKotlinClasses.add(kotlinDescriptor); } @NotNull @@ -121,8 +114,22 @@ public class JavaToKotlinClassMap extends JavaToKotlinClassMapBuilder implements return mapPlatformClass(className.toSafe()); } + // TODO: get rid of this method, it's unclear what it does @NotNull - public Set allKotlinClasses() { - return Collections.unmodifiableSet(allKotlinClasses); + public List allKotlinClasses() { + KotlinBuiltIns builtIns = KotlinBuiltIns.getInstance(); + + List result = new ArrayList(); + result.addAll(classDescriptorMap.values()); + result.addAll(classDescriptorMapForCovariantPositions.values()); + + for (PrimitiveType type : PrimitiveType.values()) { + result.add(builtIns.getPrimitiveArrayClassDescriptor(type)); + } + + result.add(builtIns.getUnit()); + result.add(builtIns.getNothing()); + + return result; } } diff --git a/idea/idea-completion/src/org/jetbrains/kotlin/idea/completion/AllClassesCompletion.kt b/idea/idea-completion/src/org/jetbrains/kotlin/idea/completion/AllClassesCompletion.kt index 9a5e3cdf77d..6072e8ad42f 100644 --- a/idea/idea-completion/src/org/jetbrains/kotlin/idea/completion/AllClassesCompletion.kt +++ b/idea/idea-completion/src/org/jetbrains/kotlin/idea/completion/AllClassesCompletion.kt @@ -24,7 +24,6 @@ import com.intellij.psi.search.GlobalSearchScope import com.intellij.psi.util.CachedValueProvider import com.intellij.psi.util.CachedValuesManager import org.jetbrains.kotlin.asJava.KotlinLightClass -import org.jetbrains.kotlin.builtins.KotlinBuiltIns import org.jetbrains.kotlin.descriptors.ClassDescriptor import org.jetbrains.kotlin.descriptors.ClassKind import org.jetbrains.kotlin.descriptors.DeclarationDescriptor @@ -49,7 +48,7 @@ class AllClassesCompletion(val parameters: CompletionParameters, val visibilityFilter: (DeclarationDescriptor) -> Boolean) { fun collect(result: LookupElementsCollector) { //TODO: this is a temporary hack until we have built-ins in indices - val builtIns = JavaToKotlinClassMap.INSTANCE.allKotlinClasses() + listOf(KotlinBuiltIns.getInstance().getNothing()) + val builtIns = JavaToKotlinClassMap.INSTANCE.allKotlinClasses() val filteredBuiltIns = builtIns.filter { kindFilter(it.getKind()) && prefixMatcher.prefixMatches(it.getName().asString()) } result.addDescriptorElements(filteredBuiltIns, suppressAutoInsertion = true)