From dd87c38ea386ced3338aeb1667a43d006633780c Mon Sep 17 00:00:00 2001 From: Evgeny Gerashchenko Date: Tue, 7 May 2013 15:51:59 +0400 Subject: [PATCH] Stricter override check. --- .../jet/lang/resolve/OverridingUtil.java | 20 +++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/OverridingUtil.java b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/OverridingUtil.java index 5a1e9c525ef..05b614c73d7 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/OverridingUtil.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/OverridingUtil.java @@ -119,15 +119,6 @@ public class OverridingUtil { } 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 @@ -136,7 +127,11 @@ public class OverridingUtil { // 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(); } @@ -326,6 +321,11 @@ public class OverridingUtil { return new OverrideCompatibilityInfo(Result.INCOMPATIBLE, "typeParameterNumberMismatch"); // TODO } + @NotNull + public static OverrideCompatibilityInfo receiverPresenseMismatch() { + return new OverrideCompatibilityInfo(Result.INCOMPATIBLE, "receiverPresenseMismatch"); // TODO + } + @NotNull public static OverrideCompatibilityInfo valueParameterNumberMismatch() { return new OverrideCompatibilityInfo(Result.INCOMPATIBLE, "valueParameterNumberMismatch"); // TODO