Report incomplete hierarchy error
This is the case when you reference a Java class in Kotlin whose superclass is not resolved. Previously this fact was swallowed by LazyJavaClassDescriptor leading to mysterious compilation errors #KT-5129 Fixed
This commit is contained in:
+8
@@ -20,6 +20,7 @@ import com.intellij.openapi.diagnostic.Logger;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
import org.jetbrains.kotlin.descriptors.CallableMemberDescriptor;
|
||||
import org.jetbrains.kotlin.descriptors.ClassDescriptor;
|
||||
import org.jetbrains.kotlin.load.kotlin.KotlinJvmBinaryClass;
|
||||
import org.jetbrains.kotlin.load.kotlin.VirtualFileKotlinClass;
|
||||
import org.jetbrains.kotlin.resolve.BindingTrace;
|
||||
@@ -28,11 +29,13 @@ import org.jetbrains.kotlin.util.slicedMap.Slices;
|
||||
import org.jetbrains.kotlin.util.slicedMap.WritableSlice;
|
||||
|
||||
import javax.inject.Inject;
|
||||
import java.util.List;
|
||||
|
||||
public class TraceBasedErrorReporter implements ErrorReporter {
|
||||
private static final Logger LOG = Logger.getInstance(TraceBasedErrorReporter.class);
|
||||
|
||||
public static final WritableSlice<VirtualFileKotlinClass, Integer> ABI_VERSION_ERRORS = Slices.createCollectiveSlice();
|
||||
public static final WritableSlice<ClassDescriptor, List<String>> INCOMPLETE_HIERARCHY = Slices.createCollectiveSlice();
|
||||
|
||||
private BindingTrace trace;
|
||||
|
||||
@@ -46,6 +49,11 @@ public class TraceBasedErrorReporter implements ErrorReporter {
|
||||
trace.record(ABI_VERSION_ERRORS, (VirtualFileKotlinClass) kotlinClass, actualVersion);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void reportIncompleteHierarchy(@NotNull ClassDescriptor descriptor, @NotNull List<String> unresolvedSuperClasses) {
|
||||
trace.record(INCOMPLETE_HIERARCHY, descriptor, unresolvedSuperClasses);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void reportCannotInferVisibility(@NotNull CallableMemberDescriptor descriptor) {
|
||||
OverrideResolver.createCannotInferVisibilityReporter(trace).invoke(descriptor);
|
||||
|
||||
Reference in New Issue
Block a user