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