Fix overridability rules for suspend functions

Treat suspend and non-suspend functions as conflicting

 #KT-15413 Fixed
This commit is contained in:
Denis Zharkov
2017-01-12 11:25:37 +03:00
parent 978f53414f
commit de9c41c412
8 changed files with 165 additions and 0 deletions
@@ -260,6 +260,11 @@ public class OverridingUtil {
}
}
if (superDescriptor instanceof FunctionDescriptor && subDescriptor instanceof FunctionDescriptor &&
((FunctionDescriptor) superDescriptor).isSuspend() != ((FunctionDescriptor) subDescriptor).isSuspend()) {
return OverrideCompatibilityInfo.conflict("Incompatible suspendability");
}
if (checkReturnType) {
KotlinType superReturnType = superDescriptor.getReturnType();
KotlinType subReturnType = subDescriptor.getReturnType();