diff --git a/compiler/frontend.java/src/org/jetbrains/jet/di/InjectorForJavaDescriptorResolver.java b/compiler/frontend.java/src/org/jetbrains/jet/di/InjectorForJavaDescriptorResolver.java index 8dbb485fb88..527843ae7f2 100644 --- a/compiler/frontend.java/src/org/jetbrains/jet/di/InjectorForJavaDescriptorResolver.java +++ b/compiler/frontend.java/src/org/jetbrains/jet/di/InjectorForJavaDescriptorResolver.java @@ -27,7 +27,7 @@ import org.jetbrains.jet.lang.resolve.java.resolver.JavaAnnotationResolver; import org.jetbrains.jet.lang.resolve.java.resolver.JavaCompileTimeConstResolver; import org.jetbrains.jet.lang.resolve.java.resolver.JavaFunctionResolver; import org.jetbrains.jet.lang.resolve.java.resolver.JavaValueParameterResolver; -import org.jetbrains.jet.lang.resolve.java.JavaTypeTransformer; +import org.jetbrains.jet.lang.resolve.java.resolver.JavaTypeTransformer; import org.jetbrains.jet.lang.resolve.java.resolver.JavaSignatureResolver; import org.jetbrains.jet.lang.resolve.java.resolver.DeserializedDescriptorResolver; import org.jetbrains.jet.lang.resolve.java.resolver.AnnotationDescriptorDeserializer; @@ -120,7 +120,7 @@ public class InjectorForJavaDescriptorResolver { javaValueParameterResolver.setTypeTransformer(javaTypeTransformer); - javaTypeTransformer.setResolver(javaDescriptorResolver); + javaTypeTransformer.setResolver(javaClassResolver); javaSignatureResolver.setTypeTransformer(javaTypeTransformer); diff --git a/compiler/frontend.java/src/org/jetbrains/jet/di/InjectorForTopDownAnalyzerForJvm.java b/compiler/frontend.java/src/org/jetbrains/jet/di/InjectorForTopDownAnalyzerForJvm.java index cba8e3cc7cf..bb04d2d8441 100644 --- a/compiler/frontend.java/src/org/jetbrains/jet/di/InjectorForTopDownAnalyzerForJvm.java +++ b/compiler/frontend.java/src/org/jetbrains/jet/di/InjectorForTopDownAnalyzerForJvm.java @@ -54,7 +54,7 @@ import org.jetbrains.jet.lang.resolve.java.resolver.JavaAnnotationResolver; import org.jetbrains.jet.lang.resolve.java.resolver.JavaCompileTimeConstResolver; import org.jetbrains.jet.lang.resolve.java.resolver.JavaFunctionResolver; import org.jetbrains.jet.lang.resolve.java.resolver.JavaValueParameterResolver; -import org.jetbrains.jet.lang.resolve.java.JavaTypeTransformer; +import org.jetbrains.jet.lang.resolve.java.resolver.JavaTypeTransformer; import org.jetbrains.jet.lang.resolve.java.resolver.JavaSignatureResolver; import org.jetbrains.jet.lang.resolve.java.resolver.DeserializedDescriptorResolver; import org.jetbrains.jet.lang.resolve.java.resolver.AnnotationDescriptorDeserializer; @@ -307,7 +307,7 @@ public class InjectorForTopDownAnalyzerForJvm implements InjectorForTopDownAnaly javaValueParameterResolver.setTypeTransformer(javaTypeTransformer); - javaTypeTransformer.setResolver(javaDescriptorResolver); + javaTypeTransformer.setResolver(javaClassResolver); javaSignatureResolver.setTypeTransformer(javaTypeTransformer); diff --git a/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/resolver/JavaSignatureResolver.java b/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/resolver/JavaSignatureResolver.java index a2c65308f08..054f8391f38 100644 --- a/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/resolver/JavaSignatureResolver.java +++ b/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/resolver/JavaSignatureResolver.java @@ -24,7 +24,6 @@ import org.jetbrains.jet.lang.descriptors.DeclarationDescriptor; import org.jetbrains.jet.lang.descriptors.TypeParameterDescriptor; import org.jetbrains.jet.lang.descriptors.annotations.AnnotationDescriptor; import org.jetbrains.jet.lang.descriptors.impl.TypeParameterDescriptorImpl; -import org.jetbrains.jet.lang.resolve.java.JavaTypeTransformer; import org.jetbrains.jet.lang.resolve.java.TypeUsage; import org.jetbrains.jet.lang.resolve.java.TypeVariableResolver; import org.jetbrains.jet.lang.resolve.java.structure.JavaClass; diff --git a/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/resolver/JavaSupertypeResolver.java b/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/resolver/JavaSupertypeResolver.java index a330596caaa..a19fb7589b1 100644 --- a/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/resolver/JavaSupertypeResolver.java +++ b/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/resolver/JavaSupertypeResolver.java @@ -22,7 +22,6 @@ import org.jetbrains.jet.lang.descriptors.ClassKind; import org.jetbrains.jet.lang.descriptors.TypeParameterDescriptor; import org.jetbrains.jet.lang.resolve.BindingContext; import org.jetbrains.jet.lang.resolve.BindingTrace; -import org.jetbrains.jet.lang.resolve.java.JavaTypeTransformer; import org.jetbrains.jet.lang.resolve.java.JvmAbi; import org.jetbrains.jet.lang.resolve.java.TypeUsage; import org.jetbrains.jet.lang.resolve.java.TypeVariableResolver; diff --git a/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/JavaTypeTransformer.java b/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/resolver/JavaTypeTransformer.java similarity index 92% rename from compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/JavaTypeTransformer.java rename to compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/resolver/JavaTypeTransformer.java index 0c85959717f..4c43f66e00e 100644 --- a/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/JavaTypeTransformer.java +++ b/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/resolver/JavaTypeTransformer.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.jetbrains.jet.lang.resolve.java; +package org.jetbrains.jet.lang.resolve.java.resolver; import com.google.common.collect.Lists; import com.google.common.collect.Sets; @@ -24,8 +24,10 @@ import org.jetbrains.annotations.NotNull; import org.jetbrains.jet.lang.descriptors.ClassDescriptor; import org.jetbrains.jet.lang.descriptors.TypeParameterDescriptor; import org.jetbrains.jet.lang.descriptors.annotations.AnnotationDescriptor; +import org.jetbrains.jet.lang.resolve.java.JvmAnnotationNames; +import org.jetbrains.jet.lang.resolve.java.TypeUsage; +import org.jetbrains.jet.lang.resolve.java.TypeVariableResolver; import org.jetbrains.jet.lang.resolve.java.mapping.JavaToKotlinClassMap; -import org.jetbrains.jet.lang.resolve.java.resolver.JavaAnnotationResolver; import org.jetbrains.jet.lang.resolve.name.FqName; import org.jetbrains.jet.lang.types.*; import org.jetbrains.jet.lang.types.checker.JetTypeChecker; @@ -45,10 +47,10 @@ public class JavaTypeTransformer { private static final Logger LOG = Logger.getInstance(JavaTypeTransformer.class); - private JavaDescriptorResolver resolver; + private JavaClassResolver resolver; @Inject - public void setResolver(JavaDescriptorResolver resolver) { + public void setResolver(JavaClassResolver resolver) { this.resolver = resolver; } @@ -58,8 +60,7 @@ public class JavaTypeTransformer { @NotNull final TypeVariableResolver typeVariableByPsiResolver, @NotNull final TypeUsage howThisTypeIsUsed ) { - TypeProjection result = javaType.accept(new PsiTypeVisitor() { - + return javaType.accept(new PsiTypeVisitor() { @Override public TypeProjection visitCapturedWildcardType(PsiCapturedWildcardType capturedWildcardType) { throw new UnsupportedOperationException(); // TODO @@ -82,23 +83,20 @@ public class JavaTypeTransformer { return new TypeProjection(transformToType(type, howThisTypeIsUsed, typeVariableByPsiResolver)); } }); - return result; } @NotNull - public JetType transformToType(@NotNull PsiType javaType, - @NotNull TypeVariableResolver typeVariableResolver) { + public JetType transformToType(@NotNull PsiType javaType, @NotNull TypeVariableResolver typeVariableResolver) { return transformToType(javaType, TypeUsage.MEMBER_SIGNATURE_INVARIANT, typeVariableResolver); } @NotNull public JetType transformToType(@NotNull PsiType javaType, @NotNull final TypeUsage howThisTypeIsUsed, @NotNull final TypeVariableResolver typeVariableResolver) { - JetType result = javaType.accept(new PsiTypeVisitor() { + return javaType.accept(new PsiTypeVisitor() { @Override public JetType visitClassType(PsiClassType classType) { - PsiClassType.ClassResolveResult classResolveResult = classType.resolveGenerics(); - PsiClass psiClass = classResolveResult.getElement(); + PsiClass psiClass = classType.resolve(); if (psiClass == null) { return ErrorUtils.createErrorType("Unresolved java class: " + classType.getPresentableText()); } @@ -135,11 +133,14 @@ public class JavaTypeTransformer { // 'L extends List' in Java is a List in Kotlin, not a List boolean nullable = !EnumSet.of(TYPE_ARGUMENT, SUPERTYPE_ARGUMENT, SUPERTYPE).contains(howThisTypeIsUsed); - ClassDescriptor classData = JavaToKotlinClassMap.getInstance().mapKotlinClass(new FqName(psiClass.getQualifiedName()), - howThisTypeIsUsed); + String qualifiedName = psiClass.getQualifiedName(); + assert qualifiedName != null : "Class type should have a FQ name: " + psiClass; + FqName fqName = new FqName(qualifiedName); + + ClassDescriptor classData = JavaToKotlinClassMap.getInstance().mapKotlinClass(fqName, howThisTypeIsUsed); if (classData == null) { - classData = resolver.resolveClass(new FqName(psiClass.getQualifiedName()), INCLUDE_KOTLIN_SOURCES); + classData = resolver.resolveClass(fqName, INCLUDE_KOTLIN_SOURCES); } if (classData == null) { return ErrorUtils.createErrorType("Unresolved java class: " + classType.getPresentableText()); @@ -165,7 +166,7 @@ public class JavaTypeTransformer { } else { PsiType[] psiArguments = classType.getParameters(); - + if (parameters.size() != psiArguments.length) { // Most of the time this means there is an error in the Java code LOG.warn("parameters = " + parameters.size() + ", actual arguments = " + psiArguments.length + @@ -246,7 +247,6 @@ public class JavaTypeTransformer { throw new UnsupportedOperationException("Unsupported type: " + type.getPresentableText()); // TODO } }); - return result; } private static boolean isRaw(@NotNull PsiClassType classType, boolean argumentsExpected) {