Do not report "header with no impl" on incorrect header

Descriptor for a 'header' member in a non-'header' class now has
isHeader = false

 #KT-18442 Fixed
This commit is contained in:
Alexander Udalov
2017-07-21 15:47:57 +03:00
parent 6cb4916dee
commit 3a2d93f73e
10 changed files with 105 additions and 23 deletions
@@ -0,0 +1,14 @@
// !LANGUAGE: +MultiPlatformProjects
// MODULE: m1-common
// FILE: common.kt
header class H {
<!WRONG_MODIFIER_TARGET, JVM:WRONG_MODIFIER_TARGET!>header<!> fun foo()
}
// MODULE: m1-jvm(m1-common)
// FILE: jvm.kt
impl class H {
impl fun foo() {}
}
@@ -0,0 +1,22 @@
// -- Module: <m1-common> --
package
public final header class H {
public constructor H()
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public final header fun foo(): kotlin.Unit
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
// -- Module: <m1-jvm> --
package
public final impl class H {
public constructor H()
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public final impl fun foo(): kotlin.Unit
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
@@ -0,0 +1,10 @@
// !LANGUAGE: +MultiPlatformProjects
// MODULE: m1-common
// FILE: common.kt
class Foo {
<!NON_ABSTRACT_FUNCTION_WITH_NO_BODY, JVM:NON_ABSTRACT_FUNCTION_WITH_NO_BODY!><!WRONG_MODIFIER_TARGET, JVM:WRONG_MODIFIER_TARGET!>header<!> fun bar(): String<!>
}
// MODULE: m1-jvm(m1-common)
// FILE: jvm.kt
@@ -0,0 +1,22 @@
// -- Module: <m1-common> --
package
public final class Foo {
public constructor Foo()
public final fun bar(): kotlin.String
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
// -- Module: <m1-jvm> --
package
public final class Foo {
public constructor Foo()
public final fun bar(): kotlin.String
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
@@ -10,11 +10,11 @@ class Outer <!WRONG_MODIFIER_TARGET!>header<!> constructor() {
<!WRONG_MODIFIER_TARGET!>header<!> init {}
<!NON_ABSTRACT_FUNCTION_WITH_NO_BODY!><!WRONG_MODIFIER_TARGET!>header<!> fun foo()<!>
<!WRONG_MODIFIER_TARGET!>header<!> val bar: Int
<!MUST_BE_INITIALIZED_OR_BE_ABSTRACT!><!WRONG_MODIFIER_TARGET!>header<!> val bar: Int<!>
}
fun foo() {
<!WRONG_MODIFIER_TARGET!>header<!> fun localFun()
<!NON_MEMBER_FUNCTION_NO_BODY!><!WRONG_MODIFIER_TARGET!>header<!> fun localFun()<!>
<!WRONG_MODIFIER_TARGET!>header<!> var <!UNUSED_VARIABLE!>x<!> = 42
<!WRONG_MODIFIER_TARGET!>header<!> class Bar
}
@@ -5,9 +5,9 @@ public fun foo(): kotlin.Unit
public final class Outer {
public constructor Outer()
public header final val bar: kotlin.Int
public final val bar: kotlin.Int
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public final header fun foo(): kotlin.Unit
public final fun foo(): kotlin.Unit
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String