TypeUsage moved out of JavaTypeTransformer

This commit is contained in:
Andrey Breslav
2012-12-07 16:37:42 +04:00
parent f925bfccd0
commit 3b39257f13
11 changed files with 51 additions and 40 deletions
@@ -80,9 +80,9 @@ public class JavaToKotlinClassMap extends JavaToKotlinClassMapBuilder implements
}
@Nullable
public ClassDescriptor mapKotlinClass(@NotNull FqName fqName, @NotNull JavaTypeTransformer.TypeUsage typeUsage) {
if (typeUsage == JavaTypeTransformer.TypeUsage.MEMBER_SIGNATURE_COVARIANT
|| typeUsage == JavaTypeTransformer.TypeUsage.SUPERTYPE) {
public ClassDescriptor mapKotlinClass(@NotNull FqName fqName, @NotNull TypeUsage typeUsage) {
if (typeUsage == TypeUsage.MEMBER_SIGNATURE_COVARIANT
|| typeUsage == TypeUsage.SUPERTYPE) {
ClassDescriptor descriptor = classDescriptorMapForCovariantPositions.get(fqName);
if (descriptor != null) {
return descriptor;
@@ -35,7 +35,7 @@ import java.util.EnumSet;
import java.util.List;
import java.util.Set;
import static org.jetbrains.jet.lang.resolve.java.JavaTypeTransformer.TypeUsage.*;
import static org.jetbrains.jet.lang.resolve.java.TypeUsage.*;
/**
* @author abreslav
@@ -255,19 +255,4 @@ public class JavaTypeTransformer {
});
return result;
}
/**
* We convert Java types differently, depending on where they occur in the Java code
* This enum encodes the kinds of occurrences
*/
public enum TypeUsage {
// Type T occurs somewhere as a generic argument, e.g.: List<T> or List<? extends T>
TYPE_ARGUMENT,
UPPER_BOUND,
MEMBER_SIGNATURE_COVARIANT,
MEMBER_SIGNATURE_CONTRAVARIANT,
MEMBER_SIGNATURE_INVARIANT,
SUPERTYPE,
SUPERTYPE_ARGUMENT
}
}
@@ -109,7 +109,7 @@ public abstract class JetTypeJetSignatureReader extends JetSignatureExceptionsAd
private ClassDescriptor resolveClassDescriptorByFqName(FqName ourName, boolean forceReal) {
if (!forceReal) {
ClassDescriptor mappedDescriptor = JavaToKotlinClassMap.getInstance().
mapKotlinClass(ourName, JavaTypeTransformer.TypeUsage.MEMBER_SIGNATURE_INVARIANT);
mapKotlinClass(ourName, TypeUsage.MEMBER_SIGNATURE_INVARIANT);
if (mappedDescriptor != null) {
return mappedDescriptor;
}
@@ -0,0 +1,32 @@
/*
* Copyright 2010-2012 JetBrains s.r.o.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.jetbrains.jet.lang.resolve.java;
/**
* We convert Java types differently, depending on where they occur in the Java code
* This enum encodes the kinds of occurrences
*/
public enum TypeUsage {
// Type T occurs somewhere as a generic argument, e.g.: List<T> or List<? extends T>
TYPE_ARGUMENT,
UPPER_BOUND,
MEMBER_SIGNATURE_COVARIANT,
MEMBER_SIGNATURE_CONTRAVARIANT,
MEMBER_SIGNATURE_INVARIANT,
SUPERTYPE,
SUPERTYPE_ARGUMENT
}
@@ -40,8 +40,8 @@ import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import static org.jetbrains.jet.lang.resolve.java.JavaTypeTransformer.TypeUsage.MEMBER_SIGNATURE_CONTRAVARIANT;
import static org.jetbrains.jet.lang.resolve.java.JavaTypeTransformer.TypeUsage.UPPER_BOUND;
import static org.jetbrains.jet.lang.resolve.java.TypeUsage.MEMBER_SIGNATURE_CONTRAVARIANT;
import static org.jetbrains.jet.lang.resolve.java.TypeUsage.UPPER_BOUND;
/**
* @author Evgeny Gerashchenko
@@ -32,7 +32,7 @@ import org.jetbrains.jet.resolve.DescriptorRenderer;
import java.util.List;
import java.util.Map;
import static org.jetbrains.jet.lang.resolve.java.JavaTypeTransformer.TypeUsage.MEMBER_SIGNATURE_COVARIANT;
import static org.jetbrains.jet.lang.resolve.java.TypeUsage.MEMBER_SIGNATURE_COVARIANT;
public abstract class ElementAlternativeSignatureData {
private String error;
@@ -25,10 +25,7 @@ import org.jetbrains.jet.lang.descriptors.TypeParameterDescriptor;
import org.jetbrains.jet.lang.descriptors.TypeParameterDescriptorImpl;
import org.jetbrains.jet.lang.psi.*;
import org.jetbrains.jet.lang.resolve.DescriptorUtils;
import org.jetbrains.jet.lang.resolve.java.JavaToKotlinClassMap;
import org.jetbrains.jet.lang.resolve.java.JavaTypeTransformer;
import org.jetbrains.jet.lang.resolve.java.JvmClassName;
import org.jetbrains.jet.lang.resolve.java.KotlinToJavaTypesMap;
import org.jetbrains.jet.lang.resolve.java.*;
import org.jetbrains.jet.lang.resolve.scopes.JetScope;
import org.jetbrains.jet.lang.types.*;
import org.jetbrains.jet.lang.types.lang.KotlinBuiltIns;
@@ -36,18 +33,18 @@ import org.jetbrains.jet.resolve.DescriptorRenderer;
import java.util.*;
import static org.jetbrains.jet.lang.resolve.java.JavaTypeTransformer.TypeUsage.*;
import static org.jetbrains.jet.lang.resolve.java.TypeUsage.*;
class TypeTransformingVisitor extends JetVisitor<JetType, Void> {
private final JetType originalType;
private final Map<TypeParameterDescriptor, TypeParameterDescriptorImpl> originalToAltTypeParameters;
private final JavaTypeTransformer.TypeUsage typeUsage;
private final TypeUsage typeUsage;
private TypeTransformingVisitor(
JetType originalType,
Map<TypeParameterDescriptor, TypeParameterDescriptorImpl> originalToAltTypeParameters,
JavaTypeTransformer.TypeUsage typeUsage
TypeUsage typeUsage
) {
this.originalType = originalType;
this.typeUsage = typeUsage;
@@ -59,7 +56,7 @@ class TypeTransformingVisitor extends JetVisitor<JetType, Void> {
@NotNull JetTypeElement alternativeTypeElement,
@NotNull JetType originalType,
@NotNull Map<TypeParameterDescriptor, TypeParameterDescriptorImpl> originalToAltTypeParameters,
@NotNull JavaTypeTransformer.TypeUsage typeUsage
@NotNull TypeUsage typeUsage
) {
JetType computedType = alternativeTypeElement.accept(new TypeTransformingVisitor(originalType, originalToAltTypeParameters, typeUsage), null);
assert (computedType != null);
@@ -314,7 +314,7 @@ public final class JavaFunctionResolver {
}
else {
transformedType = typeTransformer.transformToType(
returnType, JavaTypeTransformer.TypeUsage.MEMBER_SIGNATURE_COVARIANT, typeVariableResolver);
returnType, TypeUsage.MEMBER_SIGNATURE_COVARIANT, typeVariableResolver);
}
if (JavaAnnotationResolver.findAnnotationWithExternal(method.getPsiMethod(), JvmAbi.JETBRAINS_NOT_NULL_ANNOTATION.getFqName().getFqName()) !=
@@ -292,11 +292,11 @@ public final class JavaSignatureResolver {
typeParameterDescriptor.addUpperBound(KotlinBuiltIns.getInstance().getNullableAnyType());
}
else if (referencedTypes.length == 1) {
typeParameterDescriptor.addUpperBound(semanticServices.getTypeTransformer().transformToType(referencedTypes[0], JavaTypeTransformer.TypeUsage.UPPER_BOUND, typeVariableByPsiResolver));
typeParameterDescriptor.addUpperBound(semanticServices.getTypeTransformer().transformToType(referencedTypes[0], TypeUsage.UPPER_BOUND, typeVariableByPsiResolver));
}
else {
for (PsiClassType referencedType : referencedTypes) {
typeParameterDescriptor.addUpperBound(semanticServices.getTypeTransformer().transformToType(referencedType, JavaTypeTransformer.TypeUsage.UPPER_BOUND, typeVariableByPsiResolver));
typeParameterDescriptor.addUpperBound(semanticServices.getTypeTransformer().transformToType(referencedType, TypeUsage.UPPER_BOUND, typeVariableByPsiResolver));
}
}
}
@@ -187,7 +187,7 @@ public final class JavaSupertypeResolver {
}
JetType transform = typeTransformer
.transformToType(type, JavaTypeTransformer.TypeUsage.SUPERTYPE, typeVariableResolver);
.transformToType(type, TypeUsage.SUPERTYPE, typeVariableResolver);
if (ErrorUtils.isErrorType(transform)) {
continue;
}
@@ -24,10 +24,7 @@ import org.jetbrains.jet.lang.descriptors.DeclarationDescriptor;
import org.jetbrains.jet.lang.descriptors.ValueParameterDescriptor;
import org.jetbrains.jet.lang.descriptors.ValueParameterDescriptorImpl;
import org.jetbrains.jet.lang.descriptors.annotations.AnnotationDescriptor;
import org.jetbrains.jet.lang.resolve.java.JavaDescriptorResolver;
import org.jetbrains.jet.lang.resolve.java.JavaTypeTransformer;
import org.jetbrains.jet.lang.resolve.java.JvmAbi;
import org.jetbrains.jet.lang.resolve.java.TypeVariableResolver;
import org.jetbrains.jet.lang.resolve.java.*;
import org.jetbrains.jet.lang.resolve.java.wrapper.PsiParameterWrapper;
import org.jetbrains.jet.lang.resolve.name.Name;
import org.jetbrains.jet.lang.types.JetType;
@@ -74,7 +71,7 @@ public final class JavaValueParameterResolver {
outType = getTypeTransformer().transformToType(typeFromAnnotation, typeVariableResolver);
}
else {
outType = getTypeTransformer().transformToType(psiType, JavaTypeTransformer.TypeUsage.MEMBER_SIGNATURE_CONTRAVARIANT,
outType = getTypeTransformer().transformToType(psiType, TypeUsage.MEMBER_SIGNATURE_CONTRAVARIANT,
typeVariableResolver);
}