Introduce additional overridability rule
It works only for Java methods and it's purpose is Java overridability rules emulation, namely distinction of primitive types and their wrappers. For example `void foo(Integer x)` should not be an override for `void foo(int x)` #KT-11440 Fixed #KT-11389 Fixed
This commit is contained in:
@@ -969,8 +969,12 @@ public class KotlinTypeMapper {
|
||||
}
|
||||
|
||||
for (ValueParameterDescriptor parameter : valueParameters) {
|
||||
if (writeCustomParameter(f, parameter, sw)) continue;
|
||||
writeParameter(sw, parameter.getType(), f);
|
||||
boolean forceBoxing = MethodSignatureMappingKt.forceSingleValueParameterBoxing(f);
|
||||
writeParameter(
|
||||
sw,
|
||||
forceBoxing ? TypeUtils.makeNullable(parameter.getType()) : parameter.getType(),
|
||||
f
|
||||
);
|
||||
}
|
||||
|
||||
sw.writeReturnType();
|
||||
@@ -1020,24 +1024,6 @@ public class KotlinTypeMapper {
|
||||
}
|
||||
}
|
||||
|
||||
private boolean writeCustomParameter(
|
||||
@NotNull FunctionDescriptor f,
|
||||
@NotNull ValueParameterDescriptor parameter,
|
||||
@NotNull JvmSignatureWriter sw
|
||||
) {
|
||||
FunctionDescriptor overridden =
|
||||
BuiltinMethodsWithSpecialGenericSignature.getOverriddenBuiltinFunctionWithErasedValueParametersInJava(f);
|
||||
if (overridden == null) return false;
|
||||
if (SpecialBuiltinMembers.isFromJavaOrBuiltins(f)) return false;
|
||||
|
||||
if (overridden.getName().asString().equals("remove") && mapType(parameter.getType()).getSort() == Type.INT) {
|
||||
writeParameter(sw, TypeUtils.makeNullable(parameter.getType()), f);
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
@NotNull
|
||||
private static String getDefaultDescriptor(@NotNull Method method, @Nullable String dispatchReceiverDescriptor, boolean isExtension) {
|
||||
String descriptor = method.getDescriptor();
|
||||
|
||||
Reference in New Issue
Block a user