Get rid of trace in JavaSupertypeResolver
The only place where it was used was INCOMPLETE_HIERARCHY report, which didn't work at all (added TODO about it)
This commit is contained in:
@@ -162,7 +162,6 @@ public class InjectorForJavaDescriptorResolver {
|
|||||||
javaValueParameterResolver.setTypeTransformer(javaTypeTransformer);
|
javaValueParameterResolver.setTypeTransformer(javaTypeTransformer);
|
||||||
|
|
||||||
javaSupertypeResolver.setClassResolver(javaClassResolver);
|
javaSupertypeResolver.setClassResolver(javaClassResolver);
|
||||||
javaSupertypeResolver.setTrace(bindingTrace);
|
|
||||||
javaSupertypeResolver.setTypeTransformer(javaTypeTransformer);
|
javaSupertypeResolver.setTypeTransformer(javaTypeTransformer);
|
||||||
|
|
||||||
javaConstructorResolver.setCache(traceBasedJavaResolverCache);
|
javaConstructorResolver.setCache(traceBasedJavaResolverCache);
|
||||||
|
|||||||
@@ -349,7 +349,6 @@ public class InjectorForTopDownAnalyzerForJvm implements InjectorForTopDownAnaly
|
|||||||
javaValueParameterResolver.setTypeTransformer(javaTypeTransformer);
|
javaValueParameterResolver.setTypeTransformer(javaTypeTransformer);
|
||||||
|
|
||||||
javaSupertypeResolver.setClassResolver(javaClassResolver);
|
javaSupertypeResolver.setClassResolver(javaClassResolver);
|
||||||
javaSupertypeResolver.setTrace(bindingTrace);
|
|
||||||
javaSupertypeResolver.setTypeTransformer(javaTypeTransformer);
|
javaSupertypeResolver.setTypeTransformer(javaTypeTransformer);
|
||||||
|
|
||||||
javaConstructorResolver.setCache(traceBasedJavaResolverCache);
|
javaConstructorResolver.setCache(traceBasedJavaResolverCache);
|
||||||
|
|||||||
+5
-24
@@ -20,8 +20,6 @@ import org.jetbrains.annotations.NotNull;
|
|||||||
import org.jetbrains.jet.lang.descriptors.ClassDescriptor;
|
import org.jetbrains.jet.lang.descriptors.ClassDescriptor;
|
||||||
import org.jetbrains.jet.lang.descriptors.ClassKind;
|
import org.jetbrains.jet.lang.descriptors.ClassKind;
|
||||||
import org.jetbrains.jet.lang.descriptors.TypeParameterDescriptor;
|
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.JvmAbi;
|
import org.jetbrains.jet.lang.resolve.java.JvmAbi;
|
||||||
import org.jetbrains.jet.lang.resolve.java.TypeUsage;
|
import org.jetbrains.jet.lang.resolve.java.TypeUsage;
|
||||||
import org.jetbrains.jet.lang.resolve.java.structure.JavaClass;
|
import org.jetbrains.jet.lang.resolve.java.structure.JavaClass;
|
||||||
@@ -44,15 +42,9 @@ import static org.jetbrains.jet.lang.resolve.java.DescriptorSearchRule.IGNORE_KO
|
|||||||
public final class JavaSupertypeResolver {
|
public final class JavaSupertypeResolver {
|
||||||
public static final FqName OBJECT_FQ_NAME = new FqName("java.lang.Object");
|
public static final FqName OBJECT_FQ_NAME = new FqName("java.lang.Object");
|
||||||
|
|
||||||
private BindingTrace trace;
|
|
||||||
private JavaTypeTransformer typeTransformer;
|
private JavaTypeTransformer typeTransformer;
|
||||||
private JavaClassResolver classResolver;
|
private JavaClassResolver classResolver;
|
||||||
|
|
||||||
@Inject
|
|
||||||
public void setTrace(BindingTrace trace) {
|
|
||||||
this.trace = trace;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
public void setTypeTransformer(JavaTypeTransformer typeTransformer) {
|
public void setTypeTransformer(JavaTypeTransformer typeTransformer) {
|
||||||
this.typeTransformer = typeTransformer;
|
this.typeTransformer = typeTransformer;
|
||||||
@@ -73,13 +65,7 @@ public final class JavaSupertypeResolver {
|
|||||||
|
|
||||||
List<JetType> result = transformSupertypeList(javaClass.getSupertypes(), typeVariableResolver);
|
List<JetType> result = transformSupertypeList(javaClass.getSupertypes(), typeVariableResolver);
|
||||||
|
|
||||||
reportIncompleteHierarchyForErrorTypes(classDescriptor, result);
|
return result.isEmpty() ? Collections.singletonList(getDefaultSupertype(javaClass)) : result;
|
||||||
|
|
||||||
if (result.isEmpty()) {
|
|
||||||
return Collections.singletonList(getDefaultSupertype(javaClass));
|
|
||||||
}
|
|
||||||
|
|
||||||
return result;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@NotNull
|
@NotNull
|
||||||
@@ -100,14 +86,6 @@ public final class JavaSupertypeResolver {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void reportIncompleteHierarchyForErrorTypes(@NotNull ClassDescriptor classDescriptor, @NotNull List<JetType> result) {
|
|
||||||
for (JetType supertype : result) {
|
|
||||||
if (ErrorUtils.isErrorType(supertype)) {
|
|
||||||
trace.record(BindingContext.INCOMPLETE_HIERARCHY, classDescriptor);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@NotNull
|
@NotNull
|
||||||
private List<JetType> transformSupertypeList(
|
private List<JetType> transformSupertypeList(
|
||||||
@NotNull Collection<JavaClassifierType> supertypes,
|
@NotNull Collection<JavaClassifierType> supertypes,
|
||||||
@@ -126,7 +104,10 @@ public final class JavaSupertypeResolver {
|
|||||||
}
|
}
|
||||||
|
|
||||||
JetType transformed = typeTransformer.transformToType(type, TypeUsage.SUPERTYPE, typeVariableResolver);
|
JetType transformed = typeTransformer.transformToType(type, TypeUsage.SUPERTYPE, typeVariableResolver);
|
||||||
if (!ErrorUtils.isErrorType(transformed)) {
|
if (ErrorUtils.isErrorType(transformed)) {
|
||||||
|
// TODO: report INCOMPLETE_HIERARCHY
|
||||||
|
}
|
||||||
|
else {
|
||||||
result.add(TypeUtils.makeNotNullable(transformed));
|
result.add(TypeUtils.makeNotNullable(transformed));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user