Relax rules related to noinline/crossinline/reified in header/impl functions

See the comments in KT-18752 for the current resolution

 #KT-15377 Fixed
 #KT-18752 Fixed
This commit is contained in:
Alexander Udalov
2017-07-24 16:43:58 +03:00
parent d1cff41ce0
commit b87abc9f0f
7 changed files with 113 additions and 75 deletions
@@ -0,0 +1,27 @@
// !LANGUAGE: +MultiPlatformProjects
// !DIAGNOSTICS: -NOTHING_TO_INLINE
// MODULE: m1-common
// FILE: common.kt
header fun f1(s: () -> String)
header inline fun f2(s: () -> String)
header inline fun f3(noinline s: () -> String)
header fun f4(s: () -> String)
header inline fun f5(s: () -> String)
header inline fun f6(crossinline s: () -> String)
header fun f7(x: Any)
header fun f8(vararg x: Any)
// MODULE: m2-jvm(m1-common)
// FILE: jvm.kt
impl inline fun f1(noinline s: () -> String) {}
<!IMPLEMENTATION_WITHOUT_HEADER!>impl inline fun f2(noinline s: () -> String)<!> {}
impl inline fun f3(s: () -> String) {}
impl inline fun f4(crossinline s: () -> String) {}
<!IMPLEMENTATION_WITHOUT_HEADER!>impl inline fun f5(crossinline s: () -> String)<!> {}
impl inline fun f6(s: () -> String) {}
<!IMPLEMENTATION_WITHOUT_HEADER!>impl fun f7(vararg x: Any)<!> {}
<!IMPLEMENTATION_WITHOUT_HEADER!>impl fun f8(x: Any)<!> {}
@@ -0,0 +1,24 @@
// -- Module: <m1-common> --
package
public header fun f1(/*0*/ s: () -> kotlin.String): kotlin.Unit
public header inline fun f2(/*0*/ s: () -> kotlin.String): kotlin.Unit
public header inline fun f3(/*0*/ noinline s: () -> kotlin.String): kotlin.Unit
public header fun f4(/*0*/ s: () -> kotlin.String): kotlin.Unit
public header inline fun f5(/*0*/ s: () -> kotlin.String): kotlin.Unit
public header inline fun f6(/*0*/ crossinline s: () -> kotlin.String): kotlin.Unit
public header fun f7(/*0*/ x: kotlin.Any): kotlin.Unit
public header fun f8(/*0*/ vararg x: kotlin.Any /*kotlin.Array<out kotlin.Any>*/): kotlin.Unit
// -- Module: <m2-jvm> --
package
public impl inline fun f1(/*0*/ noinline s: () -> kotlin.String): kotlin.Unit
public impl inline fun f2(/*0*/ noinline s: () -> kotlin.String): kotlin.Unit
public impl inline fun f3(/*0*/ s: () -> kotlin.String): kotlin.Unit
public impl inline fun f4(/*0*/ crossinline s: () -> kotlin.String): kotlin.Unit
public impl inline fun f5(/*0*/ crossinline s: () -> kotlin.String): kotlin.Unit
public impl inline fun f6(/*0*/ s: () -> kotlin.String): kotlin.Unit
public impl fun f7(/*0*/ vararg x: kotlin.Any /*kotlin.Array<out kotlin.Any>*/): kotlin.Unit
public impl fun f8(/*0*/ x: kotlin.Any): kotlin.Unit