Remove PSI in TraceBasedExternalSignatureResolver, AlternativeFieldSignatureData, AlternativeMethodSignatureData

This commit is contained in:
zarechenskiy
2014-03-13 18:29:06 +04:00
committed by Alexander Udalov
parent 77b2b29641
commit d7337fbe94
7 changed files with 22 additions and 15 deletions
@@ -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);
@@ -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());
@@ -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);
@@ -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());
@@ -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);