Stricter override check.
This commit is contained in:
@@ -120,15 +120,6 @@ public class OverridingUtil {
|
|||||||
return parameters;
|
return parameters;
|
||||||
}
|
}
|
||||||
|
|
||||||
private static int compiledValueParameterCount(CallableDescriptor callableDescriptor) {
|
|
||||||
if (callableDescriptor.getReceiverParameter() != null) {
|
|
||||||
return 1 + callableDescriptor.getValueParameters().size();
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
return callableDescriptor.getValueParameters().size();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param forOverride true for override, false for overload
|
* @param forOverride true for override, false for overload
|
||||||
*/
|
*/
|
||||||
@@ -136,7 +127,11 @@ public class OverridingUtil {
|
|||||||
|
|
||||||
// TODO : Visibility
|
// TODO : Visibility
|
||||||
|
|
||||||
if (compiledValueParameterCount(superDescriptor) != compiledValueParameterCount(subDescriptor)) {
|
if ((superDescriptor.getReceiverParameter() == null) != (subDescriptor.getReceiverParameter() == null)) {
|
||||||
|
return OverrideCompatibilityInfo.receiverPresenseMismatch();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (superDescriptor.getValueParameters().size() != subDescriptor.getValueParameters().size()) {
|
||||||
return OverrideCompatibilityInfo.valueParameterNumberMismatch();
|
return OverrideCompatibilityInfo.valueParameterNumberMismatch();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -326,6 +321,11 @@ public class OverridingUtil {
|
|||||||
return new OverrideCompatibilityInfo(Result.INCOMPATIBLE, "typeParameterNumberMismatch"); // TODO
|
return new OverrideCompatibilityInfo(Result.INCOMPATIBLE, "typeParameterNumberMismatch"); // TODO
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@NotNull
|
||||||
|
public static OverrideCompatibilityInfo receiverPresenseMismatch() {
|
||||||
|
return new OverrideCompatibilityInfo(Result.INCOMPATIBLE, "receiverPresenseMismatch"); // TODO
|
||||||
|
}
|
||||||
|
|
||||||
@NotNull
|
@NotNull
|
||||||
public static OverrideCompatibilityInfo valueParameterNumberMismatch() {
|
public static OverrideCompatibilityInfo valueParameterNumberMismatch() {
|
||||||
return new OverrideCompatibilityInfo(Result.INCOMPATIBLE, "valueParameterNumberMismatch"); // TODO
|
return new OverrideCompatibilityInfo(Result.INCOMPATIBLE, "valueParameterNumberMismatch"); // TODO
|
||||||
|
|||||||
Reference in New Issue
Block a user