Allow declaring contracts on suspend functions. KT-27468 Fixed
This commit is contained in:
-2
@@ -119,8 +119,6 @@ class ContractParsingServices(val languageVersionSettings: LanguageVersionSettin
|
||||
|
||||
if (functionDescriptor?.isOperator == true) collector.contractNotAllowed("Contracts are not allowed for operator functions")
|
||||
|
||||
if (functionDescriptor?.isSuspend == true) collector.contractNotAllowed("Contracts are not allowed for suspend functions")
|
||||
|
||||
if (functionDescriptor?.isOverridable == true) collector.contractNotAllowed("Contracts are not allowed for open functions")
|
||||
}
|
||||
|
||||
|
||||
+3
-3
@@ -24,7 +24,7 @@ open class Class {
|
||||
}
|
||||
|
||||
suspend fun suspendMember(x: Boolean) {
|
||||
<!CONTRACT_NOT_ALLOWED, CONTRACT_NOT_ALLOWED!>contract<!> { returns() implies (x) }
|
||||
<!CONTRACT_NOT_ALLOWED!>contract<!> { returns() implies (x) }
|
||||
}
|
||||
}
|
||||
|
||||
@@ -39,7 +39,7 @@ inline fun inlineTopLevel(x: Boolean) {
|
||||
}
|
||||
|
||||
suspend fun suspendTopLevel(x: Boolean) {
|
||||
<!CONTRACT_NOT_ALLOWED!>contract<!> { returns() implies (x) }
|
||||
contract { returns() implies (x) }
|
||||
}
|
||||
|
||||
// Top-level operator
|
||||
@@ -73,7 +73,7 @@ fun test() {
|
||||
}
|
||||
|
||||
suspend fun suspendlocalDeclaration(x: Boolean) {
|
||||
<!CONTRACT_NOT_ALLOWED, CONTRACT_NOT_ALLOWED!>contract<!> { returns() implies (x) }
|
||||
<!CONTRACT_NOT_ALLOWED!>contract<!> { returns() implies (x) }
|
||||
}
|
||||
|
||||
val localAnonymousFunction = fun (x: Boolean) {
|
||||
+2
@@ -7,6 +7,8 @@ public inline fun inlineTopLevel(/*0*/ x: kotlin.Boolean): kotlin.Unit
|
||||
Returns(WILDCARD) -> x
|
||||
|
||||
public suspend fun suspendTopLevel(/*0*/ x: kotlin.Boolean): kotlin.Unit
|
||||
Returns(WILDCARD) -> x
|
||||
|
||||
public fun test(): kotlin.Unit
|
||||
public fun topLevel(/*0*/ x: kotlin.Boolean): kotlin.Unit
|
||||
Returns(WILDCARD) -> x
|
||||
+5
-5
@@ -1174,16 +1174,16 @@ public class DiagnosticsTestWithStdLibGenerated extends AbstractDiagnosticsTestW
|
||||
runTest("compiler/testData/diagnostics/testsWithStdLib/contracts/dsl/errors/callInContractDescription.kt");
|
||||
}
|
||||
|
||||
@TestMetadata("contractCallSites.kt")
|
||||
public void testContractCallSites() throws Exception {
|
||||
runTest("compiler/testData/diagnostics/testsWithStdLib/contracts/dsl/errors/contractCallSites.kt");
|
||||
}
|
||||
|
||||
@TestMetadata("emptyContract.kt")
|
||||
public void testEmptyContract() throws Exception {
|
||||
runTest("compiler/testData/diagnostics/testsWithStdLib/contracts/dsl/errors/emptyContract.kt");
|
||||
}
|
||||
|
||||
@TestMetadata("illegalCallSites.kt")
|
||||
public void testIllegalCallSites() throws Exception {
|
||||
runTest("compiler/testData/diagnostics/testsWithStdLib/contracts/dsl/errors/illegalCallSites.kt");
|
||||
}
|
||||
|
||||
@TestMetadata("illegalConstructionInContractBlock.kt")
|
||||
public void testIllegalConstructionInContractBlock() throws Exception {
|
||||
runTest("compiler/testData/diagnostics/testsWithStdLib/contracts/dsl/errors/illegalConstructionInContractBlock.kt");
|
||||
|
||||
compiler/tests/org/jetbrains/kotlin/checkers/javac/DiagnosticsTestWithStdLibUsingJavacGenerated.java
Generated
+5
-5
@@ -1174,16 +1174,16 @@ public class DiagnosticsTestWithStdLibUsingJavacGenerated extends AbstractDiagno
|
||||
runTest("compiler/testData/diagnostics/testsWithStdLib/contracts/dsl/errors/callInContractDescription.kt");
|
||||
}
|
||||
|
||||
@TestMetadata("contractCallSites.kt")
|
||||
public void testContractCallSites() throws Exception {
|
||||
runTest("compiler/testData/diagnostics/testsWithStdLib/contracts/dsl/errors/contractCallSites.kt");
|
||||
}
|
||||
|
||||
@TestMetadata("emptyContract.kt")
|
||||
public void testEmptyContract() throws Exception {
|
||||
runTest("compiler/testData/diagnostics/testsWithStdLib/contracts/dsl/errors/emptyContract.kt");
|
||||
}
|
||||
|
||||
@TestMetadata("illegalCallSites.kt")
|
||||
public void testIllegalCallSites() throws Exception {
|
||||
runTest("compiler/testData/diagnostics/testsWithStdLib/contracts/dsl/errors/illegalCallSites.kt");
|
||||
}
|
||||
|
||||
@TestMetadata("illegalConstructionInContractBlock.kt")
|
||||
public void testIllegalConstructionInContractBlock() throws Exception {
|
||||
runTest("compiler/testData/diagnostics/testsWithStdLib/contracts/dsl/errors/illegalConstructionInContractBlock.kt");
|
||||
|
||||
Reference in New Issue
Block a user