diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/diagnostics/Errors.java b/compiler/frontend/src/org/jetbrains/jet/lang/diagnostics/Errors.java index 172982714bf..f6204b723dc 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/diagnostics/Errors.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/diagnostics/Errors.java @@ -211,8 +211,8 @@ public interface Errors { DiagnosticFactory3 VIRTUAL_MEMBER_HIDDEN = DiagnosticFactory3.create(ERROR, NAMED_ELEMENT); - DiagnosticFactory3 CANNOT_OVERRIDE_INVISIBLE_MEMBER = - DiagnosticFactory3.create(ERROR, OVERRIDE_MODIFIER); + DiagnosticFactory2 CANNOT_OVERRIDE_INVISIBLE_MEMBER = + DiagnosticFactory2.create(ERROR, OVERRIDE_MODIFIER); DiagnosticFactory2 DATA_CLASS_OVERRIDE_CONFLICT = DiagnosticFactory2.create(ERROR); diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/diagnostics/rendering/DefaultErrorMessages.java b/compiler/frontend/src/org/jetbrains/jet/lang/diagnostics/rendering/DefaultErrorMessages.java index 4f903961f49..4aa8ee2d562 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/diagnostics/rendering/DefaultErrorMessages.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/diagnostics/rendering/DefaultErrorMessages.java @@ -158,8 +158,7 @@ public class DefaultErrorMessages { MAP.put(DATA_CLASS_OVERRIDE_CONFLICT, "Function ''{0}'' generated for the data class conflicts with member of supertype ''{1}''", NAME, NAME); - MAP.put(CANNOT_OVERRIDE_INVISIBLE_MEMBER, "''{0}'' cannot has no access to ''{1}'' in class {2}, so it cannot override it", - TEXT, TEXT, TEXT); + MAP.put(CANNOT_OVERRIDE_INVISIBLE_MEMBER, "''{0}'' has no access to ''{1}'', so it cannot override it", TEXT, TEXT); MAP.put(CANNOT_INFER_VISIBILITY, "Cannot infer visibility. Please specify it explicitly"); MAP.put(ENUM_ENTRY_SHOULD_BE_INITIALIZED, "Missing delegation specifier ''{0}''", NAME); diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/OverrideResolver.java b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/OverrideResolver.java index 81b9d63593f..4405efa88a6 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/OverrideResolver.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/OverrideResolver.java @@ -592,7 +592,7 @@ public class OverrideResolver { @Override public void cannotOverrideInvisibleMember(@NotNull CallableMemberDescriptor invisibleOverridden) { - trace.report(CANNOT_OVERRIDE_INVISIBLE_MEMBER.on(member, declared, invisibleOverridden, invisibleOverridden.getContainingDeclaration())); + trace.report(CANNOT_OVERRIDE_INVISIBLE_MEMBER.on(member, declared, invisibleOverridden)); } @Override diff --git a/idea/testData/diagnosticMessage/cannotOverrideInvisibleMember.kt b/idea/testData/diagnosticMessage/cannotOverrideInvisibleMember.kt new file mode 100644 index 00000000000..5a39c36c4d7 --- /dev/null +++ b/idea/testData/diagnosticMessage/cannotOverrideInvisibleMember.kt @@ -0,0 +1,10 @@ +// !DIAGNOSTICS_NUMBER: 1 +// !DIAGNOSTICS: CANNOT_OVERRIDE_INVISIBLE_MEMBER + +open class A { + private open fun foo() {} +} + +class B : A() { + override fun foo() {} +} diff --git a/idea/testData/diagnosticMessage/cannotOverrideInvisibleMember1.txt b/idea/testData/diagnosticMessage/cannotOverrideInvisibleMember1.txt new file mode 100644 index 00000000000..65cf0293a3d --- /dev/null +++ b/idea/testData/diagnosticMessage/cannotOverrideInvisibleMember1.txt @@ -0,0 +1,2 @@ + +'internal open fun foo(): kotlin.Unit defined in B' has no access to 'private open fun foo(): kotlin.Unit defined in A', so it cannot override it \ No newline at end of file diff --git a/idea/tests/org/jetbrains/jet/plugin/highlighter/DiagnosticMessageTestGenerated.java b/idea/tests/org/jetbrains/jet/plugin/highlighter/DiagnosticMessageTestGenerated.java index 8a2bd535e56..d37d0a121cb 100644 --- a/idea/tests/org/jetbrains/jet/plugin/highlighter/DiagnosticMessageTestGenerated.java +++ b/idea/tests/org/jetbrains/jet/plugin/highlighter/DiagnosticMessageTestGenerated.java @@ -41,6 +41,11 @@ public class DiagnosticMessageTestGenerated extends AbstractDiagnosticMessageTes doTest("idea/testData/diagnosticMessage/assignedButNeverAccessedVariable.kt"); } + @TestMetadata("cannotOverrideInvisibleMember.kt") + public void testCannotOverrideInvisibleMember() throws Exception { + doTest("idea/testData/diagnosticMessage/cannotOverrideInvisibleMember.kt"); + } + @TestMetadata("conflictingOverloadsClass.kt") public void testConflictingOverloadsClass() throws Exception { doTest("idea/testData/diagnosticMessage/conflictingOverloadsClass.kt");