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.*;
|
import java.util.*;
|
||||||
|
|
||||||
public class SignaturesPropagationData {
|
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 JetType autoType, // type built by JavaTypeTransformer
|
||||||
@NotNull List<FunctionDescriptor> superFunctions,
|
@NotNull List<FunctionDescriptor> superFunctions,
|
||||||
@NotNull Function1<String, Void> reportError
|
@NotNull Function1<String, Void> reportError
|
||||||
@@ -56,7 +97,7 @@ public class SignaturesPropagationData {
|
|||||||
return modifyTypeAccordingToSuperMethods(autoType, typesFromSuperMethods, true, reportError);
|
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 JavaDescriptorResolver.ValueParameterDescriptors parameters, // descriptors built by parameters resolver
|
||||||
@NotNull List<FunctionDescriptor> superFunctions,
|
@NotNull List<FunctionDescriptor> superFunctions,
|
||||||
@NotNull Function1<String, Void> reportError
|
@NotNull Function1<String, Void> reportError
|
||||||
@@ -96,7 +137,7 @@ public class SignaturesPropagationData {
|
|||||||
return new JavaDescriptorResolver.ValueParameterDescriptors(parameters.getReceiverType(), resultParameters);
|
return new JavaDescriptorResolver.ValueParameterDescriptors(parameters.getReceiverType(), resultParameters);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static List<FunctionDescriptor> getSuperFunctionsForMethod(
|
private static List<FunctionDescriptor> getSuperFunctionsForMethod(
|
||||||
@NotNull PsiMethodWrapper method,
|
@NotNull PsiMethodWrapper method,
|
||||||
@NotNull BindingTrace trace
|
@NotNull BindingTrace trace
|
||||||
) {
|
) {
|
||||||
@@ -439,9 +480,6 @@ public class SignaturesPropagationData {
|
|||||||
return classifier;
|
return classifier;
|
||||||
}
|
}
|
||||||
|
|
||||||
private SignaturesPropagationData() {
|
|
||||||
}
|
|
||||||
|
|
||||||
private static class VarargCheckResult {
|
private static class VarargCheckResult {
|
||||||
public final JetType parameterType;
|
public final JetType parameterType;
|
||||||
public final boolean isVararg;
|
public final boolean isVararg;
|
||||||
|
|||||||
+7
-12
@@ -22,7 +22,6 @@ import com.intellij.psi.PsiClass;
|
|||||||
import com.intellij.psi.PsiMethod;
|
import com.intellij.psi.PsiMethod;
|
||||||
import com.intellij.psi.PsiType;
|
import com.intellij.psi.PsiType;
|
||||||
import com.intellij.psi.util.PsiFormatUtil;
|
import com.intellij.psi.util.PsiFormatUtil;
|
||||||
import jet.Function1;
|
|
||||||
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.*;
|
||||||
@@ -142,18 +141,14 @@ public final class JavaFunctionResolver {
|
|||||||
|
|
||||||
final List<String> signatureErrors = Lists.newArrayList();
|
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>() {
|
returnType = signaturesPropagationData.getModifiedReturnType();
|
||||||
@Override
|
valueParameterDescriptors = signaturesPropagationData.getModifiedValueParameters();
|
||||||
public Void invoke(String error) {
|
|
||||||
signatureErrors.add(error);
|
signatureErrors.addAll(signaturesPropagationData.getSignatureErrors());
|
||||||
return null;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
returnType = SignaturesPropagationData.modifyReturnTypeAccordingToSuperMethods(returnType, superFunctions, reportError);
|
|
||||||
valueParameterDescriptors = SignaturesPropagationData
|
|
||||||
.modifyValueParametersAccordingToSuperMethods(valueParameterDescriptors, superFunctions, reportError);
|
|
||||||
|
|
||||||
// TODO consider better place for this check
|
// TODO consider better place for this check
|
||||||
AlternativeMethodSignatureData alternativeMethodSignatureData =
|
AlternativeMethodSignatureData alternativeMethodSignatureData =
|
||||||
|
|||||||
Reference in New Issue
Block a user