Remove Logger from AnnotationDescriptorDeserializer
Use abstract ErrorReporter instead
This commit is contained in:
@@ -144,6 +144,7 @@ public class InjectorForJavaDescriptorResolver {
|
||||
deserializedDescriptorResolver.setJavaClassResolver(javaClassResolver);
|
||||
deserializedDescriptorResolver.setJavaNamespaceResolver(javaNamespaceResolver);
|
||||
|
||||
annotationDescriptorDeserializer.setErrorReporter(traceBasedErrorReporter);
|
||||
annotationDescriptorDeserializer.setJavaClassResolver(javaClassResolver);
|
||||
annotationDescriptorDeserializer.setKotlinClassFinder(virtualFileKotlinClassFinder);
|
||||
|
||||
|
||||
@@ -337,6 +337,7 @@ public class InjectorForTopDownAnalyzerForJvm implements InjectorForTopDownAnaly
|
||||
deserializedDescriptorResolver.setJavaClassResolver(javaClassResolver);
|
||||
deserializedDescriptorResolver.setJavaNamespaceResolver(javaNamespaceResolver);
|
||||
|
||||
annotationDescriptorDeserializer.setErrorReporter(traceBasedErrorReporter);
|
||||
annotationDescriptorDeserializer.setJavaClassResolver(javaClassResolver);
|
||||
annotationDescriptorDeserializer.setKotlinClassFinder(virtualFileKotlinClassFinder);
|
||||
|
||||
|
||||
+9
@@ -16,8 +16,10 @@
|
||||
|
||||
package org.jetbrains.jet.lang.resolve.java.resolver;
|
||||
|
||||
import com.intellij.openapi.diagnostic.Logger;
|
||||
import com.intellij.psi.PsiElement;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
import org.jetbrains.jet.lang.descriptors.CallableMemberDescriptor;
|
||||
import org.jetbrains.jet.lang.psi.JetDeclaration;
|
||||
import org.jetbrains.jet.lang.resolve.BindingContextUtils;
|
||||
@@ -33,6 +35,8 @@ import javax.inject.Inject;
|
||||
import static org.jetbrains.jet.lang.diagnostics.Errors.CANNOT_INFER_VISIBILITY;
|
||||
|
||||
public class TraceBasedErrorReporter implements ErrorReporter {
|
||||
private static final Logger LOG = Logger.getInstance(TraceBasedErrorReporter.class);
|
||||
|
||||
public static final WritableSlice<VirtualFileKotlinClass, Integer> ABI_VERSION_ERRORS =
|
||||
new BasicWritableSlice<VirtualFileKotlinClass, Integer>(Slices.ONLY_REWRITE_TO_EQUAL, true);
|
||||
private BindingTrace trace;
|
||||
@@ -54,4 +58,9 @@ public class TraceBasedErrorReporter implements ErrorReporter {
|
||||
trace.report(CANNOT_INFER_VISIBILITY.on((JetDeclaration) element));
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void reportAnnotationLoadingError(@NotNull String message, @Nullable Exception exception) {
|
||||
LOG.error(message, exception);
|
||||
}
|
||||
}
|
||||
|
||||
+3
@@ -17,6 +17,7 @@
|
||||
package org.jetbrains.jet.lang.resolve.java.resolver;
|
||||
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
import org.jetbrains.jet.lang.descriptors.CallableMemberDescriptor;
|
||||
import org.jetbrains.jet.lang.resolve.kotlin.KotlinJvmBinaryClass;
|
||||
|
||||
@@ -24,4 +25,6 @@ public interface ErrorReporter {
|
||||
void reportIncompatibleAbiVersion(@NotNull KotlinJvmBinaryClass kotlinClass, int actualVersion);
|
||||
|
||||
void reportCannotInferVisibility(@NotNull CallableMemberDescriptor descriptor);
|
||||
|
||||
void reportAnnotationLoadingError(@NotNull String message, @Nullable Exception exception);
|
||||
}
|
||||
|
||||
+12
-7
@@ -16,7 +16,6 @@
|
||||
|
||||
package org.jetbrains.jet.lang.resolve.kotlin;
|
||||
|
||||
import com.intellij.openapi.diagnostic.Logger;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
import org.jetbrains.jet.descriptors.serialization.JavaProtoBuf;
|
||||
@@ -34,6 +33,7 @@ import org.jetbrains.jet.lang.resolve.java.JvmAnnotationNames;
|
||||
import org.jetbrains.jet.lang.resolve.java.JvmClassName;
|
||||
import org.jetbrains.jet.lang.resolve.java.PackageClassUtils;
|
||||
import org.jetbrains.jet.lang.resolve.java.resolver.DescriptorResolverUtils;
|
||||
import org.jetbrains.jet.lang.resolve.java.resolver.ErrorReporter;
|
||||
import org.jetbrains.jet.lang.resolve.java.resolver.JavaAnnotationArgumentResolver;
|
||||
import org.jetbrains.jet.lang.resolve.java.resolver.JavaClassResolver;
|
||||
import org.jetbrains.jet.lang.resolve.name.FqName;
|
||||
@@ -52,10 +52,9 @@ import static org.jetbrains.jet.lang.resolve.kotlin.DeserializedResolverUtils.ko
|
||||
import static org.jetbrains.jet.lang.resolve.kotlin.DeserializedResolverUtils.naiveKotlinFqName;
|
||||
|
||||
public class AnnotationDescriptorDeserializer implements AnnotationDeserializer {
|
||||
private static final Logger LOG = Logger.getInstance(AnnotationDescriptorDeserializer.class);
|
||||
|
||||
private JavaClassResolver javaClassResolver;
|
||||
private KotlinClassFinder kotlinClassFinder;
|
||||
private ErrorReporter errorReporter;
|
||||
|
||||
// TODO: a single instance of StorageManager for all computations in resolve-java
|
||||
private final LockBasedStorageManager storageManager = new LockBasedStorageManager();
|
||||
@@ -70,7 +69,8 @@ public class AnnotationDescriptorDeserializer implements AnnotationDeserializer
|
||||
return loadMemberAnnotationsFromClass(kotlinClass);
|
||||
}
|
||||
catch (IOException e) {
|
||||
LOG.error("Error loading member annotations from Kotlin class: " + kotlinClass, e);
|
||||
errorReporter.reportAnnotationLoadingError(
|
||||
"Error loading member annotations from Kotlin class: " + kotlinClass, e);
|
||||
return Collections.emptyMap();
|
||||
}
|
||||
}
|
||||
@@ -86,6 +86,11 @@ public class AnnotationDescriptorDeserializer implements AnnotationDeserializer
|
||||
this.kotlinClassFinder = kotlinClassFinder;
|
||||
}
|
||||
|
||||
@Inject
|
||||
public void setErrorReporter(ErrorReporter errorReporter) {
|
||||
this.errorReporter = errorReporter;
|
||||
}
|
||||
|
||||
@NotNull
|
||||
@Override
|
||||
public List<AnnotationDescriptor> loadClassAnnotations(@NotNull ClassDescriptor descriptor, @NotNull ProtoBuf.Class classProto) {
|
||||
@@ -93,14 +98,14 @@ public class AnnotationDescriptorDeserializer implements AnnotationDeserializer
|
||||
if (kotlinClass == null) {
|
||||
// This means that the resource we're constructing the descriptor from is no longer present: KotlinClassFinder had found the
|
||||
// class earlier, but it can't now
|
||||
LOG.error("Kotlin class for loading class annotations is not found: " + descriptor);
|
||||
errorReporter.reportAnnotationLoadingError("Kotlin class for loading class annotations is not found: " + descriptor, null);
|
||||
return Collections.emptyList();
|
||||
}
|
||||
try {
|
||||
return loadClassAnnotationsFromClass(kotlinClass);
|
||||
}
|
||||
catch (IOException e) {
|
||||
LOG.error("Error loading member annotations from Kotlin class: " + kotlinClass, e);
|
||||
errorReporter.reportAnnotationLoadingError("Error loading member annotations from Kotlin class: " + kotlinClass, e);
|
||||
return Collections.emptyList();
|
||||
}
|
||||
}
|
||||
@@ -228,7 +233,7 @@ public class AnnotationDescriptorDeserializer implements AnnotationDeserializer
|
||||
|
||||
KotlinJvmBinaryClass kotlinClass = findClassWithMemberAnnotations(container, proto, nameResolver);
|
||||
if (kotlinClass == null) {
|
||||
LOG.error("Kotlin class for loading member annotations is not found: " + container);
|
||||
errorReporter.reportAnnotationLoadingError("Kotlin class for loading member annotations is not found: " + container, null);
|
||||
}
|
||||
|
||||
List<AnnotationDescriptor> annotations = memberAnnotations.fun(kotlinClass).get(signature);
|
||||
|
||||
Reference in New Issue
Block a user