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