Refactor OverridingUtil.resolveUnknownVisibilities
Get rid of dependency on BindingTrace, move the corresponding error reporting logic to OverrideResolver
This commit is contained in:
+2
-7
@@ -21,7 +21,6 @@ import org.jetbrains.jet.lang.resolve.BindingTrace;
|
||||
import org.jetbrains.jet.lang.resolve.java.JavaClassFinderImpl;
|
||||
import org.jetbrains.jet.lang.resolve.java.resolver.TraceBasedExternalSignatureResolver;
|
||||
import org.jetbrains.jet.lang.resolve.java.resolver.TraceBasedJavaResolverCache;
|
||||
import org.jetbrains.jet.lang.resolve.java.resolver.FakeOverrideVisibilityResolverImpl;
|
||||
import org.jetbrains.jet.lang.resolve.java.resolver.TraceBasedErrorReporter;
|
||||
import org.jetbrains.jet.lang.resolve.java.resolver.PsiBasedMethodSignatureChecker;
|
||||
import org.jetbrains.jet.lang.resolve.java.resolver.PsiBasedExternalAnnotationResolver;
|
||||
@@ -53,7 +52,6 @@ public class InjectorForJavaDescriptorResolver {
|
||||
private final JavaClassFinderImpl javaClassFinder;
|
||||
private final TraceBasedExternalSignatureResolver traceBasedExternalSignatureResolver;
|
||||
private final TraceBasedJavaResolverCache traceBasedJavaResolverCache;
|
||||
private final FakeOverrideVisibilityResolverImpl fakeOverrideVisibilityResolver;
|
||||
private final TraceBasedErrorReporter traceBasedErrorReporter;
|
||||
private final PsiBasedMethodSignatureChecker psiBasedMethodSignatureChecker;
|
||||
private final PsiBasedExternalAnnotationResolver psiBasedExternalAnnotationResolver;
|
||||
@@ -84,7 +82,6 @@ public class InjectorForJavaDescriptorResolver {
|
||||
this.javaClassFinder = new JavaClassFinderImpl();
|
||||
this.traceBasedExternalSignatureResolver = new TraceBasedExternalSignatureResolver();
|
||||
this.traceBasedJavaResolverCache = new TraceBasedJavaResolverCache();
|
||||
this.fakeOverrideVisibilityResolver = new FakeOverrideVisibilityResolverImpl();
|
||||
this.traceBasedErrorReporter = new TraceBasedErrorReporter();
|
||||
this.psiBasedMethodSignatureChecker = new PsiBasedMethodSignatureChecker();
|
||||
this.psiBasedExternalAnnotationResolver = new PsiBasedExternalAnnotationResolver();
|
||||
@@ -113,8 +110,6 @@ public class InjectorForJavaDescriptorResolver {
|
||||
|
||||
traceBasedJavaResolverCache.setTrace(bindingTrace);
|
||||
|
||||
fakeOverrideVisibilityResolver.setTrace(bindingTrace);
|
||||
|
||||
traceBasedErrorReporter.setTrace(bindingTrace);
|
||||
|
||||
psiBasedMethodSignatureChecker.setAnnotationResolver(javaAnnotationResolver);
|
||||
@@ -176,8 +171,8 @@ public class InjectorForJavaDescriptorResolver {
|
||||
|
||||
javaFunctionResolver.setAnnotationResolver(javaAnnotationResolver);
|
||||
javaFunctionResolver.setCache(traceBasedJavaResolverCache);
|
||||
javaFunctionResolver.setErrorReporter(traceBasedErrorReporter);
|
||||
javaFunctionResolver.setExternalSignatureResolver(traceBasedExternalSignatureResolver);
|
||||
javaFunctionResolver.setFakeOverrideVisibilityResolver(fakeOverrideVisibilityResolver);
|
||||
javaFunctionResolver.setSignatureChecker(psiBasedMethodSignatureChecker);
|
||||
javaFunctionResolver.setTypeParameterResolver(javaTypeParameterResolver);
|
||||
javaFunctionResolver.setTypeTransformer(javaTypeTransformer);
|
||||
@@ -187,8 +182,8 @@ public class InjectorForJavaDescriptorResolver {
|
||||
|
||||
javaPropertyResolver.setAnnotationResolver(javaAnnotationResolver);
|
||||
javaPropertyResolver.setCache(traceBasedJavaResolverCache);
|
||||
javaPropertyResolver.setErrorReporter(traceBasedErrorReporter);
|
||||
javaPropertyResolver.setExternalSignatureResolver(traceBasedExternalSignatureResolver);
|
||||
javaPropertyResolver.setFakeOverrideVisibilityResolver(fakeOverrideVisibilityResolver);
|
||||
javaPropertyResolver.setTypeTransformer(javaTypeTransformer);
|
||||
|
||||
javaSupertypeResolver.setClassResolver(javaClassResolver);
|
||||
|
||||
+2
-7
@@ -34,7 +34,6 @@ import org.jetbrains.jet.lang.resolve.java.mapping.JavaToKotlinClassMap;
|
||||
import org.jetbrains.jet.lang.resolve.java.JavaClassFinderImpl;
|
||||
import org.jetbrains.jet.lang.resolve.java.resolver.TraceBasedExternalSignatureResolver;
|
||||
import org.jetbrains.jet.lang.resolve.java.resolver.TraceBasedJavaResolverCache;
|
||||
import org.jetbrains.jet.lang.resolve.java.resolver.FakeOverrideVisibilityResolverImpl;
|
||||
import org.jetbrains.jet.lang.resolve.java.resolver.TraceBasedErrorReporter;
|
||||
import org.jetbrains.jet.lang.resolve.java.resolver.PsiBasedMethodSignatureChecker;
|
||||
import org.jetbrains.jet.lang.resolve.java.resolver.PsiBasedExternalAnnotationResolver;
|
||||
@@ -94,7 +93,6 @@ public class InjectorForTopDownAnalyzerForJvm implements InjectorForTopDownAnaly
|
||||
private final JavaClassFinderImpl javaClassFinder;
|
||||
private final TraceBasedExternalSignatureResolver traceBasedExternalSignatureResolver;
|
||||
private final TraceBasedJavaResolverCache traceBasedJavaResolverCache;
|
||||
private final FakeOverrideVisibilityResolverImpl fakeOverrideVisibilityResolver;
|
||||
private final TraceBasedErrorReporter traceBasedErrorReporter;
|
||||
private final PsiBasedMethodSignatureChecker psiBasedMethodSignatureChecker;
|
||||
private final PsiBasedExternalAnnotationResolver psiBasedExternalAnnotationResolver;
|
||||
@@ -155,7 +153,6 @@ public class InjectorForTopDownAnalyzerForJvm implements InjectorForTopDownAnaly
|
||||
this.javaClassFinder = new JavaClassFinderImpl();
|
||||
this.traceBasedExternalSignatureResolver = new TraceBasedExternalSignatureResolver();
|
||||
this.traceBasedJavaResolverCache = new TraceBasedJavaResolverCache();
|
||||
this.fakeOverrideVisibilityResolver = new FakeOverrideVisibilityResolverImpl();
|
||||
this.traceBasedErrorReporter = new TraceBasedErrorReporter();
|
||||
this.psiBasedMethodSignatureChecker = new PsiBasedMethodSignatureChecker();
|
||||
this.psiBasedExternalAnnotationResolver = new PsiBasedExternalAnnotationResolver();
|
||||
@@ -239,8 +236,6 @@ public class InjectorForTopDownAnalyzerForJvm implements InjectorForTopDownAnaly
|
||||
|
||||
traceBasedJavaResolverCache.setTrace(bindingTrace);
|
||||
|
||||
fakeOverrideVisibilityResolver.setTrace(bindingTrace);
|
||||
|
||||
traceBasedErrorReporter.setTrace(bindingTrace);
|
||||
|
||||
psiBasedMethodSignatureChecker.setAnnotationResolver(javaAnnotationResolver);
|
||||
@@ -367,8 +362,8 @@ public class InjectorForTopDownAnalyzerForJvm implements InjectorForTopDownAnaly
|
||||
|
||||
javaFunctionResolver.setAnnotationResolver(javaAnnotationResolver);
|
||||
javaFunctionResolver.setCache(traceBasedJavaResolverCache);
|
||||
javaFunctionResolver.setErrorReporter(traceBasedErrorReporter);
|
||||
javaFunctionResolver.setExternalSignatureResolver(traceBasedExternalSignatureResolver);
|
||||
javaFunctionResolver.setFakeOverrideVisibilityResolver(fakeOverrideVisibilityResolver);
|
||||
javaFunctionResolver.setSignatureChecker(psiBasedMethodSignatureChecker);
|
||||
javaFunctionResolver.setTypeParameterResolver(javaTypeParameterResolver);
|
||||
javaFunctionResolver.setTypeTransformer(javaTypeTransformer);
|
||||
@@ -378,8 +373,8 @@ public class InjectorForTopDownAnalyzerForJvm implements InjectorForTopDownAnaly
|
||||
|
||||
javaPropertyResolver.setAnnotationResolver(javaAnnotationResolver);
|
||||
javaPropertyResolver.setCache(traceBasedJavaResolverCache);
|
||||
javaPropertyResolver.setErrorReporter(traceBasedErrorReporter);
|
||||
javaPropertyResolver.setExternalSignatureResolver(traceBasedExternalSignatureResolver);
|
||||
javaPropertyResolver.setFakeOverrideVisibilityResolver(fakeOverrideVisibilityResolver);
|
||||
javaPropertyResolver.setTypeTransformer(javaTypeTransformer);
|
||||
|
||||
javaSupertypeResolver.setClassResolver(javaClassResolver);
|
||||
|
||||
-22
@@ -1,22 +0,0 @@
|
||||
package org.jetbrains.jet.lang.resolve.java.resolver;
|
||||
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.jet.lang.descriptors.CallableMemberDescriptor;
|
||||
import org.jetbrains.jet.lang.resolve.BindingTrace;
|
||||
import org.jetbrains.jet.lang.resolve.OverridingUtil;
|
||||
|
||||
import javax.inject.Inject;
|
||||
|
||||
public class FakeOverrideVisibilityResolverImpl implements FakeOverrideVisibilityResolver {
|
||||
private BindingTrace trace;
|
||||
|
||||
@Inject
|
||||
public void setTrace(BindingTrace trace) {
|
||||
this.trace = trace;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void resolveUnknownVisibilityForMember(@NotNull CallableMemberDescriptor descriptor) {
|
||||
OverridingUtil.resolveUnknownVisibilityForMember(null, descriptor, trace);
|
||||
}
|
||||
}
|
||||
+14
@@ -17,7 +17,11 @@
|
||||
package org.jetbrains.jet.lang.resolve.java.resolver;
|
||||
|
||||
import com.intellij.openapi.vfs.VirtualFile;
|
||||
import com.intellij.psi.PsiElement;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.jet.lang.descriptors.CallableMemberDescriptor;
|
||||
import org.jetbrains.jet.lang.psi.JetDeclaration;
|
||||
import org.jetbrains.jet.lang.resolve.BindingContextUtils;
|
||||
import org.jetbrains.jet.lang.resolve.BindingTrace;
|
||||
import org.jetbrains.jet.lang.resolve.name.FqName;
|
||||
import org.jetbrains.jet.util.slicedmap.BasicWritableSlice;
|
||||
@@ -26,6 +30,8 @@ import org.jetbrains.jet.util.slicedmap.WritableSlice;
|
||||
|
||||
import javax.inject.Inject;
|
||||
|
||||
import static org.jetbrains.jet.lang.diagnostics.Errors.CANNOT_INFER_VISIBILITY;
|
||||
|
||||
public class TraceBasedErrorReporter implements ErrorReporter {
|
||||
public static final WritableSlice<AbiVersionErrorLocation, Integer> ABI_VERSION_ERRORS =
|
||||
new BasicWritableSlice<AbiVersionErrorLocation, Integer>(Slices.ONLY_REWRITE_TO_EQUAL, true);
|
||||
@@ -41,6 +47,14 @@ public class TraceBasedErrorReporter implements ErrorReporter {
|
||||
trace.record(ABI_VERSION_ERRORS, new AbiVersionErrorLocation(fqName, file), actualVersion);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void reportCannotInferVisibility(@NotNull CallableMemberDescriptor descriptor) {
|
||||
PsiElement element = BindingContextUtils.descriptorToDeclaration(trace.getBindingContext(), descriptor);
|
||||
if (element instanceof JetDeclaration) {
|
||||
trace.report(CANNOT_INFER_VISIBILITY.on((JetDeclaration) element));
|
||||
}
|
||||
}
|
||||
|
||||
public static final class AbiVersionErrorLocation {
|
||||
@NotNull
|
||||
private final FqName classFqName;
|
||||
|
||||
Reference in New Issue
Block a user