Changed API of SignaturesPropagationData.
This commit is contained in:
+44
-6
@@ -40,7 +40,48 @@ import org.jetbrains.jet.lang.types.lang.KotlinBuiltIns;
|
||||
import java.util.*;
|
||||
|
||||
public class SignaturesPropagationData {
|
||||
public static JetType modifyReturnTypeAccordingToSuperMethods(
|
||||
private final JavaDescriptorResolver.ValueParameterDescriptors modifiedValueParameters;
|
||||
private final JetType modifiedReturnType;
|
||||
|
||||
private final List<String> signatureErrors = Lists.newArrayList();
|
||||
private final List<FunctionDescriptor> superFunctions;
|
||||
|
||||
public SignaturesPropagationData(
|
||||
@NotNull JetType autoReturnType, // type built by JavaTypeTransformer from Java signature and @NotNull annotations
|
||||
@NotNull JavaDescriptorResolver.ValueParameterDescriptors autoValueParameters, // descriptors built by parameters resolver
|
||||
@NotNull PsiMethodWrapper method,
|
||||
@NotNull BindingTrace trace
|
||||
) {
|
||||
Function1<String, Void> reportError = new Function1<String, Void>() {
|
||||
@Override
|
||||
public Void invoke(String error) {
|
||||
signatureErrors.add(error);
|
||||
return null;
|
||||
}
|
||||
};
|
||||
superFunctions = getSuperFunctionsForMethod(method, trace);
|
||||
|
||||
modifiedReturnType = modifyReturnTypeAccordingToSuperMethods(autoReturnType, superFunctions, reportError);
|
||||
modifiedValueParameters = modifyValueParametersAccordingToSuperMethods(autoValueParameters, superFunctions, reportError);
|
||||
}
|
||||
|
||||
public JavaDescriptorResolver.ValueParameterDescriptors getModifiedValueParameters() {
|
||||
return modifiedValueParameters;
|
||||
}
|
||||
|
||||
public JetType getModifiedReturnType() {
|
||||
return modifiedReturnType;
|
||||
}
|
||||
|
||||
public List<String> getSignatureErrors() {
|
||||
return signatureErrors;
|
||||
}
|
||||
|
||||
public List<FunctionDescriptor> getSuperFunctions() {
|
||||
return superFunctions;
|
||||
}
|
||||
|
||||
private static JetType modifyReturnTypeAccordingToSuperMethods(
|
||||
@NotNull JetType autoType, // type built by JavaTypeTransformer
|
||||
@NotNull List<FunctionDescriptor> superFunctions,
|
||||
@NotNull Function1<String, Void> reportError
|
||||
@@ -56,7 +97,7 @@ public class SignaturesPropagationData {
|
||||
return modifyTypeAccordingToSuperMethods(autoType, typesFromSuperMethods, true, reportError);
|
||||
}
|
||||
|
||||
public static JavaDescriptorResolver.ValueParameterDescriptors modifyValueParametersAccordingToSuperMethods(
|
||||
private static JavaDescriptorResolver.ValueParameterDescriptors modifyValueParametersAccordingToSuperMethods(
|
||||
@NotNull JavaDescriptorResolver.ValueParameterDescriptors parameters, // descriptors built by parameters resolver
|
||||
@NotNull List<FunctionDescriptor> superFunctions,
|
||||
@NotNull Function1<String, Void> reportError
|
||||
@@ -96,7 +137,7 @@ public class SignaturesPropagationData {
|
||||
return new JavaDescriptorResolver.ValueParameterDescriptors(parameters.getReceiverType(), resultParameters);
|
||||
}
|
||||
|
||||
public static List<FunctionDescriptor> getSuperFunctionsForMethod(
|
||||
private static List<FunctionDescriptor> getSuperFunctionsForMethod(
|
||||
@NotNull PsiMethodWrapper method,
|
||||
@NotNull BindingTrace trace
|
||||
) {
|
||||
@@ -439,9 +480,6 @@ public class SignaturesPropagationData {
|
||||
return classifier;
|
||||
}
|
||||
|
||||
private SignaturesPropagationData() {
|
||||
}
|
||||
|
||||
private static class VarargCheckResult {
|
||||
public final JetType parameterType;
|
||||
public final boolean isVararg;
|
||||
|
||||
+7
-12
@@ -22,7 +22,6 @@ import com.intellij.psi.PsiClass;
|
||||
import com.intellij.psi.PsiMethod;
|
||||
import com.intellij.psi.PsiType;
|
||||
import com.intellij.psi.util.PsiFormatUtil;
|
||||
import jet.Function1;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
import org.jetbrains.jet.lang.descriptors.*;
|
||||
@@ -142,18 +141,14 @@ public final class JavaFunctionResolver {
|
||||
|
||||
final List<String> signatureErrors = Lists.newArrayList();
|
||||
|
||||
List<FunctionDescriptor> superFunctions = SignaturesPropagationData.getSuperFunctionsForMethod(method, trace);
|
||||
SignaturesPropagationData signaturesPropagationData =
|
||||
new SignaturesPropagationData(returnType, valueParameterDescriptors, method, trace);
|
||||
List<FunctionDescriptor> superFunctions = signaturesPropagationData.getSuperFunctions();
|
||||
|
||||
Function1<String, Void> reportError = new Function1<String, Void>() {
|
||||
@Override
|
||||
public Void invoke(String error) {
|
||||
signatureErrors.add(error);
|
||||
return null;
|
||||
}
|
||||
};
|
||||
returnType = SignaturesPropagationData.modifyReturnTypeAccordingToSuperMethods(returnType, superFunctions, reportError);
|
||||
valueParameterDescriptors = SignaturesPropagationData
|
||||
.modifyValueParametersAccordingToSuperMethods(valueParameterDescriptors, superFunctions, reportError);
|
||||
returnType = signaturesPropagationData.getModifiedReturnType();
|
||||
valueParameterDescriptors = signaturesPropagationData.getModifiedValueParameters();
|
||||
|
||||
signatureErrors.addAll(signaturesPropagationData.getSignatureErrors());
|
||||
|
||||
// TODO consider better place for this check
|
||||
AlternativeMethodSignatureData alternativeMethodSignatureData =
|
||||
|
||||
Reference in New Issue
Block a user