Prohibit declaring multiple callsInPlace contract on same lambda.
#KT-26150 fixed
This commit is contained in:
+2
-3
@@ -6,7 +6,6 @@
|
||||
* SECTIONS: contracts, declarations, contractBuilder, effects, callsInPlace
|
||||
* NUMBER: 2
|
||||
* DESCRIPTION: functions with contract and duplicate CallsInPlace.
|
||||
* UNEXPECTED BEHAVIOUR
|
||||
* ISSUES: KT-26150
|
||||
*/
|
||||
|
||||
@@ -16,7 +15,7 @@ import kotlin.contracts.*
|
||||
inline fun case_1(block: () -> Unit) {
|
||||
contract {
|
||||
callsInPlace(block, InvocationKind.EXACTLY_ONCE)
|
||||
callsInPlace(block, InvocationKind.EXACTLY_ONCE)
|
||||
<!ERROR_IN_CONTRACT_DESCRIPTION!>callsInPlace(block, InvocationKind.EXACTLY_ONCE)<!>
|
||||
}
|
||||
return block()
|
||||
}
|
||||
@@ -25,7 +24,7 @@ inline fun case_1(block: () -> Unit) {
|
||||
inline fun case_2(block: () -> Unit) {
|
||||
contract {
|
||||
callsInPlace(block, InvocationKind.EXACTLY_ONCE)
|
||||
callsInPlace(block, InvocationKind.AT_MOST_ONCE)
|
||||
<!ERROR_IN_CONTRACT_DESCRIPTION!>callsInPlace(block, InvocationKind.AT_MOST_ONCE)<!>
|
||||
}
|
||||
return block()
|
||||
}
|
||||
|
||||
-5
@@ -1,9 +1,4 @@
|
||||
package
|
||||
|
||||
public inline fun case_1(/*0*/ block: () -> kotlin.Unit): kotlin.Unit
|
||||
CallsInPlace(block, EXACTLY_ONCE)
|
||||
CallsInPlace(block, EXACTLY_ONCE)
|
||||
|
||||
public inline fun case_2(/*0*/ block: () -> kotlin.Unit): kotlin.Unit
|
||||
CallsInPlace(block, EXACTLY_ONCE)
|
||||
CallsInPlace(block, AT_MOST_ONCE)
|
||||
|
||||
Reference in New Issue
Block a user