Relax requirements on function modifiers in multiplatform projects
Allow to implement header functions with external/tailrec/inline/infix/operator functions
This commit is contained in:
@@ -1,14 +1,9 @@
|
||||
header infix fun Int.plus(s: CharSequence): Int
|
||||
header fun Int.minus(s: String): Int
|
||||
|
||||
header operator fun Double.times(x: CharArray)
|
||||
header fun Double.divide(x: ByteArray)
|
||||
|
||||
header external fun f1()
|
||||
header fun g1()
|
||||
|
||||
header inline fun f2()
|
||||
header fun g2()
|
||||
|
||||
header tailrec fun f3()
|
||||
header fun g3()
|
||||
|
||||
@@ -1,14 +1,9 @@
|
||||
impl fun Int.plus(s: CharSequence): Int = 0
|
||||
impl infix fun Int.minus(s: String): Int = 1
|
||||
|
||||
impl fun Double.times(x: CharArray) {}
|
||||
impl operator fun Double.divide(x: ByteArray) {}
|
||||
|
||||
impl fun f1() {}
|
||||
impl external fun g1()
|
||||
|
||||
impl fun f2() {}
|
||||
impl inline fun g2() {}
|
||||
|
||||
impl fun f3() {}
|
||||
impl tailrec fun g3() {}
|
||||
|
||||
@@ -6,96 +6,48 @@ Output:
|
||||
Exit code: COMPILATION_ERROR
|
||||
Output:
|
||||
compiler/testData/multiplatform/incompatibleFunctions/common.kt:1:1: error: header declaration 'plus' has no implementation in module
|
||||
The following declaration is incompatible because modifiers are different (external, infix, inline, operator, suspend, tailrec):
|
||||
The following declaration is incompatible because some modifiers on header declaration are missing on the implementation (external, infix, inline, operator, tailrec):
|
||||
public impl fun Int.plus(s: CharSequence): Int
|
||||
|
||||
header infix fun Int.plus(s: CharSequence): Int
|
||||
^
|
||||
compiler/testData/multiplatform/incompatibleFunctions/common.kt:2:1: error: header declaration 'minus' has no implementation in module
|
||||
The following declaration is incompatible because modifiers are different (external, infix, inline, operator, suspend, tailrec):
|
||||
public infix impl fun Int.minus(s: String): Int
|
||||
|
||||
header fun Int.minus(s: String): Int
|
||||
^
|
||||
compiler/testData/multiplatform/incompatibleFunctions/common.kt:4:1: error: header declaration 'times' has no implementation in module
|
||||
The following declaration is incompatible because modifiers are different (external, infix, inline, operator, suspend, tailrec):
|
||||
compiler/testData/multiplatform/incompatibleFunctions/common.kt:3:1: error: header declaration 'times' has no implementation in module
|
||||
The following declaration is incompatible because some modifiers on header declaration are missing on the implementation (external, infix, inline, operator, tailrec):
|
||||
public impl fun Double.times(x: CharArray): Unit
|
||||
|
||||
header operator fun Double.times(x: CharArray)
|
||||
^
|
||||
compiler/testData/multiplatform/incompatibleFunctions/common.kt:5:1: error: header declaration 'divide' has no implementation in module
|
||||
The following declaration is incompatible because modifiers are different (external, infix, inline, operator, suspend, tailrec):
|
||||
public operator impl fun Double.divide(x: ByteArray): Unit
|
||||
|
||||
header fun Double.divide(x: ByteArray)
|
||||
^
|
||||
compiler/testData/multiplatform/incompatibleFunctions/common.kt:7:1: error: header declaration 'f1' has no implementation in module
|
||||
The following declaration is incompatible because modifiers are different (external, infix, inline, operator, suspend, tailrec):
|
||||
compiler/testData/multiplatform/incompatibleFunctions/common.kt:5:1: error: header declaration 'f1' has no implementation in module
|
||||
The following declaration is incompatible because some modifiers on header declaration are missing on the implementation (external, infix, inline, operator, tailrec):
|
||||
public impl fun f1(): Unit
|
||||
|
||||
header external fun f1()
|
||||
^
|
||||
compiler/testData/multiplatform/incompatibleFunctions/common.kt:8:1: error: header declaration 'g1' has no implementation in module
|
||||
The following declaration is incompatible because modifiers are different (external, infix, inline, operator, suspend, tailrec):
|
||||
public external impl fun g1(): Unit
|
||||
|
||||
header fun g1()
|
||||
^
|
||||
compiler/testData/multiplatform/incompatibleFunctions/common.kt:10:1: error: header declaration 'f2' has no implementation in module
|
||||
The following declaration is incompatible because modifiers are different (external, infix, inline, operator, suspend, tailrec):
|
||||
compiler/testData/multiplatform/incompatibleFunctions/common.kt:7:1: error: header declaration 'f2' has no implementation in module
|
||||
The following declaration is incompatible because some modifiers on header declaration are missing on the implementation (external, infix, inline, operator, tailrec):
|
||||
public impl fun f2(): Unit
|
||||
|
||||
header inline fun f2()
|
||||
^
|
||||
compiler/testData/multiplatform/incompatibleFunctions/common.kt:11:1: error: header declaration 'g2' has no implementation in module
|
||||
The following declaration is incompatible because modifiers are different (external, infix, inline, operator, suspend, tailrec):
|
||||
public inline impl fun g2(): Unit
|
||||
|
||||
header fun g2()
|
||||
^
|
||||
compiler/testData/multiplatform/incompatibleFunctions/common.kt:13:1: error: header declaration 'f3' has no implementation in module
|
||||
The following declaration is incompatible because modifiers are different (external, infix, inline, operator, suspend, tailrec):
|
||||
compiler/testData/multiplatform/incompatibleFunctions/common.kt:9:1: error: header declaration 'f3' has no implementation in module
|
||||
The following declaration is incompatible because some modifiers on header declaration are missing on the implementation (external, infix, inline, operator, tailrec):
|
||||
public impl fun f3(): Unit
|
||||
|
||||
header tailrec fun f3()
|
||||
^
|
||||
compiler/testData/multiplatform/incompatibleFunctions/common.kt:14:1: error: header declaration 'g3' has no implementation in module
|
||||
The following declaration is incompatible because modifiers are different (external, infix, inline, operator, suspend, tailrec):
|
||||
public tailrec impl fun g3(): Unit
|
||||
|
||||
header fun g3()
|
||||
^
|
||||
compiler/testData/multiplatform/incompatibleFunctions/jvm.kt:1:1: error: modifier 'impl' is only applicable to members that are initially declared in platform-independent code
|
||||
impl fun Int.plus(s: CharSequence): Int = 0
|
||||
^
|
||||
compiler/testData/multiplatform/incompatibleFunctions/jvm.kt:2:1: error: modifier 'impl' is only applicable to members that are initially declared in platform-independent code
|
||||
impl infix fun Int.minus(s: String): Int = 1
|
||||
^
|
||||
compiler/testData/multiplatform/incompatibleFunctions/jvm.kt:4:1: error: modifier 'impl' is only applicable to members that are initially declared in platform-independent code
|
||||
compiler/testData/multiplatform/incompatibleFunctions/jvm.kt:3:1: error: modifier 'impl' is only applicable to members that are initially declared in platform-independent code
|
||||
impl fun Double.times(x: CharArray) {}
|
||||
^
|
||||
compiler/testData/multiplatform/incompatibleFunctions/jvm.kt:5:1: error: modifier 'impl' is only applicable to members that are initially declared in platform-independent code
|
||||
impl operator fun Double.divide(x: ByteArray) {}
|
||||
^
|
||||
compiler/testData/multiplatform/incompatibleFunctions/jvm.kt:5:6: error: 'operator' modifier is inapplicable on this function: illegal function name
|
||||
impl operator fun Double.divide(x: ByteArray) {}
|
||||
^
|
||||
compiler/testData/multiplatform/incompatibleFunctions/jvm.kt:7:1: error: modifier 'impl' is only applicable to members that are initially declared in platform-independent code
|
||||
impl fun f1() {}
|
||||
^
|
||||
compiler/testData/multiplatform/incompatibleFunctions/jvm.kt:8:1: error: modifier 'impl' is only applicable to members that are initially declared in platform-independent code
|
||||
impl external fun g1()
|
||||
^
|
||||
compiler/testData/multiplatform/incompatibleFunctions/jvm.kt:10:1: error: modifier 'impl' is only applicable to members that are initially declared in platform-independent code
|
||||
compiler/testData/multiplatform/incompatibleFunctions/jvm.kt:7:1: error: modifier 'impl' is only applicable to members that are initially declared in platform-independent code
|
||||
impl fun f2() {}
|
||||
^
|
||||
compiler/testData/multiplatform/incompatibleFunctions/jvm.kt:11:1: error: modifier 'impl' is only applicable to members that are initially declared in platform-independent code
|
||||
impl inline fun g2() {}
|
||||
^
|
||||
compiler/testData/multiplatform/incompatibleFunctions/jvm.kt:13:1: error: modifier 'impl' is only applicable to members that are initially declared in platform-independent code
|
||||
compiler/testData/multiplatform/incompatibleFunctions/jvm.kt:9:1: error: modifier 'impl' is only applicable to members that are initially declared in platform-independent code
|
||||
impl fun f3() {}
|
||||
^
|
||||
compiler/testData/multiplatform/incompatibleFunctions/jvm.kt:14:1: error: modifier 'impl' is only applicable to members that are initially declared in platform-independent code
|
||||
impl tailrec fun g3() {}
|
||||
^
|
||||
|
||||
|
||||
Reference in New Issue
Block a user