Report VIRTUAL_MEMBER_HIDDEN on declaration name

#KT-13749 Fixed
This commit is contained in:
Dmitry Petrov
2017-05-25 14:57:26 +03:00
parent 96f7a2d38a
commit 9908212c99
12 changed files with 23 additions and 23 deletions
@@ -376,7 +376,7 @@ public interface Errors {
DiagnosticFactory1<KtModifierListOwner, CallableMemberDescriptor> NOTHING_TO_OVERRIDE = DiagnosticFactory1.create(ERROR, OVERRIDE_MODIFIER); DiagnosticFactory1<KtModifierListOwner, CallableMemberDescriptor> NOTHING_TO_OVERRIDE = DiagnosticFactory1.create(ERROR, OVERRIDE_MODIFIER);
DiagnosticFactory3<KtNamedDeclaration, CallableMemberDescriptor, CallableMemberDescriptor, DeclarationDescriptor> VIRTUAL_MEMBER_HIDDEN = DiagnosticFactory3<KtNamedDeclaration, CallableMemberDescriptor, CallableMemberDescriptor, DeclarationDescriptor> VIRTUAL_MEMBER_HIDDEN =
DiagnosticFactory3.create(ERROR, DECLARATION_SIGNATURE); DiagnosticFactory3.create(ERROR, DECLARATION_NAME);
DiagnosticFactory2<KtModifierListOwner, CallableMemberDescriptor, CallableDescriptor> CANNOT_OVERRIDE_INVISIBLE_MEMBER = DiagnosticFactory2<KtModifierListOwner, CallableMemberDescriptor, CallableDescriptor> CANNOT_OVERRIDE_INVISIBLE_MEMBER =
DiagnosticFactory2.create(ERROR, OVERRIDE_MODIFIER); DiagnosticFactory2.create(ERROR, OVERRIDE_MODIFIER);
@@ -1,6 +1,6 @@
enum class E { enum class E {
ENTRY; ENTRY;
<!VIRTUAL_MEMBER_HIDDEN!>fun getDeclaringClass()<!> {} fun <!VIRTUAL_MEMBER_HIDDEN!>getDeclaringClass<!>() {}
<!VIRTUAL_MEMBER_HIDDEN!>fun finalize()<!> {} fun <!VIRTUAL_MEMBER_HIDDEN!>finalize<!>() {}
} }
@@ -1,5 +1,5 @@
interface IA { interface IA {
<!VIRTUAL_MEMBER_HIDDEN!>fun toString(): String<!> = "IB" fun <!VIRTUAL_MEMBER_HIDDEN!>toString<!>(): String = "IB"
override fun equals(other: Any?): Boolean override fun equals(other: Any?): Boolean
} }
+2 -2
View File
@@ -23,8 +23,8 @@ open class MyGenericClass<T>(t : T) : MyTrait<T>, MyAbstractClass<T>(), MyProps<
class MyChildClass() : MyGenericClass<Int>(1) {} class MyChildClass() : MyGenericClass<Int>(1) {}
class MyChildClass1<T>(t : T) : MyGenericClass<T>(t) {} class MyChildClass1<T>(t : T) : MyGenericClass<T>(t) {}
class MyChildClass2<T>(t : T) : MyGenericClass<T>(t) { class MyChildClass2<T>(t : T) : MyGenericClass<T>(t) {
<!VIRTUAL_MEMBER_HIDDEN!>fun foo(t: T)<!> = t fun <!VIRTUAL_MEMBER_HIDDEN!>foo<!>(t: T) = t
<!VIRTUAL_MEMBER_HIDDEN!>val pr : T<!> = t val <!VIRTUAL_MEMBER_HIDDEN!>pr<!> : T = t
override fun bar(t: T) = t override fun bar(t: T) = t
override val p : T = t override val p : T = t
} }
@@ -7,9 +7,9 @@ interface Y {
} }
class Z : X, Y { class Z : X, Y {
<!VIRTUAL_MEMBER_HIDDEN!>fun foo(a : Int)<!> {} fun <!VIRTUAL_MEMBER_HIDDEN!>foo<!>(a : Int) {}
} }
object ZO : X, Y { object ZO : X, Y {
<!VIRTUAL_MEMBER_HIDDEN!>fun foo(a : Int)<!> {} fun <!VIRTUAL_MEMBER_HIDDEN!>foo<!>(a : Int) {}
} }
@@ -36,15 +36,15 @@ class MyChildClass() : MyClass() {}
} }
<!ABSTRACT_CLASS_MEMBER_NOT_IMPLEMENTED!>class MyIllegalClass4<!>() : MyTrait, MyAbstractClass() { <!ABSTRACT_CLASS_MEMBER_NOT_IMPLEMENTED!>class MyIllegalClass4<!>() : MyTrait, MyAbstractClass() {
<!VIRTUAL_MEMBER_HIDDEN!>fun foo()<!> {} fun <!VIRTUAL_MEMBER_HIDDEN!>foo<!>() {}
<!VIRTUAL_MEMBER_HIDDEN, MUST_BE_INITIALIZED_OR_BE_ABSTRACT!>val pr : Unit<!> <!MUST_BE_INITIALIZED_OR_BE_ABSTRACT!>val <!VIRTUAL_MEMBER_HIDDEN!>pr<!> : Unit<!>
<!NOTHING_TO_OVERRIDE!>override<!> fun other() {} <!NOTHING_TO_OVERRIDE!>override<!> fun other() {}
<!NOTHING_TO_OVERRIDE!>override<!> val otherPr : Int = 1 <!NOTHING_TO_OVERRIDE!>override<!> val otherPr : Int = 1
} }
class MyChildClass1() : MyClass() { class MyChildClass1() : MyClass() {
<!VIRTUAL_MEMBER_HIDDEN!>fun foo()<!> {} fun <!VIRTUAL_MEMBER_HIDDEN!>foo<!>() {}
<!VIRTUAL_MEMBER_HIDDEN!>val pr : Unit<!> = Unit val <!VIRTUAL_MEMBER_HIDDEN!>pr<!> : Unit = Unit
override fun bar() {} override fun bar() {}
override val prr : Unit = Unit override val prr : Unit = Unit
} }
@@ -25,7 +25,7 @@ fun test() {
} }
class E: A() { class E: A() {
<!VIRTUAL_MEMBER_HIDDEN!>fun foo()<!> = A() fun <!VIRTUAL_MEMBER_HIDDEN!>foo<!>() = A()
init { init {
val a: A = foo() // todo: discuss val a: A = foo() // todo: discuss
@@ -1,7 +1,7 @@
// !DIAGNOSTICS: -UNUSED_PARAMETER -PLATFORM_CLASS_MAPPED_TO_KOTLIN // !DIAGNOSTICS: -UNUSED_PARAMETER -PLATFORM_CLASS_MAPPED_TO_KOTLIN
abstract class Test1 : Map<String, String> { abstract class Test1 : Map<String, String> {
<!VIRTUAL_MEMBER_HIDDEN!>fun containsKey(key: String): Boolean<!> = TODO() fun <!VIRTUAL_MEMBER_HIDDEN!>containsKey<!>(key: String): Boolean = TODO()
fun getOrDefault(key: String, defaultValue: String): String = TODO() fun getOrDefault(key: String, defaultValue: String): String = TODO()
} }
@@ -11,7 +11,7 @@ abstract class Test2 : MutableMap<String, String> {
} }
abstract class Test3 : java.util.AbstractMap<String, String>() { abstract class Test3 : java.util.AbstractMap<String, String>() {
<!VIRTUAL_MEMBER_HIDDEN!>fun containsKey(key: String): Boolean<!> = TODO() fun <!VIRTUAL_MEMBER_HIDDEN!>containsKey<!>(key: String): Boolean = TODO()
fun replace(key: String, value: String): String? = TODO() fun replace(key: String, value: String): String? = TODO()
} }
@@ -7,7 +7,7 @@
open class WithDelegation(val m: Map<String, String>) : Map<String, String> by m open class WithDelegation(val m: Map<String, String>) : Map<String, String> by m
class TestNoDelegationToDefaultMethods(m: Map<String, String>): WithDelegation(m) { class TestNoDelegationToDefaultMethods(m: Map<String, String>): WithDelegation(m) {
<!VIRTUAL_MEMBER_HIDDEN!>fun containsKey(key: String): Boolean<!> = TODO() fun <!VIRTUAL_MEMBER_HIDDEN!>containsKey<!>(key: String): Boolean = TODO()
fun getOrDefault(key: String, defaultValue: String): String = TODO() fun getOrDefault(key: String, defaultValue: String): String = TODO()
@@ -23,10 +23,10 @@ interface IBaseWithKotlinDeclaration : Map<String, String> {
abstract class WithDelegation2(val m: Map<String, String>) : Map<String, String> by m, IBaseWithKotlinDeclaration abstract class WithDelegation2(val m: Map<String, String>) : Map<String, String> by m, IBaseWithKotlinDeclaration
abstract class TestNoDelegationToDefaultMethods2(m: Map<String, String>): WithDelegation2(m) { abstract class TestNoDelegationToDefaultMethods2(m: Map<String, String>): WithDelegation2(m) {
<!VIRTUAL_MEMBER_HIDDEN!>fun containsKey(key: String): Boolean<!> = TODO() fun <!VIRTUAL_MEMBER_HIDDEN!>containsKey<!>(key: String): Boolean = TODO()
fun getOrDefault(key: String, defaultValue: String): String = TODO() fun getOrDefault(key: String, defaultValue: String): String = TODO()
// VIRTUAL_MEMBER_HIDDEN: hides member declaration inherited from a Kotlin interface // VIRTUAL_MEMBER_HIDDEN: hides member declaration inherited from a Kotlin interface
<!VIRTUAL_MEMBER_HIDDEN!>fun replace(key: String, value: String): String?<!> = TODO() fun <!VIRTUAL_MEMBER_HIDDEN!>replace<!>(key: String, value: String): String? = TODO()
} }
@@ -6,10 +6,10 @@ interface IBaseWithKotlinDeclaration : Map<String, String> {
interface TestDerivedInterfaceHidingWithKotlinDeclaration : IBaseWithKotlinDeclaration { interface TestDerivedInterfaceHidingWithKotlinDeclaration : IBaseWithKotlinDeclaration {
// VIRTUAL_MEMBER_HIDDEN: hides member declaration inherited from a Kotlin interface // VIRTUAL_MEMBER_HIDDEN: hides member declaration inherited from a Kotlin interface
<!VIRTUAL_MEMBER_HIDDEN!>fun replace(key: String, value: String): String?<!> fun <!VIRTUAL_MEMBER_HIDDEN!>replace<!>(key: String, value: String): String?
} }
interface TestDerivedInterfaceDefaultWithKotlinDeclaration : IBaseWithKotlinDeclaration { interface TestDerivedInterfaceDefaultWithKotlinDeclaration : IBaseWithKotlinDeclaration {
// VIRTUAL_MEMBER_HIDDEN: hides member declaration inherited from a Kotlin interface // VIRTUAL_MEMBER_HIDDEN: hides member declaration inherited from a Kotlin interface
<!VIRTUAL_MEMBER_HIDDEN!>fun replace(key: String, value: String): String?<!> = TODO() fun <!VIRTUAL_MEMBER_HIDDEN!>replace<!>(key: String, value: String): String? = TODO()
} }
@@ -1,8 +1,8 @@
enum class TestEnum { enum class TestEnum {
ENTRY; ENTRY;
<!VIRTUAL_MEMBER_HIDDEN!>fun getDeclaringClass()<!> {} fun <!VIRTUAL_MEMBER_HIDDEN!>getDeclaringClass<!>() {}
<!VIRTUAL_MEMBER_HIDDEN!>fun finalize()<!> {} fun <!VIRTUAL_MEMBER_HIDDEN!>finalize<!>() {}
} }
class TestFinalize { class TestFinalize {
@@ -17,7 +17,7 @@ class A1 : java.util.ArrayList<String>() {
fun stream(): java.util.stream.Stream<String> = super.<!UNRESOLVED_REFERENCE!>stream<!>() fun stream(): java.util.stream.Stream<String> = super.<!UNRESOLVED_REFERENCE!>stream<!>()
// `sort` is defined in ArrayList, so it was impossible to declare it in 1.0 without an 'override' keyword // `sort` is defined in ArrayList, so it was impossible to declare it in 1.0 without an 'override' keyword
<!VIRTUAL_MEMBER_HIDDEN!>fun sort(c: Comparator<in String>?)<!> { fun <!VIRTUAL_MEMBER_HIDDEN!>sort<!>(c: Comparator<in String>?) {
super.sort(c) super.sort(c)
} }
} }