Get rid of dependency on Guava's Multimap
Replace with a hand-written multi-map
This commit is contained in:
+14
-6
@@ -16,8 +16,6 @@
|
|||||||
|
|
||||||
package org.jetbrains.jet.lang.resolve.java.mapping;
|
package org.jetbrains.jet.lang.resolve.java.mapping;
|
||||||
|
|
||||||
import com.google.common.collect.HashMultimap;
|
|
||||||
import com.google.common.collect.Multimap;
|
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
import org.jetbrains.annotations.Nullable;
|
import org.jetbrains.annotations.Nullable;
|
||||||
import org.jetbrains.jet.lang.PlatformToKotlinClassMap;
|
import org.jetbrains.jet.lang.PlatformToKotlinClassMap;
|
||||||
@@ -57,7 +55,7 @@ public class JavaToKotlinClassMap extends JavaToKotlinClassMapBuilder implements
|
|||||||
private final Map<FqName, ClassDescriptor> classDescriptorMap = new HashMap<FqName, ClassDescriptor>();
|
private final Map<FqName, ClassDescriptor> classDescriptorMap = new HashMap<FqName, ClassDescriptor>();
|
||||||
private final Map<FqName, ClassDescriptor> classDescriptorMapForCovariantPositions = new HashMap<FqName, ClassDescriptor>();
|
private final Map<FqName, ClassDescriptor> classDescriptorMapForCovariantPositions = new HashMap<FqName, ClassDescriptor>();
|
||||||
private final Map<String, JetType> primitiveTypesMap = new HashMap<String, JetType>();
|
private final Map<String, JetType> primitiveTypesMap = new HashMap<String, JetType>();
|
||||||
private final Multimap<FqName, ClassDescriptor> packagesWithMappedClasses = HashMultimap.create();
|
private final Map<FqName, Collection<ClassDescriptor>> packagesWithMappedClasses = new HashMap<FqName, Collection<ClassDescriptor>>();
|
||||||
|
|
||||||
private JavaToKotlinClassMap() {
|
private JavaToKotlinClassMap() {
|
||||||
init();
|
init();
|
||||||
@@ -139,12 +137,21 @@ public class JavaToKotlinClassMap extends JavaToKotlinClassMapBuilder implements
|
|||||||
|
|
||||||
private void register(@NotNull FqName javaClassName, @NotNull ClassDescriptor kotlinDescriptor) {
|
private void register(@NotNull FqName javaClassName, @NotNull ClassDescriptor kotlinDescriptor) {
|
||||||
classDescriptorMap.put(javaClassName, kotlinDescriptor);
|
classDescriptorMap.put(javaClassName, kotlinDescriptor);
|
||||||
packagesWithMappedClasses.put(javaClassName.parent(), kotlinDescriptor);
|
registerClassInPackage(javaClassName.parent(), kotlinDescriptor);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void registerCovariant(@NotNull FqName javaClassName, @NotNull ClassDescriptor kotlinDescriptor) {
|
private void registerCovariant(@NotNull FqName javaClassName, @NotNull ClassDescriptor kotlinDescriptor) {
|
||||||
classDescriptorMapForCovariantPositions.put(javaClassName, kotlinDescriptor);
|
classDescriptorMapForCovariantPositions.put(javaClassName, kotlinDescriptor);
|
||||||
packagesWithMappedClasses.put(javaClassName.parent(), kotlinDescriptor);
|
registerClassInPackage(javaClassName.parent(), kotlinDescriptor);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void registerClassInPackage(@NotNull FqName packageFqName, @NotNull ClassDescriptor kotlinDescriptor) {
|
||||||
|
Collection<ClassDescriptor> classesInPackage = packagesWithMappedClasses.get(packageFqName);
|
||||||
|
if (classesInPackage == null) {
|
||||||
|
classesInPackage = new HashSet<ClassDescriptor>();
|
||||||
|
packagesWithMappedClasses.put(packageFqName, classesInPackage);
|
||||||
|
}
|
||||||
|
classesInPackage.add(kotlinDescriptor);
|
||||||
}
|
}
|
||||||
|
|
||||||
@NotNull
|
@NotNull
|
||||||
@@ -178,6 +185,7 @@ public class JavaToKotlinClassMap extends JavaToKotlinClassMapBuilder implements
|
|||||||
if (!fqName.isSafe()) {
|
if (!fqName.isSafe()) {
|
||||||
return Collections.emptyList();
|
return Collections.emptyList();
|
||||||
}
|
}
|
||||||
return packagesWithMappedClasses.get(fqName.toSafe());
|
Collection<ClassDescriptor> result = packagesWithMappedClasses.get(fqName.toSafe());
|
||||||
|
return result == null ? Collections.<ClassDescriptor>emptySet() : Collections.unmodifiableCollection(result);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+13
-6
@@ -16,8 +16,6 @@
|
|||||||
|
|
||||||
package org.jetbrains.jet.lang.resolve.java.scope;
|
package org.jetbrains.jet.lang.resolve.java.scope;
|
||||||
|
|
||||||
import com.google.common.collect.HashMultimap;
|
|
||||||
import com.google.common.collect.Multimap;
|
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
import org.jetbrains.annotations.Nullable;
|
import org.jetbrains.annotations.Nullable;
|
||||||
import org.jetbrains.jet.lang.descriptors.Visibilities;
|
import org.jetbrains.jet.lang.descriptors.Visibilities;
|
||||||
@@ -29,10 +27,11 @@ import org.jetbrains.jet.lang.resolve.name.Name;
|
|||||||
|
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
|
import java.util.HashSet;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
/* package */ final class MembersCache {
|
/* package */ final class MembersCache {
|
||||||
private final Multimap<Name, Runnable> memberProcessingTasks = HashMultimap.create();
|
private final Map<Name, Collection<Runnable>> memberProcessingTasks = new HashMap<Name, Collection<Runnable>>();
|
||||||
private final Map<Name, NamedMembers> namedMembersMap = new HashMap<Name, NamedMembers>();
|
private final Map<Name, NamedMembers> namedMembersMap = new HashMap<Name, NamedMembers>();
|
||||||
|
|
||||||
@Nullable
|
@Nullable
|
||||||
@@ -60,7 +59,13 @@ import java.util.Map;
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void addTask(@NotNull JavaNamedElement member, @NotNull RunOnce task) {
|
private void addTask(@NotNull JavaNamedElement member, @NotNull RunOnce task) {
|
||||||
memberProcessingTasks.put(member.getName(), task);
|
Name name = member.getName();
|
||||||
|
Collection<Runnable> tasks = memberProcessingTasks.get(name);
|
||||||
|
if (tasks == null) {
|
||||||
|
tasks = new HashSet<Runnable>();
|
||||||
|
memberProcessingTasks.put(name, tasks);
|
||||||
|
}
|
||||||
|
tasks.add(task);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void runTasksByName(Name name) {
|
private void runTasksByName(Name name) {
|
||||||
@@ -74,8 +79,10 @@ import java.util.Map;
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void runAllTasks() {
|
private void runAllTasks() {
|
||||||
for (Runnable task : memberProcessingTasks.values()) {
|
for (Collection<Runnable> tasks : memberProcessingTasks.values()) {
|
||||||
task.run();
|
for (Runnable task : tasks) {
|
||||||
|
task.run();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user