diff --git a/compiler/testData/diagnostics/tests/extensions/contextReceivers/contextReceiverTypeParamsUsageError.fir.kt b/compiler/testData/diagnostics/tests/extensions/contextReceivers/contextReceiverTypeParamsUsageError.fir.kt new file mode 100644 index 00000000000..e5eca1183f7 --- /dev/null +++ b/compiler/testData/diagnostics/tests/extensions/contextReceivers/contextReceiverTypeParamsUsageError.fir.kt @@ -0,0 +1,5 @@ +fun f(t: @ContextFunctionTypeParams(42) T, tt: @ContextFunctionTypeParams(1) Int) {} + +fun test() { + val f: @ContextFunctionTypeParams(1) @ExtensionFunctionType (Int, String) -> Unit = {} +} \ No newline at end of file diff --git a/compiler/testData/diagnostics/tests/extensions/contextReceivers/contextReceiverTypeParamsUsageError.kt b/compiler/testData/diagnostics/tests/extensions/contextReceivers/contextReceiverTypeParamsUsageError.kt index dc0a1c5ebc4..679fbd397d8 100644 --- a/compiler/testData/diagnostics/tests/extensions/contextReceivers/contextReceiverTypeParamsUsageError.kt +++ b/compiler/testData/diagnostics/tests/extensions/contextReceivers/contextReceiverTypeParamsUsageError.kt @@ -1,5 +1,3 @@ -// FIR_IDENTICAL - fun f(t: @ContextFunctionTypeParams(42) T, tt: @ContextFunctionTypeParams(1) Int) {} fun test() { diff --git a/compiler/testData/diagnostics/tests/extensions/contextReceivers/fromKEEP/autoCloseScope.fir.kt b/compiler/testData/diagnostics/tests/extensions/contextReceivers/fromKEEP/autoCloseScope.fir.kt new file mode 100644 index 00000000000..e05ceacec80 --- /dev/null +++ b/compiler/testData/diagnostics/tests/extensions/contextReceivers/fromKEEP/autoCloseScope.fir.kt @@ -0,0 +1,34 @@ +// !LANGUAGE: +ContextReceivers + +class File(name: String) +interface InputStream + +interface AutoCloseScope { + fun defer(closeBlock: () -> Unit) + fun close() +} +class AutoCloseScopeImpl : AutoCloseScope { + override fun defer(closeBlock: () -> Unit) = TODO() + override fun close() = TODO() +} + +context(AutoCloseScope) +fun File.open(): InputStream = TODO() + +fun withAutoClose(block: context(AutoCloseScope) () -> Unit) { + val scope = AutoCloseScopeImpl() // Not shown here + try { + with(scope) { block() } + } finally { + scope.close() + } +} + +fun test() { + withAutoClose { + val input = File("input.txt").open() + val config = File("config.txt").open() + // Work + // All files are closed at the end + } +} \ No newline at end of file diff --git a/compiler/testData/diagnostics/tests/extensions/contextReceivers/fromKEEP/autoCloseScope.kt b/compiler/testData/diagnostics/tests/extensions/contextReceivers/fromKEEP/autoCloseScope.kt index 0c9e9bd397c..41151bf40e7 100644 --- a/compiler/testData/diagnostics/tests/extensions/contextReceivers/fromKEEP/autoCloseScope.kt +++ b/compiler/testData/diagnostics/tests/extensions/contextReceivers/fromKEEP/autoCloseScope.kt @@ -1,5 +1,4 @@ // !LANGUAGE: +ContextReceivers -// FIR_IDENTICAL class File(name: String) interface InputStream