Remove Logger from AnnotationDescriptorDeserializer
Use abstract ErrorReporter instead
This commit is contained in:
+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