Get rid of trace in JavaClassResolver and JavaNamespaceResolver
Create TraceBasedErrorReporter which reports ABI errors to the trace
This commit is contained in:
+30
-26
@@ -22,19 +22,20 @@ 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.TraceBasedExternalSignatureResolver;
|
||||||
import org.jetbrains.jet.lang.resolve.java.resolver.TraceBasedJavaResolverCache;
|
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.FakeOverrideVisibilityResolverImpl;
|
||||||
|
import org.jetbrains.jet.lang.resolve.java.resolver.TraceBasedErrorReporter;
|
||||||
import org.jetbrains.jet.lang.resolve.java.JavaDescriptorResolver;
|
import org.jetbrains.jet.lang.resolve.java.JavaDescriptorResolver;
|
||||||
import org.jetbrains.jet.lang.resolve.java.PsiClassFinderImpl;
|
import org.jetbrains.jet.lang.resolve.java.PsiClassFinderImpl;
|
||||||
import org.jetbrains.jet.lang.resolve.java.vfilefinder.VirtualFileFinder;
|
import org.jetbrains.jet.lang.resolve.java.vfilefinder.VirtualFileFinder;
|
||||||
import org.jetbrains.jet.lang.resolve.java.resolver.JavaClassResolver;
|
import org.jetbrains.jet.lang.resolve.java.resolver.JavaClassResolver;
|
||||||
import org.jetbrains.jet.lang.resolve.java.resolver.JavaAnnotationResolver;
|
import org.jetbrains.jet.lang.resolve.java.resolver.JavaAnnotationResolver;
|
||||||
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.DeserializedDescriptorResolver;
|
||||||
|
import org.jetbrains.jet.lang.resolve.java.resolver.AnnotationDescriptorDeserializer;
|
||||||
|
import org.jetbrains.jet.lang.resolve.java.resolver.JavaNamespaceResolver;
|
||||||
import org.jetbrains.jet.lang.resolve.java.resolver.JavaFunctionResolver;
|
import org.jetbrains.jet.lang.resolve.java.resolver.JavaFunctionResolver;
|
||||||
import org.jetbrains.jet.lang.resolve.java.resolver.JavaTypeParameterResolver;
|
import org.jetbrains.jet.lang.resolve.java.resolver.JavaTypeParameterResolver;
|
||||||
import org.jetbrains.jet.lang.resolve.java.resolver.JavaTypeTransformer;
|
import org.jetbrains.jet.lang.resolve.java.resolver.JavaTypeTransformer;
|
||||||
import org.jetbrains.jet.lang.resolve.java.resolver.JavaValueParameterResolver;
|
import org.jetbrains.jet.lang.resolve.java.resolver.JavaValueParameterResolver;
|
||||||
import org.jetbrains.jet.lang.resolve.java.resolver.DeserializedDescriptorResolver;
|
|
||||||
import org.jetbrains.jet.lang.resolve.java.resolver.AnnotationDescriptorDeserializer;
|
|
||||||
import org.jetbrains.jet.lang.resolve.java.resolver.JavaNamespaceResolver;
|
|
||||||
import org.jetbrains.jet.lang.resolve.java.resolver.JavaSupertypeResolver;
|
import org.jetbrains.jet.lang.resolve.java.resolver.JavaSupertypeResolver;
|
||||||
import org.jetbrains.jet.lang.resolve.java.resolver.JavaConstructorResolver;
|
import org.jetbrains.jet.lang.resolve.java.resolver.JavaConstructorResolver;
|
||||||
import org.jetbrains.jet.lang.resolve.java.resolver.JavaPropertyResolver;
|
import org.jetbrains.jet.lang.resolve.java.resolver.JavaPropertyResolver;
|
||||||
@@ -50,19 +51,20 @@ public class InjectorForJavaDescriptorResolver {
|
|||||||
private final TraceBasedExternalSignatureResolver traceBasedExternalSignatureResolver;
|
private final TraceBasedExternalSignatureResolver traceBasedExternalSignatureResolver;
|
||||||
private final TraceBasedJavaResolverCache traceBasedJavaResolverCache;
|
private final TraceBasedJavaResolverCache traceBasedJavaResolverCache;
|
||||||
private final FakeOverrideVisibilityResolverImpl fakeOverrideVisibilityResolver;
|
private final FakeOverrideVisibilityResolverImpl fakeOverrideVisibilityResolver;
|
||||||
|
private final TraceBasedErrorReporter traceBasedErrorReporter;
|
||||||
private final JavaDescriptorResolver javaDescriptorResolver;
|
private final JavaDescriptorResolver javaDescriptorResolver;
|
||||||
private final PsiClassFinderImpl psiClassFinder;
|
private final PsiClassFinderImpl psiClassFinder;
|
||||||
private final VirtualFileFinder virtualFileFinder;
|
private final VirtualFileFinder virtualFileFinder;
|
||||||
private final JavaClassResolver javaClassResolver;
|
private final JavaClassResolver javaClassResolver;
|
||||||
private final JavaAnnotationResolver javaAnnotationResolver;
|
private final JavaAnnotationResolver javaAnnotationResolver;
|
||||||
private final JavaAnnotationArgumentResolver javaAnnotationArgumentResolver;
|
private final JavaAnnotationArgumentResolver javaAnnotationArgumentResolver;
|
||||||
|
private final DeserializedDescriptorResolver deserializedDescriptorResolver;
|
||||||
|
private final AnnotationDescriptorDeserializer annotationDescriptorDeserializer;
|
||||||
|
private final JavaNamespaceResolver javaNamespaceResolver;
|
||||||
private final JavaFunctionResolver javaFunctionResolver;
|
private final JavaFunctionResolver javaFunctionResolver;
|
||||||
private final JavaTypeParameterResolver javaTypeParameterResolver;
|
private final JavaTypeParameterResolver javaTypeParameterResolver;
|
||||||
private final JavaTypeTransformer javaTypeTransformer;
|
private final JavaTypeTransformer javaTypeTransformer;
|
||||||
private final JavaValueParameterResolver javaValueParameterResolver;
|
private final JavaValueParameterResolver javaValueParameterResolver;
|
||||||
private final DeserializedDescriptorResolver deserializedDescriptorResolver;
|
|
||||||
private final AnnotationDescriptorDeserializer annotationDescriptorDeserializer;
|
|
||||||
private final JavaNamespaceResolver javaNamespaceResolver;
|
|
||||||
private final JavaSupertypeResolver javaSupertypeResolver;
|
private final JavaSupertypeResolver javaSupertypeResolver;
|
||||||
private final JavaConstructorResolver javaConstructorResolver;
|
private final JavaConstructorResolver javaConstructorResolver;
|
||||||
private final JavaPropertyResolver javaPropertyResolver;
|
private final JavaPropertyResolver javaPropertyResolver;
|
||||||
@@ -77,19 +79,20 @@ public class InjectorForJavaDescriptorResolver {
|
|||||||
this.traceBasedExternalSignatureResolver = new TraceBasedExternalSignatureResolver();
|
this.traceBasedExternalSignatureResolver = new TraceBasedExternalSignatureResolver();
|
||||||
this.traceBasedJavaResolverCache = new TraceBasedJavaResolverCache();
|
this.traceBasedJavaResolverCache = new TraceBasedJavaResolverCache();
|
||||||
this.fakeOverrideVisibilityResolver = new FakeOverrideVisibilityResolverImpl();
|
this.fakeOverrideVisibilityResolver = new FakeOverrideVisibilityResolverImpl();
|
||||||
|
this.traceBasedErrorReporter = new TraceBasedErrorReporter();
|
||||||
this.javaDescriptorResolver = new JavaDescriptorResolver();
|
this.javaDescriptorResolver = new JavaDescriptorResolver();
|
||||||
this.psiClassFinder = new PsiClassFinderImpl();
|
this.psiClassFinder = new PsiClassFinderImpl();
|
||||||
this.virtualFileFinder = com.intellij.openapi.components.ServiceManager.getService(project, VirtualFileFinder.class);
|
this.virtualFileFinder = com.intellij.openapi.components.ServiceManager.getService(project, VirtualFileFinder.class);
|
||||||
this.javaClassResolver = new JavaClassResolver();
|
this.javaClassResolver = new JavaClassResolver();
|
||||||
this.javaAnnotationResolver = new JavaAnnotationResolver();
|
this.javaAnnotationResolver = new JavaAnnotationResolver();
|
||||||
this.javaAnnotationArgumentResolver = new JavaAnnotationArgumentResolver();
|
this.javaAnnotationArgumentResolver = new JavaAnnotationArgumentResolver();
|
||||||
|
this.deserializedDescriptorResolver = new DeserializedDescriptorResolver();
|
||||||
|
this.annotationDescriptorDeserializer = new AnnotationDescriptorDeserializer();
|
||||||
|
this.javaNamespaceResolver = new JavaNamespaceResolver();
|
||||||
this.javaFunctionResolver = new JavaFunctionResolver();
|
this.javaFunctionResolver = new JavaFunctionResolver();
|
||||||
this.javaTypeParameterResolver = new JavaTypeParameterResolver();
|
this.javaTypeParameterResolver = new JavaTypeParameterResolver();
|
||||||
this.javaTypeTransformer = new JavaTypeTransformer();
|
this.javaTypeTransformer = new JavaTypeTransformer();
|
||||||
this.javaValueParameterResolver = new JavaValueParameterResolver();
|
this.javaValueParameterResolver = new JavaValueParameterResolver();
|
||||||
this.deserializedDescriptorResolver = new DeserializedDescriptorResolver();
|
|
||||||
this.annotationDescriptorDeserializer = new AnnotationDescriptorDeserializer();
|
|
||||||
this.javaNamespaceResolver = new JavaNamespaceResolver();
|
|
||||||
this.javaSupertypeResolver = new JavaSupertypeResolver();
|
this.javaSupertypeResolver = new JavaSupertypeResolver();
|
||||||
this.javaConstructorResolver = new JavaConstructorResolver();
|
this.javaConstructorResolver = new JavaConstructorResolver();
|
||||||
this.javaPropertyResolver = new JavaPropertyResolver();
|
this.javaPropertyResolver = new JavaPropertyResolver();
|
||||||
@@ -102,6 +105,8 @@ public class InjectorForJavaDescriptorResolver {
|
|||||||
|
|
||||||
fakeOverrideVisibilityResolver.setTrace(bindingTrace);
|
fakeOverrideVisibilityResolver.setTrace(bindingTrace);
|
||||||
|
|
||||||
|
traceBasedErrorReporter.setTrace(bindingTrace);
|
||||||
|
|
||||||
this.javaDescriptorResolver.setClassResolver(javaClassResolver);
|
this.javaDescriptorResolver.setClassResolver(javaClassResolver);
|
||||||
this.javaDescriptorResolver.setConstructorResolver(javaConstructorResolver);
|
this.javaDescriptorResolver.setConstructorResolver(javaConstructorResolver);
|
||||||
this.javaDescriptorResolver.setFunctionResolver(javaFunctionResolver);
|
this.javaDescriptorResolver.setFunctionResolver(javaFunctionResolver);
|
||||||
@@ -112,13 +117,12 @@ public class InjectorForJavaDescriptorResolver {
|
|||||||
|
|
||||||
javaClassResolver.setAnnotationResolver(javaAnnotationResolver);
|
javaClassResolver.setAnnotationResolver(javaAnnotationResolver);
|
||||||
javaClassResolver.setCache(traceBasedJavaResolverCache);
|
javaClassResolver.setCache(traceBasedJavaResolverCache);
|
||||||
|
javaClassResolver.setDeserializedDescriptorResolver(deserializedDescriptorResolver);
|
||||||
javaClassResolver.setFunctionResolver(javaFunctionResolver);
|
javaClassResolver.setFunctionResolver(javaFunctionResolver);
|
||||||
javaClassResolver.setJavaClassFinder(javaClassFinder);
|
javaClassResolver.setJavaClassFinder(javaClassFinder);
|
||||||
javaClassResolver.setJavaDescriptorResolver(javaDescriptorResolver);
|
javaClassResolver.setJavaDescriptorResolver(javaDescriptorResolver);
|
||||||
javaClassResolver.setKotlinDescriptorResolver(deserializedDescriptorResolver);
|
|
||||||
javaClassResolver.setNamespaceResolver(javaNamespaceResolver);
|
javaClassResolver.setNamespaceResolver(javaNamespaceResolver);
|
||||||
javaClassResolver.setSupertypesResolver(javaSupertypeResolver);
|
javaClassResolver.setSupertypesResolver(javaSupertypeResolver);
|
||||||
javaClassResolver.setTrace(bindingTrace);
|
|
||||||
javaClassResolver.setTypeParameterResolver(javaTypeParameterResolver);
|
javaClassResolver.setTypeParameterResolver(javaTypeParameterResolver);
|
||||||
javaClassResolver.setVirtualFileFinder(virtualFileFinder);
|
javaClassResolver.setVirtualFileFinder(virtualFileFinder);
|
||||||
|
|
||||||
@@ -128,6 +132,21 @@ public class InjectorForJavaDescriptorResolver {
|
|||||||
javaAnnotationArgumentResolver.setAnnotationResolver(javaAnnotationResolver);
|
javaAnnotationArgumentResolver.setAnnotationResolver(javaAnnotationResolver);
|
||||||
javaAnnotationArgumentResolver.setClassResolver(javaClassResolver);
|
javaAnnotationArgumentResolver.setClassResolver(javaClassResolver);
|
||||||
|
|
||||||
|
deserializedDescriptorResolver.setAnnotationDeserializer(annotationDescriptorDeserializer);
|
||||||
|
deserializedDescriptorResolver.setErrorReporter(traceBasedErrorReporter);
|
||||||
|
deserializedDescriptorResolver.setJavaClassResolver(javaClassResolver);
|
||||||
|
deserializedDescriptorResolver.setJavaNamespaceResolver(javaNamespaceResolver);
|
||||||
|
|
||||||
|
annotationDescriptorDeserializer.setJavaClassResolver(javaClassResolver);
|
||||||
|
annotationDescriptorDeserializer.setPsiClassFinder(psiClassFinder);
|
||||||
|
annotationDescriptorDeserializer.setVirtualFileFinder(virtualFileFinder);
|
||||||
|
|
||||||
|
javaNamespaceResolver.setCache(traceBasedJavaResolverCache);
|
||||||
|
javaNamespaceResolver.setDeserializedDescriptorResolver(deserializedDescriptorResolver);
|
||||||
|
javaNamespaceResolver.setJavaClassFinder(javaClassFinder);
|
||||||
|
javaNamespaceResolver.setJavaDescriptorResolver(javaDescriptorResolver);
|
||||||
|
javaNamespaceResolver.setVirtualFileFinder(virtualFileFinder);
|
||||||
|
|
||||||
javaFunctionResolver.setAnnotationResolver(javaAnnotationResolver);
|
javaFunctionResolver.setAnnotationResolver(javaAnnotationResolver);
|
||||||
javaFunctionResolver.setCache(traceBasedJavaResolverCache);
|
javaFunctionResolver.setCache(traceBasedJavaResolverCache);
|
||||||
javaFunctionResolver.setExternalSignatureResolver(traceBasedExternalSignatureResolver);
|
javaFunctionResolver.setExternalSignatureResolver(traceBasedExternalSignatureResolver);
|
||||||
@@ -142,21 +161,6 @@ public class InjectorForJavaDescriptorResolver {
|
|||||||
|
|
||||||
javaValueParameterResolver.setTypeTransformer(javaTypeTransformer);
|
javaValueParameterResolver.setTypeTransformer(javaTypeTransformer);
|
||||||
|
|
||||||
deserializedDescriptorResolver.setAnnotationDeserializer(annotationDescriptorDeserializer);
|
|
||||||
deserializedDescriptorResolver.setJavaClassResolver(javaClassResolver);
|
|
||||||
deserializedDescriptorResolver.setJavaNamespaceResolver(javaNamespaceResolver);
|
|
||||||
|
|
||||||
annotationDescriptorDeserializer.setJavaClassResolver(javaClassResolver);
|
|
||||||
annotationDescriptorDeserializer.setPsiClassFinder(psiClassFinder);
|
|
||||||
annotationDescriptorDeserializer.setVirtualFileFinder(virtualFileFinder);
|
|
||||||
|
|
||||||
javaNamespaceResolver.setCache(traceBasedJavaResolverCache);
|
|
||||||
javaNamespaceResolver.setDeserializedDescriptorResolver(deserializedDescriptorResolver);
|
|
||||||
javaNamespaceResolver.setJavaClassFinder(javaClassFinder);
|
|
||||||
javaNamespaceResolver.setJavaDescriptorResolver(javaDescriptorResolver);
|
|
||||||
javaNamespaceResolver.setTrace(bindingTrace);
|
|
||||||
javaNamespaceResolver.setVirtualFileFinder(virtualFileFinder);
|
|
||||||
|
|
||||||
javaSupertypeResolver.setClassResolver(javaClassResolver);
|
javaSupertypeResolver.setClassResolver(javaClassResolver);
|
||||||
javaSupertypeResolver.setTrace(bindingTrace);
|
javaSupertypeResolver.setTrace(bindingTrace);
|
||||||
javaSupertypeResolver.setTypeTransformer(javaTypeTransformer);
|
javaSupertypeResolver.setTypeTransformer(javaTypeTransformer);
|
||||||
|
|||||||
+30
-26
@@ -34,6 +34,7 @@ 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.TraceBasedExternalSignatureResolver;
|
||||||
import org.jetbrains.jet.lang.resolve.java.resolver.TraceBasedJavaResolverCache;
|
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.FakeOverrideVisibilityResolverImpl;
|
||||||
|
import org.jetbrains.jet.lang.resolve.java.resolver.TraceBasedErrorReporter;
|
||||||
import org.jetbrains.jet.lang.resolve.NamespaceFactoryImpl;
|
import org.jetbrains.jet.lang.resolve.NamespaceFactoryImpl;
|
||||||
import org.jetbrains.jet.lang.resolve.java.vfilefinder.VirtualFileFinder;
|
import org.jetbrains.jet.lang.resolve.java.vfilefinder.VirtualFileFinder;
|
||||||
import org.jetbrains.jet.lang.resolve.DeclarationResolver;
|
import org.jetbrains.jet.lang.resolve.DeclarationResolver;
|
||||||
@@ -55,13 +56,13 @@ import org.jetbrains.jet.lang.resolve.ScriptBodyResolver;
|
|||||||
import org.jetbrains.jet.lang.resolve.java.resolver.JavaClassResolver;
|
import org.jetbrains.jet.lang.resolve.java.resolver.JavaClassResolver;
|
||||||
import org.jetbrains.jet.lang.resolve.java.resolver.JavaAnnotationResolver;
|
import org.jetbrains.jet.lang.resolve.java.resolver.JavaAnnotationResolver;
|
||||||
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.DeserializedDescriptorResolver;
|
||||||
|
import org.jetbrains.jet.lang.resolve.java.resolver.AnnotationDescriptorDeserializer;
|
||||||
|
import org.jetbrains.jet.lang.resolve.java.resolver.JavaNamespaceResolver;
|
||||||
import org.jetbrains.jet.lang.resolve.java.resolver.JavaFunctionResolver;
|
import org.jetbrains.jet.lang.resolve.java.resolver.JavaFunctionResolver;
|
||||||
import org.jetbrains.jet.lang.resolve.java.resolver.JavaTypeParameterResolver;
|
import org.jetbrains.jet.lang.resolve.java.resolver.JavaTypeParameterResolver;
|
||||||
import org.jetbrains.jet.lang.resolve.java.resolver.JavaTypeTransformer;
|
import org.jetbrains.jet.lang.resolve.java.resolver.JavaTypeTransformer;
|
||||||
import org.jetbrains.jet.lang.resolve.java.resolver.JavaValueParameterResolver;
|
import org.jetbrains.jet.lang.resolve.java.resolver.JavaValueParameterResolver;
|
||||||
import org.jetbrains.jet.lang.resolve.java.resolver.DeserializedDescriptorResolver;
|
|
||||||
import org.jetbrains.jet.lang.resolve.java.resolver.AnnotationDescriptorDeserializer;
|
|
||||||
import org.jetbrains.jet.lang.resolve.java.resolver.JavaNamespaceResolver;
|
|
||||||
import org.jetbrains.jet.lang.resolve.java.resolver.JavaSupertypeResolver;
|
import org.jetbrains.jet.lang.resolve.java.resolver.JavaSupertypeResolver;
|
||||||
import org.jetbrains.jet.lang.resolve.java.resolver.JavaConstructorResolver;
|
import org.jetbrains.jet.lang.resolve.java.resolver.JavaConstructorResolver;
|
||||||
import org.jetbrains.jet.lang.resolve.java.resolver.JavaPropertyResolver;
|
import org.jetbrains.jet.lang.resolve.java.resolver.JavaPropertyResolver;
|
||||||
@@ -89,6 +90,7 @@ public class InjectorForTopDownAnalyzerForJvm implements InjectorForTopDownAnaly
|
|||||||
private final TraceBasedExternalSignatureResolver traceBasedExternalSignatureResolver;
|
private final TraceBasedExternalSignatureResolver traceBasedExternalSignatureResolver;
|
||||||
private final TraceBasedJavaResolverCache traceBasedJavaResolverCache;
|
private final TraceBasedJavaResolverCache traceBasedJavaResolverCache;
|
||||||
private final FakeOverrideVisibilityResolverImpl fakeOverrideVisibilityResolver;
|
private final FakeOverrideVisibilityResolverImpl fakeOverrideVisibilityResolver;
|
||||||
|
private final TraceBasedErrorReporter traceBasedErrorReporter;
|
||||||
private final NamespaceFactoryImpl namespaceFactory;
|
private final NamespaceFactoryImpl namespaceFactory;
|
||||||
private final VirtualFileFinder virtualFileFinder;
|
private final VirtualFileFinder virtualFileFinder;
|
||||||
private final DeclarationResolver declarationResolver;
|
private final DeclarationResolver declarationResolver;
|
||||||
@@ -110,13 +112,13 @@ public class InjectorForTopDownAnalyzerForJvm implements InjectorForTopDownAnaly
|
|||||||
private final JavaClassResolver javaClassResolver;
|
private final JavaClassResolver javaClassResolver;
|
||||||
private final JavaAnnotationResolver javaAnnotationResolver;
|
private final JavaAnnotationResolver javaAnnotationResolver;
|
||||||
private final JavaAnnotationArgumentResolver javaAnnotationArgumentResolver;
|
private final JavaAnnotationArgumentResolver javaAnnotationArgumentResolver;
|
||||||
|
private final DeserializedDescriptorResolver deserializedDescriptorResolver;
|
||||||
|
private final AnnotationDescriptorDeserializer annotationDescriptorDeserializer;
|
||||||
|
private final JavaNamespaceResolver javaNamespaceResolver;
|
||||||
private final JavaFunctionResolver javaFunctionResolver;
|
private final JavaFunctionResolver javaFunctionResolver;
|
||||||
private final JavaTypeParameterResolver javaTypeParameterResolver;
|
private final JavaTypeParameterResolver javaTypeParameterResolver;
|
||||||
private final JavaTypeTransformer javaTypeTransformer;
|
private final JavaTypeTransformer javaTypeTransformer;
|
||||||
private final JavaValueParameterResolver javaValueParameterResolver;
|
private final JavaValueParameterResolver javaValueParameterResolver;
|
||||||
private final DeserializedDescriptorResolver deserializedDescriptorResolver;
|
|
||||||
private final AnnotationDescriptorDeserializer annotationDescriptorDeserializer;
|
|
||||||
private final JavaNamespaceResolver javaNamespaceResolver;
|
|
||||||
private final JavaSupertypeResolver javaSupertypeResolver;
|
private final JavaSupertypeResolver javaSupertypeResolver;
|
||||||
private final JavaConstructorResolver javaConstructorResolver;
|
private final JavaConstructorResolver javaConstructorResolver;
|
||||||
private final JavaPropertyResolver javaPropertyResolver;
|
private final JavaPropertyResolver javaPropertyResolver;
|
||||||
@@ -145,6 +147,7 @@ public class InjectorForTopDownAnalyzerForJvm implements InjectorForTopDownAnaly
|
|||||||
this.traceBasedExternalSignatureResolver = new TraceBasedExternalSignatureResolver();
|
this.traceBasedExternalSignatureResolver = new TraceBasedExternalSignatureResolver();
|
||||||
this.traceBasedJavaResolverCache = new TraceBasedJavaResolverCache();
|
this.traceBasedJavaResolverCache = new TraceBasedJavaResolverCache();
|
||||||
this.fakeOverrideVisibilityResolver = new FakeOverrideVisibilityResolverImpl();
|
this.fakeOverrideVisibilityResolver = new FakeOverrideVisibilityResolverImpl();
|
||||||
|
this.traceBasedErrorReporter = new TraceBasedErrorReporter();
|
||||||
this.namespaceFactory = new NamespaceFactoryImpl();
|
this.namespaceFactory = new NamespaceFactoryImpl();
|
||||||
this.virtualFileFinder = com.intellij.openapi.components.ServiceManager.getService(project, VirtualFileFinder.class);
|
this.virtualFileFinder = com.intellij.openapi.components.ServiceManager.getService(project, VirtualFileFinder.class);
|
||||||
this.declarationResolver = new DeclarationResolver();
|
this.declarationResolver = new DeclarationResolver();
|
||||||
@@ -166,13 +169,13 @@ public class InjectorForTopDownAnalyzerForJvm implements InjectorForTopDownAnaly
|
|||||||
this.javaClassResolver = new JavaClassResolver();
|
this.javaClassResolver = new JavaClassResolver();
|
||||||
this.javaAnnotationResolver = new JavaAnnotationResolver();
|
this.javaAnnotationResolver = new JavaAnnotationResolver();
|
||||||
this.javaAnnotationArgumentResolver = new JavaAnnotationArgumentResolver();
|
this.javaAnnotationArgumentResolver = new JavaAnnotationArgumentResolver();
|
||||||
|
this.deserializedDescriptorResolver = new DeserializedDescriptorResolver();
|
||||||
|
this.annotationDescriptorDeserializer = new AnnotationDescriptorDeserializer();
|
||||||
|
this.javaNamespaceResolver = new JavaNamespaceResolver();
|
||||||
this.javaFunctionResolver = new JavaFunctionResolver();
|
this.javaFunctionResolver = new JavaFunctionResolver();
|
||||||
this.javaTypeParameterResolver = new JavaTypeParameterResolver();
|
this.javaTypeParameterResolver = new JavaTypeParameterResolver();
|
||||||
this.javaTypeTransformer = new JavaTypeTransformer();
|
this.javaTypeTransformer = new JavaTypeTransformer();
|
||||||
this.javaValueParameterResolver = new JavaValueParameterResolver();
|
this.javaValueParameterResolver = new JavaValueParameterResolver();
|
||||||
this.deserializedDescriptorResolver = new DeserializedDescriptorResolver();
|
|
||||||
this.annotationDescriptorDeserializer = new AnnotationDescriptorDeserializer();
|
|
||||||
this.javaNamespaceResolver = new JavaNamespaceResolver();
|
|
||||||
this.javaSupertypeResolver = new JavaSupertypeResolver();
|
this.javaSupertypeResolver = new JavaSupertypeResolver();
|
||||||
this.javaConstructorResolver = new JavaConstructorResolver();
|
this.javaConstructorResolver = new JavaConstructorResolver();
|
||||||
this.javaPropertyResolver = new JavaPropertyResolver();
|
this.javaPropertyResolver = new JavaPropertyResolver();
|
||||||
@@ -228,6 +231,8 @@ public class InjectorForTopDownAnalyzerForJvm implements InjectorForTopDownAnaly
|
|||||||
|
|
||||||
fakeOverrideVisibilityResolver.setTrace(bindingTrace);
|
fakeOverrideVisibilityResolver.setTrace(bindingTrace);
|
||||||
|
|
||||||
|
traceBasedErrorReporter.setTrace(bindingTrace);
|
||||||
|
|
||||||
this.namespaceFactory.setModuleDescriptor(moduleDescriptor);
|
this.namespaceFactory.setModuleDescriptor(moduleDescriptor);
|
||||||
this.namespaceFactory.setTrace(bindingTrace);
|
this.namespaceFactory.setTrace(bindingTrace);
|
||||||
|
|
||||||
@@ -299,13 +304,12 @@ public class InjectorForTopDownAnalyzerForJvm implements InjectorForTopDownAnaly
|
|||||||
|
|
||||||
javaClassResolver.setAnnotationResolver(javaAnnotationResolver);
|
javaClassResolver.setAnnotationResolver(javaAnnotationResolver);
|
||||||
javaClassResolver.setCache(traceBasedJavaResolverCache);
|
javaClassResolver.setCache(traceBasedJavaResolverCache);
|
||||||
|
javaClassResolver.setDeserializedDescriptorResolver(deserializedDescriptorResolver);
|
||||||
javaClassResolver.setFunctionResolver(javaFunctionResolver);
|
javaClassResolver.setFunctionResolver(javaFunctionResolver);
|
||||||
javaClassResolver.setJavaClassFinder(javaClassFinder);
|
javaClassResolver.setJavaClassFinder(javaClassFinder);
|
||||||
javaClassResolver.setJavaDescriptorResolver(javaDescriptorResolver);
|
javaClassResolver.setJavaDescriptorResolver(javaDescriptorResolver);
|
||||||
javaClassResolver.setKotlinDescriptorResolver(deserializedDescriptorResolver);
|
|
||||||
javaClassResolver.setNamespaceResolver(javaNamespaceResolver);
|
javaClassResolver.setNamespaceResolver(javaNamespaceResolver);
|
||||||
javaClassResolver.setSupertypesResolver(javaSupertypeResolver);
|
javaClassResolver.setSupertypesResolver(javaSupertypeResolver);
|
||||||
javaClassResolver.setTrace(bindingTrace);
|
|
||||||
javaClassResolver.setTypeParameterResolver(javaTypeParameterResolver);
|
javaClassResolver.setTypeParameterResolver(javaTypeParameterResolver);
|
||||||
javaClassResolver.setVirtualFileFinder(virtualFileFinder);
|
javaClassResolver.setVirtualFileFinder(virtualFileFinder);
|
||||||
|
|
||||||
@@ -315,6 +319,21 @@ public class InjectorForTopDownAnalyzerForJvm implements InjectorForTopDownAnaly
|
|||||||
javaAnnotationArgumentResolver.setAnnotationResolver(javaAnnotationResolver);
|
javaAnnotationArgumentResolver.setAnnotationResolver(javaAnnotationResolver);
|
||||||
javaAnnotationArgumentResolver.setClassResolver(javaClassResolver);
|
javaAnnotationArgumentResolver.setClassResolver(javaClassResolver);
|
||||||
|
|
||||||
|
deserializedDescriptorResolver.setAnnotationDeserializer(annotationDescriptorDeserializer);
|
||||||
|
deserializedDescriptorResolver.setErrorReporter(traceBasedErrorReporter);
|
||||||
|
deserializedDescriptorResolver.setJavaClassResolver(javaClassResolver);
|
||||||
|
deserializedDescriptorResolver.setJavaNamespaceResolver(javaNamespaceResolver);
|
||||||
|
|
||||||
|
annotationDescriptorDeserializer.setJavaClassResolver(javaClassResolver);
|
||||||
|
annotationDescriptorDeserializer.setPsiClassFinder(psiClassFinder);
|
||||||
|
annotationDescriptorDeserializer.setVirtualFileFinder(virtualFileFinder);
|
||||||
|
|
||||||
|
javaNamespaceResolver.setCache(traceBasedJavaResolverCache);
|
||||||
|
javaNamespaceResolver.setDeserializedDescriptorResolver(deserializedDescriptorResolver);
|
||||||
|
javaNamespaceResolver.setJavaClassFinder(javaClassFinder);
|
||||||
|
javaNamespaceResolver.setJavaDescriptorResolver(javaDescriptorResolver);
|
||||||
|
javaNamespaceResolver.setVirtualFileFinder(virtualFileFinder);
|
||||||
|
|
||||||
javaFunctionResolver.setAnnotationResolver(javaAnnotationResolver);
|
javaFunctionResolver.setAnnotationResolver(javaAnnotationResolver);
|
||||||
javaFunctionResolver.setCache(traceBasedJavaResolverCache);
|
javaFunctionResolver.setCache(traceBasedJavaResolverCache);
|
||||||
javaFunctionResolver.setExternalSignatureResolver(traceBasedExternalSignatureResolver);
|
javaFunctionResolver.setExternalSignatureResolver(traceBasedExternalSignatureResolver);
|
||||||
@@ -329,21 +348,6 @@ public class InjectorForTopDownAnalyzerForJvm implements InjectorForTopDownAnaly
|
|||||||
|
|
||||||
javaValueParameterResolver.setTypeTransformer(javaTypeTransformer);
|
javaValueParameterResolver.setTypeTransformer(javaTypeTransformer);
|
||||||
|
|
||||||
deserializedDescriptorResolver.setAnnotationDeserializer(annotationDescriptorDeserializer);
|
|
||||||
deserializedDescriptorResolver.setJavaClassResolver(javaClassResolver);
|
|
||||||
deserializedDescriptorResolver.setJavaNamespaceResolver(javaNamespaceResolver);
|
|
||||||
|
|
||||||
annotationDescriptorDeserializer.setJavaClassResolver(javaClassResolver);
|
|
||||||
annotationDescriptorDeserializer.setPsiClassFinder(psiClassFinder);
|
|
||||||
annotationDescriptorDeserializer.setVirtualFileFinder(virtualFileFinder);
|
|
||||||
|
|
||||||
javaNamespaceResolver.setCache(traceBasedJavaResolverCache);
|
|
||||||
javaNamespaceResolver.setDeserializedDescriptorResolver(deserializedDescriptorResolver);
|
|
||||||
javaNamespaceResolver.setJavaClassFinder(javaClassFinder);
|
|
||||||
javaNamespaceResolver.setJavaDescriptorResolver(javaDescriptorResolver);
|
|
||||||
javaNamespaceResolver.setTrace(bindingTrace);
|
|
||||||
javaNamespaceResolver.setVirtualFileFinder(virtualFileFinder);
|
|
||||||
|
|
||||||
javaSupertypeResolver.setClassResolver(javaClassResolver);
|
javaSupertypeResolver.setClassResolver(javaClassResolver);
|
||||||
javaSupertypeResolver.setTrace(bindingTrace);
|
javaSupertypeResolver.setTrace(bindingTrace);
|
||||||
javaSupertypeResolver.setTypeTransformer(javaTypeTransformer);
|
javaSupertypeResolver.setTypeTransformer(javaTypeTransformer);
|
||||||
|
|||||||
@@ -34,20 +34,6 @@ public final class AbiVersionUtil {
|
|||||||
return abiVersion == JvmAbi.VERSION;
|
return abiVersion == JvmAbi.VERSION;
|
||||||
}
|
}
|
||||||
|
|
||||||
@NotNull
|
|
||||||
public static ErrorReporter abiVersionErrorReporter(
|
|
||||||
@NotNull final VirtualFile file,
|
|
||||||
@NotNull final FqName classFqName,
|
|
||||||
@NotNull final BindingTrace trace
|
|
||||||
) {
|
|
||||||
return new ErrorReporter() {
|
|
||||||
@Override
|
|
||||||
public void reportIncompatibleAbiVersion(int actualVersion) {
|
|
||||||
trace.record(ABI_VERSION_ERRORS, new AbiVersionErrorLocation(classFqName, file), actualVersion);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
public static final class AbiVersionErrorLocation {
|
public static final class AbiVersionErrorLocation {
|
||||||
@NotNull
|
@NotNull
|
||||||
private final FqName classFqName;
|
private final FqName classFqName;
|
||||||
|
|||||||
+24
-31
@@ -39,7 +39,6 @@ import static org.jetbrains.jet.lang.resolve.java.DescriptorSearchRule.INCLUDE_K
|
|||||||
import static org.jetbrains.jet.lang.resolve.java.resolver.DeserializedResolverUtils.kotlinFqNameToJavaFqName;
|
import static org.jetbrains.jet.lang.resolve.java.resolver.DeserializedResolverUtils.kotlinFqNameToJavaFqName;
|
||||||
|
|
||||||
public final class DeserializedDescriptorResolver {
|
public final class DeserializedDescriptorResolver {
|
||||||
|
|
||||||
private AnnotationDescriptorDeserializer annotationDeserializer;
|
private AnnotationDescriptorDeserializer annotationDeserializer;
|
||||||
|
|
||||||
private final LockBasedStorageManager storageManager = new LockBasedStorageManager();
|
private final LockBasedStorageManager storageManager = new LockBasedStorageManager();
|
||||||
@@ -48,6 +47,8 @@ public final class DeserializedDescriptorResolver {
|
|||||||
|
|
||||||
private JavaClassResolver javaClassResolver;
|
private JavaClassResolver javaClassResolver;
|
||||||
|
|
||||||
|
private ErrorReporter errorReporter;
|
||||||
|
|
||||||
@NotNull
|
@NotNull
|
||||||
private final DescriptorFinder javaDescriptorFinder = new DescriptorFinder() {
|
private final DescriptorFinder javaDescriptorFinder = new DescriptorFinder() {
|
||||||
@Nullable
|
@Nullable
|
||||||
@@ -84,26 +85,30 @@ public final class DeserializedDescriptorResolver {
|
|||||||
this.javaClassResolver = javaClassResolver;
|
this.javaClassResolver = javaClassResolver;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Nullable
|
@Inject
|
||||||
public ClassDescriptor resolveClass(@NotNull ClassId id, @NotNull VirtualFile file, @NotNull ErrorReporter reporter) {
|
public void setErrorReporter(ErrorReporter errorReporter) {
|
||||||
ClassData classData = readClassDataFromClassFile(file, reporter);
|
this.errorReporter = errorReporter;
|
||||||
if (classData == null) {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
return createDeserializedClass(classData, id);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Nullable
|
@Nullable
|
||||||
public JetScope createKotlinPackageScope(
|
public ClassDescriptor resolveClass(@NotNull ClassId id, @NotNull VirtualFile file) {
|
||||||
@NotNull NamespaceDescriptor descriptor,
|
String[] data = readData(file);
|
||||||
@NotNull VirtualFile file,
|
if (data != null) {
|
||||||
@NotNull ErrorReporter reporter
|
ClassData classData = JavaProtoBufUtil.readClassDataFrom(data);
|
||||||
) {
|
return createDeserializedClass(classData, id);
|
||||||
PackageData packageData = readPackageDataFromClassFile(file, reporter);
|
|
||||||
if (packageData == null) {
|
|
||||||
return null;
|
|
||||||
}
|
}
|
||||||
return new DeserializedPackageMemberScope(storageManager, descriptor, annotationDeserializer, javaDescriptorFinder, packageData);
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Nullable
|
||||||
|
public JetScope createKotlinPackageScope(@NotNull NamespaceDescriptor descriptor, @NotNull VirtualFile file) {
|
||||||
|
String[] data = readData(file);
|
||||||
|
if (data != null) {
|
||||||
|
PackageData packageData = JavaProtoBufUtil.readPackageDataFrom(data);
|
||||||
|
return new DeserializedPackageMemberScope(storageManager, descriptor, annotationDeserializer, javaDescriptorFinder,
|
||||||
|
packageData);
|
||||||
|
}
|
||||||
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Nullable
|
@Nullable
|
||||||
@@ -119,23 +124,11 @@ public final class DeserializedDescriptorResolver {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Nullable
|
@Nullable
|
||||||
private static ClassData readClassDataFromClassFile(@NotNull VirtualFile file, @NotNull ErrorReporter reporter) {
|
private String[] readData(@NotNull VirtualFile virtualFile) {
|
||||||
String[] data = readData(file, reporter);
|
|
||||||
return data == null ? null : JavaProtoBufUtil.readClassDataFrom(data);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Nullable
|
|
||||||
private static PackageData readPackageDataFromClassFile(@NotNull VirtualFile file, @NotNull ErrorReporter reporter) {
|
|
||||||
String[] data = readData(file, reporter);
|
|
||||||
return data == null ? null : JavaProtoBufUtil.readPackageDataFrom(data);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Nullable
|
|
||||||
private static String[] readData(@NotNull VirtualFile virtualFile, @NotNull ErrorReporter reporter) {
|
|
||||||
KotlinClassFileHeader header = KotlinClassFileHeader.readKotlinHeaderFromClassFile(virtualFile);
|
KotlinClassFileHeader header = KotlinClassFileHeader.readKotlinHeaderFromClassFile(virtualFile);
|
||||||
int version = header.getVersion();
|
int version = header.getVersion();
|
||||||
if (!isAbiVersionCompatible(version) && header.getType() != KotlinClassFileHeader.HeaderType.NONE) {
|
if (!isAbiVersionCompatible(version) && header.getType() != KotlinClassFileHeader.HeaderType.NONE) {
|
||||||
reporter.reportIncompatibleAbiVersion(version);
|
errorReporter.reportIncompatibleAbiVersion(header.getFqName(), virtualFile, version);
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
return header.getAnnotationData();
|
return header.getAnnotationData();
|
||||||
|
|||||||
+5
-1
@@ -16,6 +16,10 @@
|
|||||||
|
|
||||||
package org.jetbrains.jet.lang.resolve.java.resolver;
|
package org.jetbrains.jet.lang.resolve.java.resolver;
|
||||||
|
|
||||||
|
import com.intellij.openapi.vfs.VirtualFile;
|
||||||
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
import org.jetbrains.jet.lang.resolve.name.FqName;
|
||||||
|
|
||||||
public interface ErrorReporter {
|
public interface ErrorReporter {
|
||||||
void reportIncompatibleAbiVersion(int actualVersion);
|
void reportIncompatibleAbiVersion(@NotNull FqName fqName, @NotNull VirtualFile file, int actualVersion);
|
||||||
}
|
}
|
||||||
|
|||||||
+4
-12
@@ -28,7 +28,6 @@ import org.jetbrains.annotations.NotNull;
|
|||||||
import org.jetbrains.annotations.Nullable;
|
import org.jetbrains.annotations.Nullable;
|
||||||
import org.jetbrains.jet.descriptors.serialization.ClassId;
|
import org.jetbrains.jet.descriptors.serialization.ClassId;
|
||||||
import org.jetbrains.jet.lang.descriptors.*;
|
import org.jetbrains.jet.lang.descriptors.*;
|
||||||
import org.jetbrains.jet.lang.resolve.BindingTrace;
|
|
||||||
import org.jetbrains.jet.lang.resolve.DescriptorResolver;
|
import org.jetbrains.jet.lang.resolve.DescriptorResolver;
|
||||||
import org.jetbrains.jet.lang.resolve.DescriptorUtils;
|
import org.jetbrains.jet.lang.resolve.DescriptorUtils;
|
||||||
import org.jetbrains.jet.lang.resolve.java.*;
|
import org.jetbrains.jet.lang.resolve.java.*;
|
||||||
@@ -83,7 +82,6 @@ public final class JavaClassResolver {
|
|||||||
@NotNull
|
@NotNull
|
||||||
private final Set<FqNameBase> unresolvedCache = Sets.newHashSet();
|
private final Set<FqNameBase> unresolvedCache = Sets.newHashSet();
|
||||||
|
|
||||||
private BindingTrace trace;
|
|
||||||
private JavaResolverCache cache;
|
private JavaResolverCache cache;
|
||||||
private JavaTypeParameterResolver typeParameterResolver;
|
private JavaTypeParameterResolver typeParameterResolver;
|
||||||
private JavaDescriptorResolver javaDescriptorResolver;
|
private JavaDescriptorResolver javaDescriptorResolver;
|
||||||
@@ -92,7 +90,7 @@ public final class JavaClassResolver {
|
|||||||
private JavaNamespaceResolver namespaceResolver;
|
private JavaNamespaceResolver namespaceResolver;
|
||||||
private JavaSupertypeResolver supertypesResolver;
|
private JavaSupertypeResolver supertypesResolver;
|
||||||
private JavaFunctionResolver functionResolver;
|
private JavaFunctionResolver functionResolver;
|
||||||
private DeserializedDescriptorResolver kotlinDescriptorResolver;
|
private DeserializedDescriptorResolver deserializedDescriptorResolver;
|
||||||
private VirtualFileFinder virtualFileFinder;
|
private VirtualFileFinder virtualFileFinder;
|
||||||
|
|
||||||
public JavaClassResolver() {
|
public JavaClassResolver() {
|
||||||
@@ -103,19 +101,14 @@ public final class JavaClassResolver {
|
|||||||
this.virtualFileFinder = virtualFileFinder;
|
this.virtualFileFinder = virtualFileFinder;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Inject
|
|
||||||
public void setTrace(BindingTrace trace) {
|
|
||||||
this.trace = trace;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
public void setCache(JavaResolverCache cache) {
|
public void setCache(JavaResolverCache cache) {
|
||||||
this.cache = cache;
|
this.cache = cache;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
public void setKotlinDescriptorResolver(DeserializedDescriptorResolver kotlinDescriptorResolver) {
|
public void setDeserializedDescriptorResolver(DeserializedDescriptorResolver deserializedDescriptorResolver) {
|
||||||
this.kotlinDescriptorResolver = kotlinDescriptorResolver;
|
this.deserializedDescriptorResolver = deserializedDescriptorResolver;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
@@ -229,8 +222,7 @@ public final class JavaClassResolver {
|
|||||||
: "We can resolve the class, so it can't be 'unresolved' during parent resolution";
|
: "We can resolve the class, so it can't be 'unresolved' during parent resolution";
|
||||||
|
|
||||||
ClassId id = ClassId.fromFqNameAndContainingDeclaration(qualifiedName, containingDeclaration);
|
ClassId id = ClassId.fromFqNameAndContainingDeclaration(qualifiedName, containingDeclaration);
|
||||||
ErrorReporter errorReporter = AbiVersionUtil.abiVersionErrorReporter(file, qualifiedName, trace);
|
ClassDescriptor deserializedDescriptor = deserializedDescriptorResolver.resolveClass(id, file);
|
||||||
ClassDescriptor deserializedDescriptor = kotlinDescriptorResolver.resolveClass(id, file, errorReporter);
|
|
||||||
if (deserializedDescriptor != null) {
|
if (deserializedDescriptor != null) {
|
||||||
cache(javaClassToKotlinFqName(qualifiedName), deserializedDescriptor);
|
cache(javaClassToKotlinFqName(qualifiedName), deserializedDescriptor);
|
||||||
return deserializedDescriptor;
|
return deserializedDescriptor;
|
||||||
|
|||||||
+1
-10
@@ -26,7 +26,6 @@ import org.jetbrains.jet.lang.descriptors.ModuleDescriptorImpl;
|
|||||||
import org.jetbrains.jet.lang.descriptors.NamespaceDescriptor;
|
import org.jetbrains.jet.lang.descriptors.NamespaceDescriptor;
|
||||||
import org.jetbrains.jet.lang.descriptors.annotations.AnnotationDescriptor;
|
import org.jetbrains.jet.lang.descriptors.annotations.AnnotationDescriptor;
|
||||||
import org.jetbrains.jet.lang.descriptors.impl.NamespaceDescriptorParent;
|
import org.jetbrains.jet.lang.descriptors.impl.NamespaceDescriptorParent;
|
||||||
import org.jetbrains.jet.lang.resolve.BindingTrace;
|
|
||||||
import org.jetbrains.jet.lang.resolve.DescriptorUtils;
|
import org.jetbrains.jet.lang.resolve.DescriptorUtils;
|
||||||
import org.jetbrains.jet.lang.resolve.java.*;
|
import org.jetbrains.jet.lang.resolve.java.*;
|
||||||
import org.jetbrains.jet.lang.resolve.java.descriptor.JavaNamespaceDescriptor;
|
import org.jetbrains.jet.lang.resolve.java.descriptor.JavaNamespaceDescriptor;
|
||||||
@@ -60,7 +59,6 @@ public final class JavaNamespaceResolver {
|
|||||||
private final Set<FqName> unresolvedCache = Sets.newHashSet();
|
private final Set<FqName> unresolvedCache = Sets.newHashSet();
|
||||||
|
|
||||||
private JavaClassFinder javaClassFinder;
|
private JavaClassFinder javaClassFinder;
|
||||||
private BindingTrace trace;
|
|
||||||
private JavaResolverCache cache;
|
private JavaResolverCache cache;
|
||||||
private JavaDescriptorResolver javaDescriptorResolver;
|
private JavaDescriptorResolver javaDescriptorResolver;
|
||||||
|
|
||||||
@@ -77,11 +75,6 @@ public final class JavaNamespaceResolver {
|
|||||||
this.javaClassFinder = javaClassFinder;
|
this.javaClassFinder = javaClassFinder;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Inject
|
|
||||||
public void setTrace(BindingTrace trace) {
|
|
||||||
this.trace = trace;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
public void setCache(JavaResolverCache cache) {
|
public void setCache(JavaResolverCache cache) {
|
||||||
this.cache = cache;
|
this.cache = cache;
|
||||||
@@ -165,9 +158,7 @@ public final class JavaNamespaceResolver {
|
|||||||
cache.recordProperNamespace(namespaceDescriptor);
|
cache.recordProperNamespace(namespaceDescriptor);
|
||||||
|
|
||||||
if (virtualFile != null) {
|
if (virtualFile != null) {
|
||||||
ErrorReporter errorReporter = AbiVersionUtil.abiVersionErrorReporter(virtualFile, packageClassFqName, trace);
|
JetScope kotlinPackageScope = deserializedDescriptorResolver.createKotlinPackageScope(namespaceDescriptor, virtualFile);
|
||||||
JetScope kotlinPackageScope = deserializedDescriptorResolver.createKotlinPackageScope(namespaceDescriptor,
|
|
||||||
virtualFile, errorReporter);
|
|
||||||
if (kotlinPackageScope != null) {
|
if (kotlinPackageScope != null) {
|
||||||
return kotlinPackageScope;
|
return kotlinPackageScope;
|
||||||
}
|
}
|
||||||
|
|||||||
+39
@@ -0,0 +1,39 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2010-2013 JetBrains s.r.o.
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package org.jetbrains.jet.lang.resolve.java.resolver;
|
||||||
|
|
||||||
|
import com.intellij.openapi.vfs.VirtualFile;
|
||||||
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
import org.jetbrains.jet.lang.resolve.BindingTrace;
|
||||||
|
import org.jetbrains.jet.lang.resolve.java.AbiVersionUtil;
|
||||||
|
import org.jetbrains.jet.lang.resolve.name.FqName;
|
||||||
|
|
||||||
|
import javax.inject.Inject;
|
||||||
|
|
||||||
|
public class TraceBasedErrorReporter implements ErrorReporter {
|
||||||
|
private BindingTrace trace;
|
||||||
|
|
||||||
|
@Inject
|
||||||
|
public void setTrace(BindingTrace trace) {
|
||||||
|
this.trace = trace;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void reportIncompatibleAbiVersion(@NotNull FqName fqName, @NotNull VirtualFile file, int actualVersion) {
|
||||||
|
trace.record(AbiVersionUtil.ABI_VERSION_ERRORS, new AbiVersionUtil.AbiVersionErrorLocation(fqName, file), actualVersion);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -38,6 +38,7 @@ import org.jetbrains.jet.lang.resolve.java.JavaClassFinderImpl;
|
|||||||
import org.jetbrains.jet.lang.resolve.java.JavaDescriptorResolver;
|
import org.jetbrains.jet.lang.resolve.java.JavaDescriptorResolver;
|
||||||
import org.jetbrains.jet.lang.resolve.java.PsiClassFinderImpl;
|
import org.jetbrains.jet.lang.resolve.java.PsiClassFinderImpl;
|
||||||
import org.jetbrains.jet.lang.resolve.java.resolver.FakeOverrideVisibilityResolverImpl;
|
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.TraceBasedExternalSignatureResolver;
|
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.TraceBasedJavaResolverCache;
|
||||||
import org.jetbrains.jet.lang.resolve.java.vfilefinder.VirtualFileFinder;
|
import org.jetbrains.jet.lang.resolve.java.vfilefinder.VirtualFileFinder;
|
||||||
@@ -111,6 +112,7 @@ public class GenerateInjectors {
|
|||||||
generator.addField(TraceBasedExternalSignatureResolver.class);
|
generator.addField(TraceBasedExternalSignatureResolver.class);
|
||||||
generator.addField(TraceBasedJavaResolverCache.class);
|
generator.addField(TraceBasedJavaResolverCache.class);
|
||||||
generator.addField(FakeOverrideVisibilityResolverImpl.class);
|
generator.addField(FakeOverrideVisibilityResolverImpl.class);
|
||||||
|
generator.addField(TraceBasedErrorReporter.class);
|
||||||
generator.addPublicField(NamespaceFactoryImpl.class);
|
generator.addPublicField(NamespaceFactoryImpl.class);
|
||||||
generator.addField(false, VirtualFileFinder.class, "virtualFileFinder",
|
generator.addField(false, VirtualFileFinder.class, "virtualFileFinder",
|
||||||
new GivenExpression(
|
new GivenExpression(
|
||||||
@@ -131,6 +133,7 @@ public class GenerateInjectors {
|
|||||||
generator.addField(TraceBasedExternalSignatureResolver.class);
|
generator.addField(TraceBasedExternalSignatureResolver.class);
|
||||||
generator.addField(TraceBasedJavaResolverCache.class);
|
generator.addField(TraceBasedJavaResolverCache.class);
|
||||||
generator.addField(FakeOverrideVisibilityResolverImpl.class);
|
generator.addField(FakeOverrideVisibilityResolverImpl.class);
|
||||||
|
generator.addField(TraceBasedErrorReporter.class);
|
||||||
generator.addPublicField(JavaDescriptorResolver.class);
|
generator.addPublicField(JavaDescriptorResolver.class);
|
||||||
generator.addPublicField(PsiClassFinderImpl.class);
|
generator.addPublicField(PsiClassFinderImpl.class);
|
||||||
generator.addField(false, VirtualFileFinder.class, "virtualFileFinder",
|
generator.addField(false, VirtualFileFinder.class, "virtualFileFinder",
|
||||||
|
|||||||
Reference in New Issue
Block a user