Remove PSI in TraceBasedExternalSignatureResolver, AlternativeFieldSignatureData, AlternativeMethodSignatureData
This commit is contained in:
committed by
Alexander Udalov
parent
77b2b29641
commit
d7337fbe94
@@ -95,6 +95,7 @@ public class InjectorForJavaDescriptorResolver {
|
|||||||
this.javaClassFinder.setProject(project);
|
this.javaClassFinder.setProject(project);
|
||||||
|
|
||||||
traceBasedExternalSignatureResolver.setExternalAnnotationResolver(psiBasedExternalAnnotationResolver);
|
traceBasedExternalSignatureResolver.setExternalAnnotationResolver(psiBasedExternalAnnotationResolver);
|
||||||
|
traceBasedExternalSignatureResolver.setProject(project);
|
||||||
traceBasedExternalSignatureResolver.setTrace(bindingTrace);
|
traceBasedExternalSignatureResolver.setTrace(bindingTrace);
|
||||||
|
|
||||||
traceBasedJavaResolverCache.setTrace(bindingTrace);
|
traceBasedJavaResolverCache.setTrace(bindingTrace);
|
||||||
|
|||||||
@@ -172,6 +172,7 @@ public class InjectorForLazyResolveWithJava {
|
|||||||
javaClassFinder.setProject(project);
|
javaClassFinder.setProject(project);
|
||||||
|
|
||||||
traceBasedExternalSignatureResolver.setExternalAnnotationResolver(psiBasedExternalAnnotationResolver);
|
traceBasedExternalSignatureResolver.setExternalAnnotationResolver(psiBasedExternalAnnotationResolver);
|
||||||
|
traceBasedExternalSignatureResolver.setProject(project);
|
||||||
traceBasedExternalSignatureResolver.setTrace(bindingTrace);
|
traceBasedExternalSignatureResolver.setTrace(bindingTrace);
|
||||||
|
|
||||||
lazyResolveBasedCache.setSession(resolveSession);
|
lazyResolveBasedCache.setSession(resolveSession);
|
||||||
|
|||||||
@@ -201,6 +201,7 @@ public class InjectorForTopDownAnalyzerForJvm implements InjectorForTopDownAnaly
|
|||||||
javaClassFinder.setProject(project);
|
javaClassFinder.setProject(project);
|
||||||
|
|
||||||
traceBasedExternalSignatureResolver.setExternalAnnotationResolver(psiBasedExternalAnnotationResolver);
|
traceBasedExternalSignatureResolver.setExternalAnnotationResolver(psiBasedExternalAnnotationResolver);
|
||||||
|
traceBasedExternalSignatureResolver.setProject(project);
|
||||||
traceBasedExternalSignatureResolver.setTrace(bindingTrace);
|
traceBasedExternalSignatureResolver.setTrace(bindingTrace);
|
||||||
|
|
||||||
traceBasedJavaResolverCache.setTrace(bindingTrace);
|
traceBasedJavaResolverCache.setTrace(bindingTrace);
|
||||||
|
|||||||
+4
-4
@@ -24,7 +24,7 @@ import org.jetbrains.jet.lang.descriptors.impl.TypeParameterDescriptorImpl;
|
|||||||
import org.jetbrains.jet.lang.psi.JetProperty;
|
import org.jetbrains.jet.lang.psi.JetProperty;
|
||||||
import org.jetbrains.jet.lang.psi.JetPsiFactory;
|
import org.jetbrains.jet.lang.psi.JetPsiFactory;
|
||||||
import org.jetbrains.jet.lang.resolve.java.resolver.ExternalAnnotationResolver;
|
import org.jetbrains.jet.lang.resolve.java.resolver.ExternalAnnotationResolver;
|
||||||
import org.jetbrains.jet.lang.resolve.java.structure.impl.JavaFieldImpl;
|
import org.jetbrains.jet.lang.resolve.java.structure.JavaField;
|
||||||
import org.jetbrains.jet.lang.types.JetType;
|
import org.jetbrains.jet.lang.types.JetType;
|
||||||
|
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
@@ -34,8 +34,9 @@ public class AlternativeFieldSignatureData extends ElementAlternativeSignatureDa
|
|||||||
|
|
||||||
public AlternativeFieldSignatureData(
|
public AlternativeFieldSignatureData(
|
||||||
@NotNull ExternalAnnotationResolver externalAnnotationResolver,
|
@NotNull ExternalAnnotationResolver externalAnnotationResolver,
|
||||||
@NotNull JavaFieldImpl field,
|
@NotNull JavaField field,
|
||||||
@NotNull JetType originalReturnType,
|
@NotNull JetType originalReturnType,
|
||||||
|
@NotNull Project project,
|
||||||
boolean isVar
|
boolean isVar
|
||||||
) {
|
) {
|
||||||
String signature = SignaturesUtil.getKotlinSignature(externalAnnotationResolver, field);
|
String signature = SignaturesUtil.getKotlinSignature(externalAnnotationResolver, field);
|
||||||
@@ -46,7 +47,6 @@ public class AlternativeFieldSignatureData extends ElementAlternativeSignatureDa
|
|||||||
}
|
}
|
||||||
|
|
||||||
setAnnotated(true);
|
setAnnotated(true);
|
||||||
Project project = field.getPsi().getProject();
|
|
||||||
JetProperty altPropertyDeclaration = JetPsiFactory.createProperty(project, signature);
|
JetProperty altPropertyDeclaration = JetPsiFactory.createProperty(project, signature);
|
||||||
|
|
||||||
try {
|
try {
|
||||||
@@ -66,7 +66,7 @@ public class AlternativeFieldSignatureData extends ElementAlternativeSignatureDa
|
|||||||
return altReturnType;
|
return altReturnType;
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void checkFieldAnnotation(@NotNull JetProperty altProperty, @NotNull JavaFieldImpl field, boolean isVar) {
|
private static void checkFieldAnnotation(@NotNull JetProperty altProperty, @NotNull JavaField field, boolean isVar) {
|
||||||
if (!ComparatorUtil.equalsNullable(field.getName().asString(), altProperty.getName())) {
|
if (!ComparatorUtil.equalsNullable(field.getName().asString(), altProperty.getName())) {
|
||||||
throw new AlternativeSignatureMismatchException("Field name mismatch, original: %s, alternative: %s",
|
throw new AlternativeSignatureMismatchException("Field name mismatch, original: %s, alternative: %s",
|
||||||
field.getName().asString(), altProperty.getName());
|
field.getName().asString(), altProperty.getName());
|
||||||
|
|||||||
+2
-3
@@ -29,7 +29,6 @@ import org.jetbrains.jet.lang.psi.*;
|
|||||||
import org.jetbrains.jet.lang.resolve.java.resolver.DescriptorResolverUtils;
|
import org.jetbrains.jet.lang.resolve.java.resolver.DescriptorResolverUtils;
|
||||||
import org.jetbrains.jet.lang.resolve.java.resolver.ExternalAnnotationResolver;
|
import org.jetbrains.jet.lang.resolve.java.resolver.ExternalAnnotationResolver;
|
||||||
import org.jetbrains.jet.lang.resolve.java.structure.JavaMethod;
|
import org.jetbrains.jet.lang.resolve.java.structure.JavaMethod;
|
||||||
import org.jetbrains.jet.lang.resolve.java.structure.impl.JavaMethodImpl;
|
|
||||||
import org.jetbrains.jet.lang.resolve.name.Name;
|
import org.jetbrains.jet.lang.resolve.name.Name;
|
||||||
import org.jetbrains.jet.lang.types.JetType;
|
import org.jetbrains.jet.lang.types.JetType;
|
||||||
import org.jetbrains.jet.lang.types.TypeSubstitutor;
|
import org.jetbrains.jet.lang.types.TypeSubstitutor;
|
||||||
@@ -56,8 +55,9 @@ public class AlternativeMethodSignatureData extends ElementAlternativeSignatureD
|
|||||||
|
|
||||||
public AlternativeMethodSignatureData(
|
public AlternativeMethodSignatureData(
|
||||||
@NotNull ExternalAnnotationResolver externalAnnotationResolver,
|
@NotNull ExternalAnnotationResolver externalAnnotationResolver,
|
||||||
@NotNull JavaMethodImpl method,
|
@NotNull JavaMethod method,
|
||||||
@Nullable JetType receiverType,
|
@Nullable JetType receiverType,
|
||||||
|
@NotNull Project project,
|
||||||
@NotNull List<ValueParameterDescriptor> valueParameters,
|
@NotNull List<ValueParameterDescriptor> valueParameters,
|
||||||
@Nullable JetType originalReturnType,
|
@Nullable JetType originalReturnType,
|
||||||
@NotNull List<TypeParameterDescriptor> methodTypeParameters,
|
@NotNull List<TypeParameterDescriptor> methodTypeParameters,
|
||||||
@@ -76,7 +76,6 @@ public class AlternativeMethodSignatureData extends ElementAlternativeSignatureD
|
|||||||
}
|
}
|
||||||
|
|
||||||
setAnnotated(true);
|
setAnnotated(true);
|
||||||
Project project = method.getPsi().getProject();
|
|
||||||
altFunDeclaration = JetPsiFactory.createFunction(project, signature);
|
altFunDeclaration = JetPsiFactory.createFunction(project, signature);
|
||||||
|
|
||||||
originalToAltTypeParameters = DescriptorResolverUtils.recreateTypeParametersAndReturnMapping(methodTypeParameters, null);
|
originalToAltTypeParameters = DescriptorResolverUtils.recreateTypeParametersAndReturnMapping(methodTypeParameters, null);
|
||||||
|
|||||||
+3
-3
@@ -75,7 +75,7 @@ public class SignaturesPropagationData {
|
|||||||
@Nullable JetType receiverType,
|
@Nullable JetType receiverType,
|
||||||
@NotNull List<ValueParameterDescriptor> autoValueParameters, // descriptors built by parameters resolver
|
@NotNull List<ValueParameterDescriptor> autoValueParameters, // descriptors built by parameters resolver
|
||||||
@NotNull List<TypeParameterDescriptor> autoTypeParameters, // descriptors built by signature resolver
|
@NotNull List<TypeParameterDescriptor> autoTypeParameters, // descriptors built by signature resolver
|
||||||
@NotNull JavaMethodImpl method,
|
@NotNull JavaMethod method,
|
||||||
@NotNull BindingTrace trace
|
@NotNull BindingTrace trace
|
||||||
) {
|
) {
|
||||||
this.containingClass = containingClass;
|
this.containingClass = containingClass;
|
||||||
@@ -254,7 +254,7 @@ public class SignaturesPropagationData {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private static List<FunctionDescriptor> getSuperFunctionsForMethod(
|
private static List<FunctionDescriptor> getSuperFunctionsForMethod(
|
||||||
@NotNull JavaMethodImpl method,
|
@NotNull JavaMethod method,
|
||||||
@NotNull BindingTrace trace,
|
@NotNull BindingTrace trace,
|
||||||
@NotNull ClassDescriptor containingClass
|
@NotNull ClassDescriptor containingClass
|
||||||
) {
|
) {
|
||||||
@@ -297,7 +297,7 @@ public class SignaturesPropagationData {
|
|||||||
// sorting for diagnostic stability
|
// sorting for diagnostic stability
|
||||||
Collections.sort(superFunctions, new Comparator<FunctionDescriptor>() {
|
Collections.sort(superFunctions, new Comparator<FunctionDescriptor>() {
|
||||||
@Override
|
@Override
|
||||||
public int compare(FunctionDescriptor fun1, FunctionDescriptor fun2) {
|
public int compare(@NotNull FunctionDescriptor fun1, @NotNull FunctionDescriptor fun2) {
|
||||||
FqNameUnsafe fqName1 = getFqName(fun1.getContainingDeclaration());
|
FqNameUnsafe fqName1 = getFqName(fun1.getContainingDeclaration());
|
||||||
FqNameUnsafe fqName2 = getFqName(fun2.getContainingDeclaration());
|
FqNameUnsafe fqName2 = getFqName(fun2.getContainingDeclaration());
|
||||||
return fqName1.asString().compareTo(fqName2.asString());
|
return fqName1.asString().compareTo(fqName2.asString());
|
||||||
|
|||||||
+10
-5
@@ -16,6 +16,7 @@
|
|||||||
|
|
||||||
package org.jetbrains.jet.lang.resolve.java.resolver;
|
package org.jetbrains.jet.lang.resolve.java.resolver;
|
||||||
|
|
||||||
|
import com.intellij.openapi.project.Project;
|
||||||
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.CallableMemberDescriptor;
|
import org.jetbrains.jet.lang.descriptors.CallableMemberDescriptor;
|
||||||
@@ -29,8 +30,6 @@ import org.jetbrains.jet.lang.resolve.java.kotlinSignature.AlternativeMethodSign
|
|||||||
import org.jetbrains.jet.lang.resolve.java.kotlinSignature.SignaturesPropagationData;
|
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.resolve.java.structure.impl.JavaFieldImpl;
|
|
||||||
import org.jetbrains.jet.lang.resolve.java.structure.impl.JavaMethodImpl;
|
|
||||||
import org.jetbrains.jet.lang.types.JetType;
|
import org.jetbrains.jet.lang.types.JetType;
|
||||||
|
|
||||||
import javax.inject.Inject;
|
import javax.inject.Inject;
|
||||||
@@ -40,6 +39,7 @@ import java.util.List;
|
|||||||
public class TraceBasedExternalSignatureResolver implements ExternalSignatureResolver {
|
public class TraceBasedExternalSignatureResolver implements ExternalSignatureResolver {
|
||||||
private BindingTrace trace;
|
private BindingTrace trace;
|
||||||
private ExternalAnnotationResolver externalAnnotationResolver;
|
private ExternalAnnotationResolver externalAnnotationResolver;
|
||||||
|
private Project project;
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
public void setTrace(BindingTrace trace) {
|
public void setTrace(BindingTrace trace) {
|
||||||
@@ -51,6 +51,11 @@ public class TraceBasedExternalSignatureResolver implements ExternalSignatureRes
|
|||||||
this.externalAnnotationResolver = externalAnnotationResolver;
|
this.externalAnnotationResolver = externalAnnotationResolver;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Inject
|
||||||
|
public void setProject(Project project) {
|
||||||
|
this.project = project;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@NotNull
|
@NotNull
|
||||||
public PropagatedMethodSignature resolvePropagatedSignature(
|
public PropagatedMethodSignature resolvePropagatedSignature(
|
||||||
@@ -62,7 +67,7 @@ public class TraceBasedExternalSignatureResolver implements ExternalSignatureRes
|
|||||||
@NotNull List<TypeParameterDescriptor> typeParameters
|
@NotNull List<TypeParameterDescriptor> typeParameters
|
||||||
) {
|
) {
|
||||||
SignaturesPropagationData data =
|
SignaturesPropagationData data =
|
||||||
new SignaturesPropagationData(owner, returnType, receiverType, valueParameters, typeParameters, (JavaMethodImpl) method,
|
new SignaturesPropagationData(owner, returnType, receiverType, valueParameters, typeParameters, method,
|
||||||
trace);
|
trace);
|
||||||
return new PropagatedMethodSignature(data.getModifiedReturnType(), data.getModifiedReceiverType(),
|
return new PropagatedMethodSignature(data.getModifiedReturnType(), data.getModifiedReceiverType(),
|
||||||
data.getModifiedValueParameters(), data.getModifiedTypeParameters(), data.getSignatureErrors(),
|
data.getModifiedValueParameters(), data.getModifiedTypeParameters(), data.getSignatureErrors(),
|
||||||
@@ -81,7 +86,7 @@ public class TraceBasedExternalSignatureResolver implements ExternalSignatureRes
|
|||||||
boolean hasStableParameterNames
|
boolean hasStableParameterNames
|
||||||
) {
|
) {
|
||||||
AlternativeMethodSignatureData data =
|
AlternativeMethodSignatureData data =
|
||||||
new AlternativeMethodSignatureData(externalAnnotationResolver, (JavaMethodImpl) method, receiverType, valueParameters, returnType,
|
new AlternativeMethodSignatureData(externalAnnotationResolver, method, receiverType, project, valueParameters, returnType,
|
||||||
typeParameters, hasSuperMethods);
|
typeParameters, hasSuperMethods);
|
||||||
|
|
||||||
if (data.isAnnotated() && !data.hasErrors()) {
|
if (data.isAnnotated() && !data.hasErrors()) {
|
||||||
@@ -101,7 +106,7 @@ public class TraceBasedExternalSignatureResolver implements ExternalSignatureRes
|
|||||||
boolean isVar
|
boolean isVar
|
||||||
) {
|
) {
|
||||||
AlternativeFieldSignatureData data =
|
AlternativeFieldSignatureData data =
|
||||||
new AlternativeFieldSignatureData(externalAnnotationResolver, (JavaFieldImpl) field, returnType, isVar);
|
new AlternativeFieldSignatureData(externalAnnotationResolver, field, returnType, project, isVar);
|
||||||
|
|
||||||
if (data.isAnnotated() && !data.hasErrors()) {
|
if (data.isAnnotated() && !data.hasErrors()) {
|
||||||
return new AlternativeFieldSignature(data.getReturnType(), null);
|
return new AlternativeFieldSignature(data.getReturnType(), null);
|
||||||
|
|||||||
Reference in New Issue
Block a user