From 65ac82ee4624992b4699b3d4b3af507e68ae771a Mon Sep 17 00:00:00 2001 From: Dmitriy Novozhilov Date: Wed, 22 Jun 2022 15:24:15 +0300 Subject: [PATCH] [SAM with receiver] Add implementation for K2 --- .../kotlin/generators/tests/GenerateTests.kt | 13 ++- .../samWithReceiver/SamWithReceiverPlugin.kt | 3 + ...FirSamWithReceiverConventionTransformer.kt | 36 +++++++++ .../FirSamWithReceiverExtensionRegistrar.kt | 14 ++++ ...eceiverTest.kt => SamWithReceiverTests.kt} | 34 +++++++- .../testData/codegen/SamConstructor.kt | 17 ++++ .../testData/codegen/SamConversion.kt | 16 ++++ .../testData/diagnostics/noParameters.kt | 2 +- .../testData/diagnostics/noReturnType.kt | 6 +- .../diagnostics/samConversionNoParameters.kt | 2 +- .../diagnostics/samConversionSimple.kt | 6 +- .../samConversionSimpleWithoutAnnotation.kt | 6 +- .../testData/diagnostics/samWithAnnotation.kt | 6 +- .../diagnostics/samWithoutAnnotation.kt | 10 +-- .../testData/diagnostics/singleParameter.kt | 8 +- .../singleParameterWithoutAnnotation.kt | 6 +- .../testData/script/samConversionSimple.kts | 2 +- ...odegenTestForSamWithReceiverGenerated.java | 39 +++++++++ .../FirSamWithReceiverTestGenerated.java | 80 +++++++++++++++++++ ...odegenTestForSamWithReceiverGenerated.java | 39 +++++++++ 20 files changed, 306 insertions(+), 39 deletions(-) create mode 100644 plugins/sam-with-receiver/sam-with-receiver.k2/src/org/jetbrains/kotlin/samWithReceiver/k2/FirSamWithReceiverConventionTransformer.kt create mode 100644 plugins/sam-with-receiver/sam-with-receiver.k2/src/org/jetbrains/kotlin/samWithReceiver/k2/FirSamWithReceiverExtensionRegistrar.kt rename plugins/sam-with-receiver/test/org/jetbrains/kotlin/samWithReceiver/{AbstractSamWithReceiverTest.kt => SamWithReceiverTests.kt} (54%) create mode 100644 plugins/sam-with-receiver/testData/codegen/SamConstructor.kt create mode 100644 plugins/sam-with-receiver/testData/codegen/SamConversion.kt create mode 100644 plugins/sam-with-receiver/tests-gen/org/jetbrains/kotlin/samWithReceiver/FirBlackBoxCodegenTestForSamWithReceiverGenerated.java create mode 100644 plugins/sam-with-receiver/tests-gen/org/jetbrains/kotlin/samWithReceiver/FirSamWithReceiverTestGenerated.java create mode 100644 plugins/sam-with-receiver/tests-gen/org/jetbrains/kotlin/samWithReceiver/IrBlackBoxCodegenTestForSamWithReceiverGenerated.java diff --git a/generators/tests/org/jetbrains/kotlin/generators/tests/GenerateTests.kt b/generators/tests/org/jetbrains/kotlin/generators/tests/GenerateTests.kt index 29e415abdba..fecceb26c9a 100644 --- a/generators/tests/org/jetbrains/kotlin/generators/tests/GenerateTests.kt +++ b/generators/tests/org/jetbrains/kotlin/generators/tests/GenerateTests.kt @@ -32,9 +32,7 @@ import org.jetbrains.kotlin.kapt3.test.AbstractKotlinKaptContextTest import org.jetbrains.kotlin.lombok.* import org.jetbrains.kotlin.noarg.* import org.jetbrains.kotlin.parcelize.test.runners.* -import org.jetbrains.kotlin.samWithReceiver.AbstractSamWithReceiverScriptNewDefTest -import org.jetbrains.kotlin.samWithReceiver.AbstractSamWithReceiverScriptTest -import org.jetbrains.kotlin.samWithReceiver.AbstractSamWithReceiverTest +import org.jetbrains.kotlin.samWithReceiver.* import org.jetbrains.kotlin.test.TargetBackend import org.jetbrains.kotlinx.serialization.AbstractSerializationIrBytecodeListingTest import org.jetbrains.kotlinx.serialization.AbstractSerializationPluginBytecodeListingTest @@ -456,6 +454,15 @@ fun main(args: Array) { testClass { model("diagnostics", excludedPattern = excludedFirTestdataPattern) } + testClass { + model("diagnostics", excludedPattern = excludedFirTestdataPattern) + } + testClass { + model("codegen", excludedPattern = excludedFirTestdataPattern) + } + testClass { + model("codegen", excludedPattern = excludedFirTestdataPattern) + } } } } diff --git a/plugins/sam-with-receiver/sam-with-receiver.cli/src/org/jetbrains/kotlin/samWithReceiver/SamWithReceiverPlugin.kt b/plugins/sam-with-receiver/sam-with-receiver.cli/src/org/jetbrains/kotlin/samWithReceiver/SamWithReceiverPlugin.kt index 8fe595e1036..53ec8e4defc 100644 --- a/plugins/sam-with-receiver/sam-with-receiver.cli/src/org/jetbrains/kotlin/samWithReceiver/SamWithReceiverPlugin.kt +++ b/plugins/sam-with-receiver/sam-with-receiver.cli/src/org/jetbrains/kotlin/samWithReceiver/SamWithReceiverPlugin.kt @@ -13,6 +13,7 @@ import org.jetbrains.kotlin.container.StorageComponentContainer import org.jetbrains.kotlin.container.useInstance import org.jetbrains.kotlin.descriptors.ModuleDescriptor import org.jetbrains.kotlin.extensions.StorageComponentContainerContributor +import org.jetbrains.kotlin.fir.extensions.FirExtensionRegistrarAdapter import org.jetbrains.kotlin.platform.TargetPlatform import org.jetbrains.kotlin.platform.jvm.isJvm import org.jetbrains.kotlin.samWithReceiver.SamWithReceiverPluginNames.SUPPORTED_PRESETS @@ -21,6 +22,7 @@ import org.jetbrains.kotlin.samWithReceiver.SamWithReceiverConfigurationKeys.PRE import org.jetbrains.kotlin.samWithReceiver.SamWithReceiverPluginNames.ANNOTATION_OPTION_NAME import org.jetbrains.kotlin.samWithReceiver.SamWithReceiverPluginNames.PLUGIN_ID import org.jetbrains.kotlin.samWithReceiver.SamWithReceiverPluginNames.PRESET_OPTION_NAME +import org.jetbrains.kotlin.samWithReceiver.k2.FirSamWithReceiverExtensionRegistrar object SamWithReceiverConfigurationKeys { val ANNOTATION: CompilerConfigurationKey> = CompilerConfigurationKey.create("annotation qualified name") @@ -60,6 +62,7 @@ class SamWithReceiverComponentRegistrar : ComponentRegistrar { if (annotations.isEmpty()) return StorageComponentContainerContributor.registerExtension(project, CliSamWithReceiverComponentContributor(annotations)) + FirExtensionRegistrarAdapter.registerExtension(project, FirSamWithReceiverExtensionRegistrar(annotations)) } } diff --git a/plugins/sam-with-receiver/sam-with-receiver.k2/src/org/jetbrains/kotlin/samWithReceiver/k2/FirSamWithReceiverConventionTransformer.kt b/plugins/sam-with-receiver/sam-with-receiver.k2/src/org/jetbrains/kotlin/samWithReceiver/k2/FirSamWithReceiverConventionTransformer.kt new file mode 100644 index 00000000000..ccc6fce5fc4 --- /dev/null +++ b/plugins/sam-with-receiver/sam-with-receiver.k2/src/org/jetbrains/kotlin/samWithReceiver/k2/FirSamWithReceiverConventionTransformer.kt @@ -0,0 +1,36 @@ +/* + * Copyright 2010-2022 JetBrains s.r.o. and Kotlin Programming Language contributors. + * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. + */ + +package org.jetbrains.kotlin.samWithReceiver.k2 + +import org.jetbrains.kotlin.fir.FirSession +import org.jetbrains.kotlin.fir.containingClass +import org.jetbrains.kotlin.fir.declarations.FirSimpleFunction +import org.jetbrains.kotlin.fir.declarations.utils.isSuspend +import org.jetbrains.kotlin.fir.resolve.FirSamConversionTransformerExtension +import org.jetbrains.kotlin.fir.resolve.createFunctionalType +import org.jetbrains.kotlin.fir.resolve.toFirRegularClassSymbol +import org.jetbrains.kotlin.fir.types.ConeLookupTagBasedType +import org.jetbrains.kotlin.fir.types.coneType +import org.jetbrains.kotlin.utils.addToStdlib.runIf + +class FirSamWithReceiverConventionTransformer( + private val annotations: List, + session: FirSession +) : FirSamConversionTransformerExtension(session) { + override fun getCustomFunctionalTypeForSamConversion(function: FirSimpleFunction): ConeLookupTagBasedType? { + val containingClassSymbol = function.containingClass()?.toFirRegularClassSymbol(session) ?: return null + return runIf(containingClassSymbol.resolvedAnnotationClassIds.any { it.asSingleFqName().asString() in annotations }) { + val parameterTypes = function.valueParameters.map { it.returnTypeRef.coneType } + if (parameterTypes.isEmpty()) return null + createFunctionalType( + parameters = parameterTypes.subList(1, parameterTypes.size), + receiverType = parameterTypes[0], + rawReturnType = function.returnTypeRef.coneType, + isSuspend = function.isSuspend + ) + } + } +} diff --git a/plugins/sam-with-receiver/sam-with-receiver.k2/src/org/jetbrains/kotlin/samWithReceiver/k2/FirSamWithReceiverExtensionRegistrar.kt b/plugins/sam-with-receiver/sam-with-receiver.k2/src/org/jetbrains/kotlin/samWithReceiver/k2/FirSamWithReceiverExtensionRegistrar.kt new file mode 100644 index 00000000000..34e9f35c2ad --- /dev/null +++ b/plugins/sam-with-receiver/sam-with-receiver.k2/src/org/jetbrains/kotlin/samWithReceiver/k2/FirSamWithReceiverExtensionRegistrar.kt @@ -0,0 +1,14 @@ +/* + * Copyright 2010-2022 JetBrains s.r.o. and Kotlin Programming Language contributors. + * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. + */ + +package org.jetbrains.kotlin.samWithReceiver.k2 + +import org.jetbrains.kotlin.fir.extensions.FirExtensionRegistrar + +class FirSamWithReceiverExtensionRegistrar(private val annotations: List) : FirExtensionRegistrar() { + override fun ExtensionRegistrarContext.configurePlugin() { + +::FirSamWithReceiverConventionTransformer.bind(annotations) + } +} diff --git a/plugins/sam-with-receiver/test/org/jetbrains/kotlin/samWithReceiver/AbstractSamWithReceiverTest.kt b/plugins/sam-with-receiver/test/org/jetbrains/kotlin/samWithReceiver/SamWithReceiverTests.kt similarity index 54% rename from plugins/sam-with-receiver/test/org/jetbrains/kotlin/samWithReceiver/AbstractSamWithReceiverTest.kt rename to plugins/sam-with-receiver/test/org/jetbrains/kotlin/samWithReceiver/SamWithReceiverTests.kt index 2718b42950f..6b269f72b75 100644 --- a/plugins/sam-with-receiver/test/org/jetbrains/kotlin/samWithReceiver/AbstractSamWithReceiverTest.kt +++ b/plugins/sam-with-receiver/test/org/jetbrains/kotlin/samWithReceiver/SamWithReceiverTests.kt @@ -8,14 +8,19 @@ package org.jetbrains.kotlin.samWithReceiver import com.intellij.openapi.project.Project import org.jetbrains.kotlin.config.CompilerConfiguration import org.jetbrains.kotlin.extensions.StorageComponentContainerContributor +import org.jetbrains.kotlin.fir.extensions.FirExtensionRegistrarAdapter +import org.jetbrains.kotlin.samWithReceiver.k2.FirSamWithReceiverExtensionRegistrar import org.jetbrains.kotlin.test.builders.TestConfigurationBuilder -import org.jetbrains.kotlin.test.directives.DiagnosticsDirectives -import org.jetbrains.kotlin.test.directives.DiagnosticsDirectives.DIAGNOSTICS import org.jetbrains.kotlin.test.model.TestModule import org.jetbrains.kotlin.test.runners.AbstractDiagnosticTest +import org.jetbrains.kotlin.test.runners.AbstractFirDiagnosticTest +import org.jetbrains.kotlin.test.runners.codegen.AbstractFirBlackBoxCodegenTest +import org.jetbrains.kotlin.test.runners.codegen.AbstractIrBlackBoxCodegenTest import org.jetbrains.kotlin.test.services.EnvironmentConfigurator import org.jetbrains.kotlin.test.services.TestServices +// ------------------------ diagnostics ------------------------ + abstract class AbstractSamWithReceiverTest : AbstractDiagnosticTest() { override fun configure(builder: TestConfigurationBuilder) { super.configure(builder) @@ -23,6 +28,29 @@ abstract class AbstractSamWithReceiverTest : AbstractDiagnosticTest() { } } +abstract class AbstractFirSamWithReceiverTest : AbstractFirDiagnosticTest() { + override fun configure(builder: TestConfigurationBuilder) { + super.configure(builder) + builder.configurePlugin() + } +} + +// ------------------------ codegen ------------------------ + +open class AbstractIrBlackBoxCodegenTestForSamWithReceiver : AbstractIrBlackBoxCodegenTest() { + override fun configure(builder: TestConfigurationBuilder) { + super.configure(builder) + builder.configurePlugin() + } +} + +open class AbstractFirBlackBoxCodegenTestForSamWithReceiver : AbstractFirBlackBoxCodegenTest() { + override fun configure(builder: TestConfigurationBuilder) { + super.configure(builder) + builder.configurePlugin() + } +} + fun TestConfigurationBuilder.configurePlugin() { useConfigurators(::SamWithReceiverEnvironmentConfigurator) } @@ -37,5 +65,7 @@ class SamWithReceiverEnvironmentConfigurator(testServices: TestServices) : Envir project, CliSamWithReceiverComponentContributor(TEST_ANNOTATIONS) ) + + FirExtensionRegistrarAdapter.registerExtension(project, FirSamWithReceiverExtensionRegistrar(TEST_ANNOTATIONS)) } } diff --git a/plugins/sam-with-receiver/testData/codegen/SamConstructor.kt b/plugins/sam-with-receiver/testData/codegen/SamConstructor.kt new file mode 100644 index 00000000000..ccd81cd029d --- /dev/null +++ b/plugins/sam-with-receiver/testData/codegen/SamConstructor.kt @@ -0,0 +1,17 @@ +// FILE: Sam.java +@SamWithReceiver +public interface Sam { + String run(String argument); +} + +// FILE: test.kt +annotation class SamWithReceiver + +fun takeSam(argument: String, sam: Sam): String { + return sam.run(argument) +} + +fun box(): String { + val sam = Sam { this } + return takeSam("OK", sam) +} diff --git a/plugins/sam-with-receiver/testData/codegen/SamConversion.kt b/plugins/sam-with-receiver/testData/codegen/SamConversion.kt new file mode 100644 index 00000000000..c0d8edfeab2 --- /dev/null +++ b/plugins/sam-with-receiver/testData/codegen/SamConversion.kt @@ -0,0 +1,16 @@ +// FILE: Sam.java +@SamWithReceiver +public interface Sam { + String run(String argument); +} + +// FILE: test.kt +annotation class SamWithReceiver + +fun takeSam(argument: String, sam: Sam): String { + return sam.run(argument) +} + +fun box(): String { + return takeSam("OK") { this } +} diff --git a/plugins/sam-with-receiver/testData/diagnostics/noParameters.kt b/plugins/sam-with-receiver/testData/diagnostics/noParameters.kt index fe52563f9bf..d545f204117 100644 --- a/plugins/sam-with-receiver/testData/diagnostics/noParameters.kt +++ b/plugins/sam-with-receiver/testData/diagnostics/noParameters.kt @@ -1,6 +1,6 @@ // FIR_IDENTICAL -// FILE: Sam.java +// FILE: SamConstructor.kt @SamWithReceiver public interface Sam { void run(); diff --git a/plugins/sam-with-receiver/testData/diagnostics/noReturnType.kt b/plugins/sam-with-receiver/testData/diagnostics/noReturnType.kt index 897d4e710e7..ead3e06f959 100644 --- a/plugins/sam-with-receiver/testData/diagnostics/noReturnType.kt +++ b/plugins/sam-with-receiver/testData/diagnostics/noReturnType.kt @@ -1,6 +1,4 @@ -// FIR_IDENTICAL - -// FILE: Sam.java +// FILE: SamConstructor.kt @SamWithReceiver public interface Sam { void run(String a, String b); @@ -10,7 +8,7 @@ public interface Sam { annotation class SamWithReceiver fun test() { - Sam { a, b -> + Sam { a, b -> System.out.println(a) } diff --git a/plugins/sam-with-receiver/testData/diagnostics/samConversionNoParameters.kt b/plugins/sam-with-receiver/testData/diagnostics/samConversionNoParameters.kt index f62da5b5e78..4a694901e04 100644 --- a/plugins/sam-with-receiver/testData/diagnostics/samConversionNoParameters.kt +++ b/plugins/sam-with-receiver/testData/diagnostics/samConversionNoParameters.kt @@ -1,6 +1,6 @@ // FIR_IDENTICAL -// FILE: Sam.java +// FILE: SamConstructor.kt @SamWithReceiver public interface Sam { void run(); diff --git a/plugins/sam-with-receiver/testData/diagnostics/samConversionSimple.kt b/plugins/sam-with-receiver/testData/diagnostics/samConversionSimple.kt index 9c7f4f7277d..44fc9cc25cf 100644 --- a/plugins/sam-with-receiver/testData/diagnostics/samConversionSimple.kt +++ b/plugins/sam-with-receiver/testData/diagnostics/samConversionSimple.kt @@ -1,6 +1,4 @@ -// FIR_IDENTICAL - -// FILE: Sam.java +// FILE: SamConstructor.kt @SamWithReceiver public interface Sam { void run(String a); @@ -17,6 +15,6 @@ annotation class SamWithReceiver fun test() { val e = Exec() - e.exec { a -> System.out.println(a) } + e.exec { a -> System.out.println(a) } e.exec { System.out.println(this) } } diff --git a/plugins/sam-with-receiver/testData/diagnostics/samConversionSimpleWithoutAnnotation.kt b/plugins/sam-with-receiver/testData/diagnostics/samConversionSimpleWithoutAnnotation.kt index d25879c0b63..692ccecab3f 100644 --- a/plugins/sam-with-receiver/testData/diagnostics/samConversionSimpleWithoutAnnotation.kt +++ b/plugins/sam-with-receiver/testData/diagnostics/samConversionSimpleWithoutAnnotation.kt @@ -1,6 +1,4 @@ -// FIR_IDENTICAL - -// FILE: Sam.java +// FILE: SamConstructor.kt public interface Sam { void run(String a); } @@ -15,5 +13,5 @@ fun test() { val e = Exec() e.exec { a -> System.out.println(a) } - e.exec { System.out.println(this) } + e.exec { System.out.println(this) } } diff --git a/plugins/sam-with-receiver/testData/diagnostics/samWithAnnotation.kt b/plugins/sam-with-receiver/testData/diagnostics/samWithAnnotation.kt index 13a98a745b4..62c4e69e065 100644 --- a/plugins/sam-with-receiver/testData/diagnostics/samWithAnnotation.kt +++ b/plugins/sam-with-receiver/testData/diagnostics/samWithAnnotation.kt @@ -1,6 +1,4 @@ -// FIR_IDENTICAL - -// FILE: Sam.java +// FILE: SamConstructor.kt @SamWithReceiver public interface Sam { String run(String a, String b); @@ -10,7 +8,7 @@ public interface Sam { annotation class SamWithReceiver fun test() { - Sam { a, b -> + Sam { a, b -> System.out.println(a) "" } diff --git a/plugins/sam-with-receiver/testData/diagnostics/samWithoutAnnotation.kt b/plugins/sam-with-receiver/testData/diagnostics/samWithoutAnnotation.kt index 9f058e9c8ab..61df99eefd7 100644 --- a/plugins/sam-with-receiver/testData/diagnostics/samWithoutAnnotation.kt +++ b/plugins/sam-with-receiver/testData/diagnostics/samWithoutAnnotation.kt @@ -1,6 +1,4 @@ -// FIR_IDENTICAL - -// FILE: Sam.java +// FILE: SamConstructor.kt public interface Sam { String run(String a, String b); } @@ -12,9 +10,9 @@ fun test() { "" } - Sam { b -> - val a = this@Sam - System.out.println(a) + Sam { b -> + val a = this@Sam + System.out.println(a) "" } } diff --git a/plugins/sam-with-receiver/testData/diagnostics/singleParameter.kt b/plugins/sam-with-receiver/testData/diagnostics/singleParameter.kt index 190cfe2bfd3..9d4d8405689 100644 --- a/plugins/sam-with-receiver/testData/diagnostics/singleParameter.kt +++ b/plugins/sam-with-receiver/testData/diagnostics/singleParameter.kt @@ -1,6 +1,4 @@ -// FIR_IDENTICAL - -// FILE: Sam.java +// FILE: SamConstructor.kt @SamWithReceiver public interface Sam { void run(String a); @@ -10,8 +8,8 @@ public interface Sam { annotation class SamWithReceiver fun test() { - Sam { a -> - System.out.println(a) + Sam { a -> + System.out.println(a) } Sam { diff --git a/plugins/sam-with-receiver/testData/diagnostics/singleParameterWithoutAnnotation.kt b/plugins/sam-with-receiver/testData/diagnostics/singleParameterWithoutAnnotation.kt index 90ca8bb297a..b186637d32d 100644 --- a/plugins/sam-with-receiver/testData/diagnostics/singleParameterWithoutAnnotation.kt +++ b/plugins/sam-with-receiver/testData/diagnostics/singleParameterWithoutAnnotation.kt @@ -1,6 +1,4 @@ -// FIR_IDENTICAL - -// FILE: Sam.java +// FILE: SamConstructor.kt public interface Sam { void run(String a); } @@ -13,6 +11,6 @@ fun test() { Sam { val a = this - System.out.println(a) + System.out.println(a) } } diff --git a/plugins/sam-with-receiver/testData/script/samConversionSimple.kts b/plugins/sam-with-receiver/testData/script/samConversionSimple.kts index 3f41451c051..f7f31351e60 100644 --- a/plugins/sam-with-receiver/testData/script/samConversionSimple.kts +++ b/plugins/sam-with-receiver/testData/script/samConversionSimple.kts @@ -8,7 +8,7 @@ import java.lang.annotation.RetentionPolicy; public @interface SamWithReceiver1 { } -// FILE: Sam.java +// FILE: SamConstructor.kt @SamWithReceiver1 public interface Sam { void run(String a, String b); diff --git a/plugins/sam-with-receiver/tests-gen/org/jetbrains/kotlin/samWithReceiver/FirBlackBoxCodegenTestForSamWithReceiverGenerated.java b/plugins/sam-with-receiver/tests-gen/org/jetbrains/kotlin/samWithReceiver/FirBlackBoxCodegenTestForSamWithReceiverGenerated.java new file mode 100644 index 00000000000..a7b84f9983f --- /dev/null +++ b/plugins/sam-with-receiver/tests-gen/org/jetbrains/kotlin/samWithReceiver/FirBlackBoxCodegenTestForSamWithReceiverGenerated.java @@ -0,0 +1,39 @@ +/* + * Copyright 2010-2021 JetBrains s.r.o. and Kotlin Programming Language contributors. + * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. + */ + +package org.jetbrains.kotlin.samWithReceiver; + +import com.intellij.testFramework.TestDataPath; +import org.jetbrains.kotlin.test.util.KtTestUtil; +import org.jetbrains.kotlin.test.TargetBackend; +import org.jetbrains.kotlin.test.TestMetadata; +import org.junit.jupiter.api.Nested; +import org.junit.jupiter.api.Test; + +import java.io.File; +import java.util.regex.Pattern; + +/** This class is generated by {@link GenerateNewCompilerTests.kt}. DO NOT MODIFY MANUALLY */ +@SuppressWarnings("all") +@TestMetadata("plugins/sam-with-receiver/testData/codegen") +@TestDataPath("$PROJECT_ROOT") +public class FirBlackBoxCodegenTestForSamWithReceiverGenerated extends AbstractFirBlackBoxCodegenTestForSamWithReceiver { + @Test + public void testAllFilesPresentInCodegen() throws Exception { + KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("plugins/sam-with-receiver/testData/codegen"), Pattern.compile("^(.+)\\.kt$"), Pattern.compile("^(.+)\\.fir\\.kts?$"), TargetBackend.JVM_IR, true); + } + + @Test + @TestMetadata("SamConstructor.kt") + public void testSamConstructor() throws Exception { + runTest("plugins/sam-with-receiver/testData/codegen/SamConstructor.kt"); + } + + @Test + @TestMetadata("SamConversion.kt") + public void testSamConversion() throws Exception { + runTest("plugins/sam-with-receiver/testData/codegen/SamConversion.kt"); + } +} diff --git a/plugins/sam-with-receiver/tests-gen/org/jetbrains/kotlin/samWithReceiver/FirSamWithReceiverTestGenerated.java b/plugins/sam-with-receiver/tests-gen/org/jetbrains/kotlin/samWithReceiver/FirSamWithReceiverTestGenerated.java new file mode 100644 index 00000000000..7ad2f02fd8e --- /dev/null +++ b/plugins/sam-with-receiver/tests-gen/org/jetbrains/kotlin/samWithReceiver/FirSamWithReceiverTestGenerated.java @@ -0,0 +1,80 @@ +/* + * Copyright 2010-2021 JetBrains s.r.o. and Kotlin Programming Language contributors. + * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. + */ + +package org.jetbrains.kotlin.samWithReceiver; + +import com.intellij.testFramework.TestDataPath; +import org.jetbrains.kotlin.test.util.KtTestUtil; +import org.jetbrains.kotlin.test.TestMetadata; +import org.junit.jupiter.api.Nested; +import org.junit.jupiter.api.Test; + +import java.io.File; +import java.util.regex.Pattern; + +/** This class is generated by {@link GenerateNewCompilerTests.kt}. DO NOT MODIFY MANUALLY */ +@SuppressWarnings("all") +@TestMetadata("plugins/sam-with-receiver/testData/diagnostics") +@TestDataPath("$PROJECT_ROOT") +public class FirSamWithReceiverTestGenerated extends AbstractFirSamWithReceiverTest { + @Test + public void testAllFilesPresentInDiagnostics() throws Exception { + KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("plugins/sam-with-receiver/testData/diagnostics"), Pattern.compile("^(.+)\\.kt$"), Pattern.compile("^(.+)\\.fir\\.kts?$"), true); + } + + @Test + @TestMetadata("noParameters.kt") + public void testNoParameters() throws Exception { + runTest("plugins/sam-with-receiver/testData/diagnostics/noParameters.kt"); + } + + @Test + @TestMetadata("noReturnType.kt") + public void testNoReturnType() throws Exception { + runTest("plugins/sam-with-receiver/testData/diagnostics/noReturnType.kt"); + } + + @Test + @TestMetadata("samConversionNoParameters.kt") + public void testSamConversionNoParameters() throws Exception { + runTest("plugins/sam-with-receiver/testData/diagnostics/samConversionNoParameters.kt"); + } + + @Test + @TestMetadata("samConversionSimple.kt") + public void testSamConversionSimple() throws Exception { + runTest("plugins/sam-with-receiver/testData/diagnostics/samConversionSimple.kt"); + } + + @Test + @TestMetadata("samConversionSimpleWithoutAnnotation.kt") + public void testSamConversionSimpleWithoutAnnotation() throws Exception { + runTest("plugins/sam-with-receiver/testData/diagnostics/samConversionSimpleWithoutAnnotation.kt"); + } + + @Test + @TestMetadata("samWithAnnotation.kt") + public void testSamWithAnnotation() throws Exception { + runTest("plugins/sam-with-receiver/testData/diagnostics/samWithAnnotation.kt"); + } + + @Test + @TestMetadata("samWithoutAnnotation.kt") + public void testSamWithoutAnnotation() throws Exception { + runTest("plugins/sam-with-receiver/testData/diagnostics/samWithoutAnnotation.kt"); + } + + @Test + @TestMetadata("singleParameter.kt") + public void testSingleParameter() throws Exception { + runTest("plugins/sam-with-receiver/testData/diagnostics/singleParameter.kt"); + } + + @Test + @TestMetadata("singleParameterWithoutAnnotation.kt") + public void testSingleParameterWithoutAnnotation() throws Exception { + runTest("plugins/sam-with-receiver/testData/diagnostics/singleParameterWithoutAnnotation.kt"); + } +} diff --git a/plugins/sam-with-receiver/tests-gen/org/jetbrains/kotlin/samWithReceiver/IrBlackBoxCodegenTestForSamWithReceiverGenerated.java b/plugins/sam-with-receiver/tests-gen/org/jetbrains/kotlin/samWithReceiver/IrBlackBoxCodegenTestForSamWithReceiverGenerated.java new file mode 100644 index 00000000000..1385818da60 --- /dev/null +++ b/plugins/sam-with-receiver/tests-gen/org/jetbrains/kotlin/samWithReceiver/IrBlackBoxCodegenTestForSamWithReceiverGenerated.java @@ -0,0 +1,39 @@ +/* + * Copyright 2010-2021 JetBrains s.r.o. and Kotlin Programming Language contributors. + * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. + */ + +package org.jetbrains.kotlin.samWithReceiver; + +import com.intellij.testFramework.TestDataPath; +import org.jetbrains.kotlin.test.util.KtTestUtil; +import org.jetbrains.kotlin.test.TargetBackend; +import org.jetbrains.kotlin.test.TestMetadata; +import org.junit.jupiter.api.Nested; +import org.junit.jupiter.api.Test; + +import java.io.File; +import java.util.regex.Pattern; + +/** This class is generated by {@link GenerateNewCompilerTests.kt}. DO NOT MODIFY MANUALLY */ +@SuppressWarnings("all") +@TestMetadata("plugins/sam-with-receiver/testData/codegen") +@TestDataPath("$PROJECT_ROOT") +public class IrBlackBoxCodegenTestForSamWithReceiverGenerated extends AbstractIrBlackBoxCodegenTestForSamWithReceiver { + @Test + public void testAllFilesPresentInCodegen() throws Exception { + KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("plugins/sam-with-receiver/testData/codegen"), Pattern.compile("^(.+)\\.kt$"), Pattern.compile("^(.+)\\.fir\\.kts?$"), TargetBackend.JVM_IR, true); + } + + @Test + @TestMetadata("SamConstructor.kt") + public void testSamConstructor() throws Exception { + runTest("plugins/sam-with-receiver/testData/codegen/SamConstructor.kt"); + } + + @Test + @TestMetadata("SamConversion.kt") + public void testSamConversion() throws Exception { + runTest("plugins/sam-with-receiver/testData/codegen/SamConversion.kt"); + } +}