add 'getKotlinAnalogs' to ModuleConfiguration

This commit is contained in:
Svetlana Isakova
2012-08-28 18:51:30 +04:00
parent 7073b12d11
commit e70db866ad
8 changed files with 85 additions and 9 deletions
@@ -21,18 +21,21 @@ import org.jetbrains.annotations.NotNull;
import org.jetbrains.jet.lang.BuiltinsScopeExtensionMode;
import org.jetbrains.jet.lang.DefaultModuleConfiguration;
import org.jetbrains.jet.lang.ModuleConfiguration;
import org.jetbrains.jet.lang.descriptors.ClassDescriptor;
import org.jetbrains.jet.lang.descriptors.NamespaceDescriptor;
import org.jetbrains.jet.lang.psi.JetImportDirective;
import org.jetbrains.jet.lang.psi.JetPsiFactory;
import org.jetbrains.jet.lang.resolve.BindingTrace;
import org.jetbrains.jet.lang.resolve.DescriptorUtils;
import org.jetbrains.jet.lang.resolve.ImportPath;
import org.jetbrains.jet.lang.resolve.name.FqNameUnsafe;
import org.jetbrains.jet.lang.resolve.scopes.JetScope;
import org.jetbrains.jet.lang.resolve.scopes.WritableScope;
import javax.annotation.PostConstruct;
import javax.inject.Inject;
import java.util.Collection;
import java.util.Collections;
/**
* @author abreslav
@@ -42,13 +45,9 @@ public class JavaBridgeConfiguration implements ModuleConfiguration {
public static final ImportPath[] DEFAULT_JAVA_IMPORTS = new ImportPath[] { new ImportPath("java.lang.*") };
@NotNull
private Project project;
@NotNull
private JavaSemanticServices javaSemanticServices;
@NotNull
private ModuleConfiguration delegateConfiguration;
@NotNull
private BuiltinsScopeExtensionMode builtinsScopeExtensionMode;
@Inject
@@ -90,5 +89,12 @@ public class JavaBridgeConfiguration implements ModuleConfiguration {
delegateConfiguration.extendNamespaceScope(trace, namespaceDescriptor, namespaceMemberScope);
}
@NotNull
@Override
public Collection<ClassDescriptor> getKotlinAnalogs(@NotNull FqNameUnsafe className) {
if (className.isSafe()) {
return JavaToKotlinTypesMap.getInstance().getAllKotlinAnalogs(className.toSafe());
}
return Collections.emptyList();
}
}
@@ -16,6 +16,7 @@
package org.jetbrains.jet.lang.resolve.java;
import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
import com.google.common.collect.Sets;
import org.jetbrains.annotations.NotNull;
@@ -28,9 +29,7 @@ import org.jetbrains.jet.lang.types.lang.JetStandardLibrary;
import org.jetbrains.jet.lang.types.lang.PrimitiveType;
import java.lang.annotation.Annotation;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
import java.util.*;
/**
* @author svtk
@@ -124,4 +123,21 @@ public class JavaToKotlinTypesMap {
mappedTypeNames.add(javaClassName.getFqName());
classDescriptorMapForCovariantPositions.put(javaClassName, kotlinDescriptor);
}
@NotNull
public List<ClassDescriptor> getAllKotlinAnalogs(@NotNull FqName fqName) {
ClassDescriptor kotlinAnalog = classDescriptorMap.get(fqName);
ClassDescriptor kotlinCovariantAnalog = classDescriptorMapForCovariantPositions.get(fqName);
if (kotlinAnalog == null && kotlinCovariantAnalog == null) {
return Collections.emptyList();
}
ArrayList<ClassDescriptor> descriptors = Lists.newArrayList();
if (kotlinAnalog != null) {
descriptors.add(kotlinAnalog);
}
if (kotlinCovariantAnalog != null) {
descriptors.add(kotlinCovariantAnalog);
}
return descriptors;
}
}