Extract interface out of ExternalSignatureResolver
This commit is contained in:
+8
-8
@@ -19,6 +19,7 @@ package org.jetbrains.jet.di;
|
|||||||
import com.intellij.openapi.project.Project;
|
import com.intellij.openapi.project.Project;
|
||||||
import org.jetbrains.jet.lang.resolve.BindingTrace;
|
import org.jetbrains.jet.lang.resolve.BindingTrace;
|
||||||
import org.jetbrains.jet.lang.resolve.java.JavaClassFinderImpl;
|
import org.jetbrains.jet.lang.resolve.java.JavaClassFinderImpl;
|
||||||
|
import org.jetbrains.jet.lang.resolve.java.resolver.TraceBasedExternalSignatureResolver;
|
||||||
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;
|
||||||
@@ -26,7 +27,6 @@ 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.JavaFunctionResolver;
|
import org.jetbrains.jet.lang.resolve.java.resolver.JavaFunctionResolver;
|
||||||
import org.jetbrains.jet.lang.resolve.java.resolver.ExternalSignatureResolver;
|
|
||||||
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;
|
||||||
@@ -45,6 +45,7 @@ public class InjectorForJavaDescriptorResolver {
|
|||||||
private final Project project;
|
private final Project project;
|
||||||
private final BindingTrace bindingTrace;
|
private final BindingTrace bindingTrace;
|
||||||
private final JavaClassFinderImpl javaClassFinder;
|
private final JavaClassFinderImpl javaClassFinder;
|
||||||
|
private final TraceBasedExternalSignatureResolver traceBasedExternalSignatureResolver;
|
||||||
private final JavaDescriptorResolver javaDescriptorResolver;
|
private final JavaDescriptorResolver javaDescriptorResolver;
|
||||||
private final PsiClassFinderImpl psiClassFinder;
|
private final PsiClassFinderImpl psiClassFinder;
|
||||||
private final VirtualFileFinder virtualFileFinder;
|
private final VirtualFileFinder virtualFileFinder;
|
||||||
@@ -52,7 +53,6 @@ public class InjectorForJavaDescriptorResolver {
|
|||||||
private final JavaAnnotationResolver javaAnnotationResolver;
|
private final JavaAnnotationResolver javaAnnotationResolver;
|
||||||
private final JavaAnnotationArgumentResolver javaAnnotationArgumentResolver;
|
private final JavaAnnotationArgumentResolver javaAnnotationArgumentResolver;
|
||||||
private final JavaFunctionResolver javaFunctionResolver;
|
private final JavaFunctionResolver javaFunctionResolver;
|
||||||
private final ExternalSignatureResolver externalSignatureResolver;
|
|
||||||
private final JavaTypeParameterResolver javaTypeParameterResolver;
|
private final JavaTypeParameterResolver javaTypeParameterResolver;
|
||||||
private final JavaTypeTransformer javaTypeTransformer;
|
private final JavaTypeTransformer javaTypeTransformer;
|
||||||
private final JavaValueParameterResolver javaValueParameterResolver;
|
private final JavaValueParameterResolver javaValueParameterResolver;
|
||||||
@@ -70,6 +70,7 @@ public class InjectorForJavaDescriptorResolver {
|
|||||||
this.project = project;
|
this.project = project;
|
||||||
this.bindingTrace = bindingTrace;
|
this.bindingTrace = bindingTrace;
|
||||||
this.javaClassFinder = new JavaClassFinderImpl();
|
this.javaClassFinder = new JavaClassFinderImpl();
|
||||||
|
this.traceBasedExternalSignatureResolver = new TraceBasedExternalSignatureResolver();
|
||||||
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);
|
||||||
@@ -77,7 +78,6 @@ public class InjectorForJavaDescriptorResolver {
|
|||||||
this.javaAnnotationResolver = new JavaAnnotationResolver();
|
this.javaAnnotationResolver = new JavaAnnotationResolver();
|
||||||
this.javaAnnotationArgumentResolver = new JavaAnnotationArgumentResolver();
|
this.javaAnnotationArgumentResolver = new JavaAnnotationArgumentResolver();
|
||||||
this.javaFunctionResolver = new JavaFunctionResolver();
|
this.javaFunctionResolver = new JavaFunctionResolver();
|
||||||
this.externalSignatureResolver = new ExternalSignatureResolver();
|
|
||||||
this.javaTypeParameterResolver = new JavaTypeParameterResolver();
|
this.javaTypeParameterResolver = new JavaTypeParameterResolver();
|
||||||
this.javaTypeTransformer = new JavaTypeTransformer();
|
this.javaTypeTransformer = new JavaTypeTransformer();
|
||||||
this.javaValueParameterResolver = new JavaValueParameterResolver();
|
this.javaValueParameterResolver = new JavaValueParameterResolver();
|
||||||
@@ -90,6 +90,8 @@ public class InjectorForJavaDescriptorResolver {
|
|||||||
|
|
||||||
javaClassFinder.setPsiClassFinder(psiClassFinder);
|
javaClassFinder.setPsiClassFinder(psiClassFinder);
|
||||||
|
|
||||||
|
traceBasedExternalSignatureResolver.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);
|
||||||
@@ -116,14 +118,12 @@ public class InjectorForJavaDescriptorResolver {
|
|||||||
javaAnnotationArgumentResolver.setClassResolver(javaClassResolver);
|
javaAnnotationArgumentResolver.setClassResolver(javaClassResolver);
|
||||||
|
|
||||||
javaFunctionResolver.setAnnotationResolver(javaAnnotationResolver);
|
javaFunctionResolver.setAnnotationResolver(javaAnnotationResolver);
|
||||||
javaFunctionResolver.setExternalSignatureResolver(externalSignatureResolver);
|
javaFunctionResolver.setExternalSignatureResolver(traceBasedExternalSignatureResolver);
|
||||||
javaFunctionResolver.setTrace(bindingTrace);
|
javaFunctionResolver.setTrace(bindingTrace);
|
||||||
javaFunctionResolver.setTypeParameterResolver(javaTypeParameterResolver);
|
javaFunctionResolver.setTypeParameterResolver(javaTypeParameterResolver);
|
||||||
javaFunctionResolver.setTypeTransformer(javaTypeTransformer);
|
javaFunctionResolver.setTypeTransformer(javaTypeTransformer);
|
||||||
javaFunctionResolver.setValueParameterResolver(javaValueParameterResolver);
|
javaFunctionResolver.setValueParameterResolver(javaValueParameterResolver);
|
||||||
|
|
||||||
externalSignatureResolver.setTrace(bindingTrace);
|
|
||||||
|
|
||||||
javaTypeParameterResolver.setTypeTransformer(javaTypeTransformer);
|
javaTypeParameterResolver.setTypeTransformer(javaTypeTransformer);
|
||||||
|
|
||||||
javaTypeTransformer.setClassResolver(javaClassResolver);
|
javaTypeTransformer.setClassResolver(javaClassResolver);
|
||||||
@@ -148,13 +148,13 @@ public class InjectorForJavaDescriptorResolver {
|
|||||||
javaSupertypeResolver.setTrace(bindingTrace);
|
javaSupertypeResolver.setTrace(bindingTrace);
|
||||||
javaSupertypeResolver.setTypeTransformer(javaTypeTransformer);
|
javaSupertypeResolver.setTypeTransformer(javaTypeTransformer);
|
||||||
|
|
||||||
javaConstructorResolver.setExternalSignatureResolver(externalSignatureResolver);
|
javaConstructorResolver.setExternalSignatureResolver(traceBasedExternalSignatureResolver);
|
||||||
javaConstructorResolver.setTrace(bindingTrace);
|
javaConstructorResolver.setTrace(bindingTrace);
|
||||||
javaConstructorResolver.setTypeTransformer(javaTypeTransformer);
|
javaConstructorResolver.setTypeTransformer(javaTypeTransformer);
|
||||||
javaConstructorResolver.setValueParameterResolver(javaValueParameterResolver);
|
javaConstructorResolver.setValueParameterResolver(javaValueParameterResolver);
|
||||||
|
|
||||||
javaPropertyResolver.setAnnotationResolver(javaAnnotationResolver);
|
javaPropertyResolver.setAnnotationResolver(javaAnnotationResolver);
|
||||||
javaPropertyResolver.setExternalSignatureResolver(externalSignatureResolver);
|
javaPropertyResolver.setExternalSignatureResolver(traceBasedExternalSignatureResolver);
|
||||||
javaPropertyResolver.setTrace(bindingTrace);
|
javaPropertyResolver.setTrace(bindingTrace);
|
||||||
javaPropertyResolver.setTypeTransformer(javaTypeTransformer);
|
javaPropertyResolver.setTypeTransformer(javaTypeTransformer);
|
||||||
|
|
||||||
|
|||||||
+8
-8
@@ -31,6 +31,7 @@ import org.jetbrains.jet.lang.resolve.java.JavaBridgeConfiguration;
|
|||||||
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.JavaClassFinderImpl;
|
import org.jetbrains.jet.lang.resolve.java.JavaClassFinderImpl;
|
||||||
|
import org.jetbrains.jet.lang.resolve.java.resolver.TraceBasedExternalSignatureResolver;
|
||||||
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;
|
||||||
@@ -53,7 +54,6 @@ 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.JavaFunctionResolver;
|
import org.jetbrains.jet.lang.resolve.java.resolver.JavaFunctionResolver;
|
||||||
import org.jetbrains.jet.lang.resolve.java.resolver.ExternalSignatureResolver;
|
|
||||||
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;
|
||||||
@@ -84,6 +84,7 @@ public class InjectorForTopDownAnalyzerForJvm implements InjectorForTopDownAnaly
|
|||||||
private final JavaDescriptorResolver javaDescriptorResolver;
|
private final JavaDescriptorResolver javaDescriptorResolver;
|
||||||
private final PsiClassFinderImpl psiClassFinder;
|
private final PsiClassFinderImpl psiClassFinder;
|
||||||
private final JavaClassFinderImpl javaClassFinder;
|
private final JavaClassFinderImpl javaClassFinder;
|
||||||
|
private final TraceBasedExternalSignatureResolver traceBasedExternalSignatureResolver;
|
||||||
private final NamespaceFactoryImpl namespaceFactory;
|
private final NamespaceFactoryImpl namespaceFactory;
|
||||||
private final VirtualFileFinder virtualFileFinder;
|
private final VirtualFileFinder virtualFileFinder;
|
||||||
private final DeclarationResolver declarationResolver;
|
private final DeclarationResolver declarationResolver;
|
||||||
@@ -106,7 +107,6 @@ public class InjectorForTopDownAnalyzerForJvm implements InjectorForTopDownAnaly
|
|||||||
private final JavaAnnotationResolver javaAnnotationResolver;
|
private final JavaAnnotationResolver javaAnnotationResolver;
|
||||||
private final JavaAnnotationArgumentResolver javaAnnotationArgumentResolver;
|
private final JavaAnnotationArgumentResolver javaAnnotationArgumentResolver;
|
||||||
private final JavaFunctionResolver javaFunctionResolver;
|
private final JavaFunctionResolver javaFunctionResolver;
|
||||||
private final ExternalSignatureResolver externalSignatureResolver;
|
|
||||||
private final JavaTypeParameterResolver javaTypeParameterResolver;
|
private final JavaTypeParameterResolver javaTypeParameterResolver;
|
||||||
private final JavaTypeTransformer javaTypeTransformer;
|
private final JavaTypeTransformer javaTypeTransformer;
|
||||||
private final JavaValueParameterResolver javaValueParameterResolver;
|
private final JavaValueParameterResolver javaValueParameterResolver;
|
||||||
@@ -138,6 +138,7 @@ public class InjectorForTopDownAnalyzerForJvm implements InjectorForTopDownAnaly
|
|||||||
this.javaDescriptorResolver = new JavaDescriptorResolver();
|
this.javaDescriptorResolver = new JavaDescriptorResolver();
|
||||||
this.psiClassFinder = new PsiClassFinderImpl();
|
this.psiClassFinder = new PsiClassFinderImpl();
|
||||||
this.javaClassFinder = new JavaClassFinderImpl();
|
this.javaClassFinder = new JavaClassFinderImpl();
|
||||||
|
this.traceBasedExternalSignatureResolver = new TraceBasedExternalSignatureResolver();
|
||||||
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();
|
||||||
@@ -160,7 +161,6 @@ public class InjectorForTopDownAnalyzerForJvm implements InjectorForTopDownAnaly
|
|||||||
this.javaAnnotationResolver = new JavaAnnotationResolver();
|
this.javaAnnotationResolver = new JavaAnnotationResolver();
|
||||||
this.javaAnnotationArgumentResolver = new JavaAnnotationArgumentResolver();
|
this.javaAnnotationArgumentResolver = new JavaAnnotationArgumentResolver();
|
||||||
this.javaFunctionResolver = new JavaFunctionResolver();
|
this.javaFunctionResolver = new JavaFunctionResolver();
|
||||||
this.externalSignatureResolver = new ExternalSignatureResolver();
|
|
||||||
this.javaTypeParameterResolver = new JavaTypeParameterResolver();
|
this.javaTypeParameterResolver = new JavaTypeParameterResolver();
|
||||||
this.javaTypeTransformer = new JavaTypeTransformer();
|
this.javaTypeTransformer = new JavaTypeTransformer();
|
||||||
this.javaValueParameterResolver = new JavaValueParameterResolver();
|
this.javaValueParameterResolver = new JavaValueParameterResolver();
|
||||||
@@ -216,6 +216,8 @@ public class InjectorForTopDownAnalyzerForJvm implements InjectorForTopDownAnaly
|
|||||||
|
|
||||||
javaClassFinder.setPsiClassFinder(psiClassFinder);
|
javaClassFinder.setPsiClassFinder(psiClassFinder);
|
||||||
|
|
||||||
|
traceBasedExternalSignatureResolver.setTrace(bindingTrace);
|
||||||
|
|
||||||
this.namespaceFactory.setModuleDescriptor(moduleDescriptor);
|
this.namespaceFactory.setModuleDescriptor(moduleDescriptor);
|
||||||
this.namespaceFactory.setTrace(bindingTrace);
|
this.namespaceFactory.setTrace(bindingTrace);
|
||||||
|
|
||||||
@@ -303,14 +305,12 @@ public class InjectorForTopDownAnalyzerForJvm implements InjectorForTopDownAnaly
|
|||||||
javaAnnotationArgumentResolver.setClassResolver(javaClassResolver);
|
javaAnnotationArgumentResolver.setClassResolver(javaClassResolver);
|
||||||
|
|
||||||
javaFunctionResolver.setAnnotationResolver(javaAnnotationResolver);
|
javaFunctionResolver.setAnnotationResolver(javaAnnotationResolver);
|
||||||
javaFunctionResolver.setExternalSignatureResolver(externalSignatureResolver);
|
javaFunctionResolver.setExternalSignatureResolver(traceBasedExternalSignatureResolver);
|
||||||
javaFunctionResolver.setTrace(bindingTrace);
|
javaFunctionResolver.setTrace(bindingTrace);
|
||||||
javaFunctionResolver.setTypeParameterResolver(javaTypeParameterResolver);
|
javaFunctionResolver.setTypeParameterResolver(javaTypeParameterResolver);
|
||||||
javaFunctionResolver.setTypeTransformer(javaTypeTransformer);
|
javaFunctionResolver.setTypeTransformer(javaTypeTransformer);
|
||||||
javaFunctionResolver.setValueParameterResolver(javaValueParameterResolver);
|
javaFunctionResolver.setValueParameterResolver(javaValueParameterResolver);
|
||||||
|
|
||||||
externalSignatureResolver.setTrace(bindingTrace);
|
|
||||||
|
|
||||||
javaTypeParameterResolver.setTypeTransformer(javaTypeTransformer);
|
javaTypeParameterResolver.setTypeTransformer(javaTypeTransformer);
|
||||||
|
|
||||||
javaTypeTransformer.setClassResolver(javaClassResolver);
|
javaTypeTransformer.setClassResolver(javaClassResolver);
|
||||||
@@ -335,13 +335,13 @@ public class InjectorForTopDownAnalyzerForJvm implements InjectorForTopDownAnaly
|
|||||||
javaSupertypeResolver.setTrace(bindingTrace);
|
javaSupertypeResolver.setTrace(bindingTrace);
|
||||||
javaSupertypeResolver.setTypeTransformer(javaTypeTransformer);
|
javaSupertypeResolver.setTypeTransformer(javaTypeTransformer);
|
||||||
|
|
||||||
javaConstructorResolver.setExternalSignatureResolver(externalSignatureResolver);
|
javaConstructorResolver.setExternalSignatureResolver(traceBasedExternalSignatureResolver);
|
||||||
javaConstructorResolver.setTrace(bindingTrace);
|
javaConstructorResolver.setTrace(bindingTrace);
|
||||||
javaConstructorResolver.setTypeTransformer(javaTypeTransformer);
|
javaConstructorResolver.setTypeTransformer(javaTypeTransformer);
|
||||||
javaConstructorResolver.setValueParameterResolver(javaValueParameterResolver);
|
javaConstructorResolver.setValueParameterResolver(javaValueParameterResolver);
|
||||||
|
|
||||||
javaPropertyResolver.setAnnotationResolver(javaAnnotationResolver);
|
javaPropertyResolver.setAnnotationResolver(javaAnnotationResolver);
|
||||||
javaPropertyResolver.setExternalSignatureResolver(externalSignatureResolver);
|
javaPropertyResolver.setExternalSignatureResolver(traceBasedExternalSignatureResolver);
|
||||||
javaPropertyResolver.setTrace(bindingTrace);
|
javaPropertyResolver.setTrace(bindingTrace);
|
||||||
javaPropertyResolver.setTypeTransformer(javaTypeTransformer);
|
javaPropertyResolver.setTypeTransformer(javaTypeTransformer);
|
||||||
|
|
||||||
|
|||||||
+12
-55
@@ -19,28 +19,15 @@ 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.annotations.Nullable;
|
||||||
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.java.JavaBindingContext;
|
|
||||||
import org.jetbrains.jet.lang.resolve.java.kotlinSignature.AlternativeFieldSignatureData;
|
|
||||||
import org.jetbrains.jet.lang.resolve.java.kotlinSignature.AlternativeMethodSignatureData;
|
|
||||||
import org.jetbrains.jet.lang.resolve.java.kotlinSignature.SignaturesPropagationData;
|
|
||||||
import org.jetbrains.jet.lang.resolve.java.structure.JavaField;
|
import org.jetbrains.jet.lang.resolve.java.structure.JavaField;
|
||||||
import org.jetbrains.jet.lang.resolve.java.structure.JavaMethod;
|
import org.jetbrains.jet.lang.resolve.java.structure.JavaMethod;
|
||||||
import org.jetbrains.jet.lang.types.JetType;
|
import org.jetbrains.jet.lang.types.JetType;
|
||||||
|
|
||||||
import javax.inject.Inject;
|
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
public class ExternalSignatureResolver {
|
public interface ExternalSignatureResolver {
|
||||||
private BindingTrace trace;
|
abstract class MemberSignature {
|
||||||
|
|
||||||
@Inject
|
|
||||||
public void setTrace(BindingTrace trace) {
|
|
||||||
this.trace = trace;
|
|
||||||
}
|
|
||||||
|
|
||||||
private abstract static class MemberSignature {
|
|
||||||
private final List<String> signatureErrors;
|
private final List<String> signatureErrors;
|
||||||
|
|
||||||
protected MemberSignature(@NotNull List<String> signatureErrors) {
|
protected MemberSignature(@NotNull List<String> signatureErrors) {
|
||||||
@@ -53,7 +40,7 @@ public class ExternalSignatureResolver {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static class AlternativeMethodSignature extends MemberSignature {
|
class AlternativeMethodSignature extends MemberSignature {
|
||||||
private final JetType returnType;
|
private final JetType returnType;
|
||||||
private final JetType receiverType;
|
private final JetType receiverType;
|
||||||
private final List<ValueParameterDescriptor> valueParameters;
|
private final List<ValueParameterDescriptor> valueParameters;
|
||||||
@@ -94,7 +81,7 @@ public class ExternalSignatureResolver {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static class AlternativeFieldSignature extends MemberSignature {
|
class AlternativeFieldSignature extends MemberSignature {
|
||||||
private final JetType returnType;
|
private final JetType returnType;
|
||||||
|
|
||||||
public AlternativeFieldSignature(@NotNull JetType returnType, @Nullable String signatureError) {
|
public AlternativeFieldSignature(@NotNull JetType returnType, @Nullable String signatureError) {
|
||||||
@@ -108,7 +95,7 @@ public class ExternalSignatureResolver {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static class PropagatedMethodSignature extends AlternativeMethodSignature {
|
class PropagatedMethodSignature extends AlternativeMethodSignature {
|
||||||
private final List<FunctionDescriptor> superMethods;
|
private final List<FunctionDescriptor> superMethods;
|
||||||
|
|
||||||
public PropagatedMethodSignature(
|
public PropagatedMethodSignature(
|
||||||
@@ -130,61 +117,31 @@ public class ExternalSignatureResolver {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@NotNull
|
@NotNull
|
||||||
public PropagatedMethodSignature resolvePropagatedSignature(
|
PropagatedMethodSignature resolvePropagatedSignature(
|
||||||
@NotNull JavaMethod method,
|
@NotNull JavaMethod method,
|
||||||
@NotNull ClassDescriptor owner,
|
@NotNull ClassDescriptor owner,
|
||||||
@NotNull JetType returnType,
|
@NotNull JetType returnType,
|
||||||
@Nullable JetType receiverType,
|
@Nullable JetType receiverType,
|
||||||
@NotNull List<ValueParameterDescriptor> valueParameters,
|
@NotNull List<ValueParameterDescriptor> valueParameters,
|
||||||
@NotNull List<TypeParameterDescriptor> typeParameters
|
@NotNull List<TypeParameterDescriptor> typeParameters
|
||||||
) {
|
);
|
||||||
SignaturesPropagationData data =
|
|
||||||
new SignaturesPropagationData(owner, returnType, receiverType, valueParameters, typeParameters, method, trace);
|
|
||||||
return new PropagatedMethodSignature(data.getModifiedReturnType(), data.getModifiedReceiverType(),
|
|
||||||
data.getModifiedValueParameters(), data.getModifiedTypeParameters(), data.getSignatureErrors(),
|
|
||||||
data.getSuperFunctions());
|
|
||||||
}
|
|
||||||
|
|
||||||
@SuppressWarnings("MethodMayBeStatic")
|
|
||||||
@NotNull
|
@NotNull
|
||||||
public AlternativeMethodSignature resolveAlternativeMethodSignature(
|
AlternativeMethodSignature resolveAlternativeMethodSignature(
|
||||||
@NotNull JavaMethod method,
|
@NotNull JavaMethod method,
|
||||||
boolean hasSuperMethods,
|
boolean hasSuperMethods,
|
||||||
@Nullable JetType returnType,
|
@Nullable JetType returnType,
|
||||||
@Nullable JetType receiverType,
|
@Nullable JetType receiverType,
|
||||||
@NotNull List<ValueParameterDescriptor> valueParameters,
|
@NotNull List<ValueParameterDescriptor> valueParameters,
|
||||||
@NotNull List<TypeParameterDescriptor> typeParameters
|
@NotNull List<TypeParameterDescriptor> typeParameters
|
||||||
) {
|
);
|
||||||
AlternativeMethodSignatureData data =
|
|
||||||
new AlternativeMethodSignatureData(method, receiverType, valueParameters, returnType, typeParameters, hasSuperMethods);
|
|
||||||
|
|
||||||
if (data.isAnnotated() && !data.hasErrors()) {
|
|
||||||
return new AlternativeMethodSignature(data.getReturnType(), receiverType, data.getValueParameters(), data.getTypeParameters(),
|
|
||||||
Collections.<String>emptyList());
|
|
||||||
}
|
|
||||||
|
|
||||||
List<String> error = data.hasErrors() ? Collections.singletonList(data.getError()) : Collections.<String>emptyList();
|
|
||||||
return new AlternativeMethodSignature(returnType, receiverType, valueParameters, typeParameters, error);
|
|
||||||
}
|
|
||||||
|
|
||||||
@SuppressWarnings("MethodMayBeStatic")
|
|
||||||
@NotNull
|
@NotNull
|
||||||
public AlternativeFieldSignature resolveAlternativeFieldSignature(
|
AlternativeFieldSignature resolveAlternativeFieldSignature(
|
||||||
@NotNull JavaField field,
|
@NotNull JavaField field,
|
||||||
@NotNull JetType returnType,
|
@NotNull JetType returnType,
|
||||||
boolean isVar
|
boolean isVar
|
||||||
) {
|
);
|
||||||
AlternativeFieldSignatureData data = new AlternativeFieldSignatureData(field, returnType, isVar);
|
|
||||||
|
|
||||||
if (data.isAnnotated() && !data.hasErrors()) {
|
void reportSignatureErrors(@NotNull CallableMemberDescriptor descriptor, @NotNull List<String> signatureErrors);
|
||||||
return new AlternativeFieldSignature(data.getReturnType(), null);
|
|
||||||
}
|
|
||||||
|
|
||||||
String error = data.hasErrors() ? data.getError() : null;
|
|
||||||
return new AlternativeFieldSignature(returnType, error);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void reportSignatureErrors(@NotNull CallableMemberDescriptor descriptor, @NotNull List<String> signatureErrors) {
|
|
||||||
trace.record(JavaBindingContext.LOAD_FROM_JAVA_SIGNATURE_ERRORS, descriptor, signatureErrors);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
+103
@@ -0,0 +1,103 @@
|
|||||||
|
/*
|
||||||
|
* 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 org.jetbrains.annotations.NotNull;
|
||||||
|
import org.jetbrains.annotations.Nullable;
|
||||||
|
import org.jetbrains.jet.lang.descriptors.*;
|
||||||
|
import org.jetbrains.jet.lang.resolve.BindingTrace;
|
||||||
|
import org.jetbrains.jet.lang.resolve.java.JavaBindingContext;
|
||||||
|
import org.jetbrains.jet.lang.resolve.java.kotlinSignature.AlternativeFieldSignatureData;
|
||||||
|
import org.jetbrains.jet.lang.resolve.java.kotlinSignature.AlternativeMethodSignatureData;
|
||||||
|
import org.jetbrains.jet.lang.resolve.java.kotlinSignature.SignaturesPropagationData;
|
||||||
|
import org.jetbrains.jet.lang.resolve.java.structure.JavaField;
|
||||||
|
import org.jetbrains.jet.lang.resolve.java.structure.JavaMethod;
|
||||||
|
import org.jetbrains.jet.lang.types.JetType;
|
||||||
|
|
||||||
|
import javax.inject.Inject;
|
||||||
|
import java.util.Collections;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
public class TraceBasedExternalSignatureResolver implements ExternalSignatureResolver {
|
||||||
|
private BindingTrace trace;
|
||||||
|
|
||||||
|
@Inject
|
||||||
|
public void setTrace(BindingTrace trace) {
|
||||||
|
this.trace = trace;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
@NotNull
|
||||||
|
public PropagatedMethodSignature resolvePropagatedSignature(
|
||||||
|
@NotNull JavaMethod method,
|
||||||
|
@NotNull ClassDescriptor owner,
|
||||||
|
@NotNull JetType returnType,
|
||||||
|
@Nullable JetType receiverType,
|
||||||
|
@NotNull List<ValueParameterDescriptor> valueParameters,
|
||||||
|
@NotNull List<TypeParameterDescriptor> typeParameters
|
||||||
|
) {
|
||||||
|
SignaturesPropagationData data =
|
||||||
|
new SignaturesPropagationData(owner, returnType, receiverType, valueParameters, typeParameters, method, trace);
|
||||||
|
return new PropagatedMethodSignature(data.getModifiedReturnType(), data.getModifiedReceiverType(),
|
||||||
|
data.getModifiedValueParameters(), data.getModifiedTypeParameters(), data.getSignatureErrors(),
|
||||||
|
data.getSuperFunctions());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
@NotNull
|
||||||
|
public AlternativeMethodSignature resolveAlternativeMethodSignature(
|
||||||
|
@NotNull JavaMethod method,
|
||||||
|
boolean hasSuperMethods,
|
||||||
|
@Nullable JetType returnType,
|
||||||
|
@Nullable JetType receiverType,
|
||||||
|
@NotNull List<ValueParameterDescriptor> valueParameters,
|
||||||
|
@NotNull List<TypeParameterDescriptor> typeParameters
|
||||||
|
) {
|
||||||
|
AlternativeMethodSignatureData data =
|
||||||
|
new AlternativeMethodSignatureData(method, receiverType, valueParameters, returnType, typeParameters, hasSuperMethods);
|
||||||
|
|
||||||
|
if (data.isAnnotated() && !data.hasErrors()) {
|
||||||
|
return new AlternativeMethodSignature(data.getReturnType(), receiverType, data.getValueParameters(), data.getTypeParameters(),
|
||||||
|
Collections.<String>emptyList());
|
||||||
|
}
|
||||||
|
|
||||||
|
List<String> error = data.hasErrors() ? Collections.singletonList(data.getError()) : Collections.<String>emptyList();
|
||||||
|
return new AlternativeMethodSignature(returnType, receiverType, valueParameters, typeParameters, error);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
@NotNull
|
||||||
|
public AlternativeFieldSignature resolveAlternativeFieldSignature(
|
||||||
|
@NotNull JavaField field,
|
||||||
|
@NotNull JetType returnType,
|
||||||
|
boolean isVar
|
||||||
|
) {
|
||||||
|
AlternativeFieldSignatureData data = new AlternativeFieldSignatureData(field, returnType, isVar);
|
||||||
|
|
||||||
|
if (data.isAnnotated() && !data.hasErrors()) {
|
||||||
|
return new AlternativeFieldSignature(data.getReturnType(), null);
|
||||||
|
}
|
||||||
|
|
||||||
|
String error = data.hasErrors() ? data.getError() : null;
|
||||||
|
return new AlternativeFieldSignature(returnType, error);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void reportSignatureErrors(@NotNull CallableMemberDescriptor descriptor, @NotNull List<String> signatureErrors) {
|
||||||
|
trace.record(JavaBindingContext.LOAD_FROM_JAVA_SIGNATURE_ERRORS, descriptor, signatureErrors);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -37,6 +37,7 @@ import org.jetbrains.jet.lang.resolve.java.JavaBridgeConfiguration;
|
|||||||
import org.jetbrains.jet.lang.resolve.java.JavaClassFinderImpl;
|
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.TraceBasedExternalSignatureResolver;
|
||||||
import org.jetbrains.jet.lang.resolve.java.vfilefinder.VirtualFileFinder;
|
import org.jetbrains.jet.lang.resolve.java.vfilefinder.VirtualFileFinder;
|
||||||
import org.jetbrains.jet.lang.resolve.lazy.ResolveSession;
|
import org.jetbrains.jet.lang.resolve.lazy.ResolveSession;
|
||||||
import org.jetbrains.jet.lang.resolve.lazy.ScopeProvider;
|
import org.jetbrains.jet.lang.resolve.lazy.ScopeProvider;
|
||||||
@@ -105,6 +106,7 @@ public class GenerateInjectors {
|
|||||||
generator.addField(JavaDescriptorResolver.class);
|
generator.addField(JavaDescriptorResolver.class);
|
||||||
generator.addField(PsiClassFinderImpl.class);
|
generator.addField(PsiClassFinderImpl.class);
|
||||||
generator.addField(JavaClassFinderImpl.class);
|
generator.addField(JavaClassFinderImpl.class);
|
||||||
|
generator.addField(TraceBasedExternalSignatureResolver.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(
|
||||||
@@ -122,6 +124,7 @@ public class GenerateInjectors {
|
|||||||
|
|
||||||
// Fields
|
// Fields
|
||||||
generator.addField(JavaClassFinderImpl.class);
|
generator.addField(JavaClassFinderImpl.class);
|
||||||
|
generator.addField(TraceBasedExternalSignatureResolver.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