Passing super functions instead of method and trace to modifyReturnTypeAccordingToSuperMethods.
This commit is contained in:
+2
-3
@@ -40,11 +40,10 @@ import java.util.*;
|
|||||||
public class SignaturesPropagation {
|
public class SignaturesPropagation {
|
||||||
public static JetType modifyReturnTypeAccordingToSuperMethods(
|
public static JetType modifyReturnTypeAccordingToSuperMethods(
|
||||||
@NotNull JetType autoType, // type built by JavaTypeTransformer
|
@NotNull JetType autoType, // type built by JavaTypeTransformer
|
||||||
@NotNull PsiMethodWrapper method,
|
@NotNull List<FunctionDescriptor> superFunctions,
|
||||||
@NotNull BindingTrace trace,
|
|
||||||
@NotNull Function1<String, Void> reportError
|
@NotNull Function1<String, Void> reportError
|
||||||
) {
|
) {
|
||||||
List<JetType> typesFromSuperMethods = ContainerUtil.map(getSuperFunctionsForMethod(method, trace),
|
List<JetType> typesFromSuperMethods = ContainerUtil.map(superFunctions,
|
||||||
new Function<FunctionDescriptor, JetType>() {
|
new Function<FunctionDescriptor, JetType>() {
|
||||||
@Override
|
@Override
|
||||||
public JetType fun(FunctionDescriptor superFunction) {
|
public JetType fun(FunctionDescriptor superFunction) {
|
||||||
|
|||||||
+9
-4
@@ -142,7 +142,9 @@ public final class JavaFunctionResolver {
|
|||||||
|
|
||||||
final List<String> signatureErrors = Lists.newArrayList();
|
final List<String> signatureErrors = Lists.newArrayList();
|
||||||
|
|
||||||
returnType = SignaturesPropagation.modifyReturnTypeAccordingToSuperMethods(returnType, method, trace, new Function1<String, Void>() {
|
List<FunctionDescriptor> superFunctions = SignaturesPropagation.getSuperFunctionsForMethod(method, trace);
|
||||||
|
|
||||||
|
returnType = SignaturesPropagation.modifyReturnTypeAccordingToSuperMethods(returnType, superFunctions, new Function1<String, Void>() {
|
||||||
@Override
|
@Override
|
||||||
public Void invoke(String error) {
|
public Void invoke(String error) {
|
||||||
signatureErrors.add(error);
|
signatureErrors.add(error);
|
||||||
@@ -186,7 +188,7 @@ public final class JavaFunctionResolver {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (signatureErrors.isEmpty()) {
|
if (signatureErrors.isEmpty()) {
|
||||||
checkFunctionsOverrideCorrectly(method, functionDescriptorImpl);
|
checkFunctionsOverrideCorrectly(method, superFunctions, functionDescriptorImpl);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
trace.record(BindingContext.LOAD_FROM_JAVA_SIGNATURE_ERRORS, functionDescriptorImpl, signatureErrors);
|
trace.record(BindingContext.LOAD_FROM_JAVA_SIGNATURE_ERRORS, functionDescriptorImpl, signatureErrors);
|
||||||
@@ -195,8 +197,11 @@ public final class JavaFunctionResolver {
|
|||||||
return functionDescriptorImpl;
|
return functionDescriptorImpl;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void checkFunctionsOverrideCorrectly(PsiMethodWrapper method, FunctionDescriptor functionDescriptor) {
|
private static void checkFunctionsOverrideCorrectly(
|
||||||
List<FunctionDescriptor> superFunctions = SignaturesPropagation.getSuperFunctionsForMethod(method, trace);
|
PsiMethodWrapper method,
|
||||||
|
List<FunctionDescriptor> superFunctions,
|
||||||
|
FunctionDescriptor functionDescriptor
|
||||||
|
) {
|
||||||
for (FunctionDescriptor superFunction : superFunctions) {
|
for (FunctionDescriptor superFunction : superFunctions) {
|
||||||
TypeSubstitutor substitutor = SubstitutionUtils.buildDeepSubstitutor(
|
TypeSubstitutor substitutor = SubstitutionUtils.buildDeepSubstitutor(
|
||||||
((ClassDescriptor) functionDescriptor.getContainingDeclaration()).getDefaultType());
|
((ClassDescriptor) functionDescriptor.getContainingDeclaration()).getDefaultType());
|
||||||
|
|||||||
Reference in New Issue
Block a user