Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
package org.jetbrains.kotlin.compiler.plugin.template.runners

import org.jetbrains.kotlin.compiler.plugin.template.services.ExtensionRegistrarConfigurator
import org.jetbrains.kotlin.compiler.plugin.template.services.PluginAnnotationsProvider
import org.jetbrains.kotlin.compiler.plugin.template.services.configurePlugin
import org.jetbrains.kotlin.test.FirParser
import org.jetbrains.kotlin.test.builders.TestConfigurationBuilder
import org.jetbrains.kotlin.test.directives.CodegenTestDirectives
Expand All @@ -16,33 +15,27 @@ open class AbstractJvmBoxTest : AbstractFirBlackBoxCodegenTestBase(FirParser.Lig
return EnvironmentBasedStandardLibrariesPathProvider
}

override fun configure(builder: TestConfigurationBuilder) {
super.configure(builder)
override fun configure(builder: TestConfigurationBuilder) = with(builder) {
super.configure(this)
/*
* Containers of different directives, which can be used in tests:
* - ModuleStructureDirectives
* - LanguageSettingsDirectives
* - DiagnosticsDirectives
* - FirDiagnosticsDirectives
* - CodegenTestDirectives
* - JvmEnvironmentConfigurationDirectives
*
* All of them are located in `org.jetbrains.kotlin.test.directives` package
*/
defaultDirectives {
+CodegenTestDirectives.DUMP_IR
+FirDiagnosticsDirectives.FIR_DUMP
+JvmEnvironmentConfigurationDirectives.FULL_JDK

with(builder) {
/*
* Containers of different directives, which can be used in tests:
* - ModuleStructureDirectives
* - LanguageSettingsDirectives
* - DiagnosticsDirectives
* - FirDiagnosticsDirectives
* - CodegenTestDirectives
* - JvmEnvironmentConfigurationDirectives
*
* All of them are located in `org.jetbrains.kotlin.test.directives` package
*/
defaultDirectives {
+CodegenTestDirectives.DUMP_IR
+FirDiagnosticsDirectives.FIR_DUMP
+JvmEnvironmentConfigurationDirectives.FULL_JDK

+CodegenTestDirectives.IGNORE_DEXING // Avoids loading R8 from the classpath.
}

useConfigurators(
::PluginAnnotationsProvider,
::ExtensionRegistrarConfigurator
)
+CodegenTestDirectives.IGNORE_DEXING // Avoids loading R8 from the classpath.
}

configurePlugin()
}
}
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
package org.jetbrains.kotlin.compiler.plugin.template.runners

import org.jetbrains.kotlin.compiler.plugin.template.services.ExtensionRegistrarConfigurator
import org.jetbrains.kotlin.compiler.plugin.template.services.PluginAnnotationsProvider
import org.jetbrains.kotlin.compiler.plugin.template.services.configurePlugin
import org.jetbrains.kotlin.test.FirParser
import org.jetbrains.kotlin.test.builders.TestConfigurationBuilder
import org.jetbrains.kotlin.test.directives.CodegenTestDirectives
Expand All @@ -16,31 +15,25 @@ open class AbstractJvmDiagnosticTest : AbstractFirPhasedDiagnosticTest(FirParser
return EnvironmentBasedStandardLibrariesPathProvider
}

override fun configure(builder: TestConfigurationBuilder) {
override fun configure(builder: TestConfigurationBuilder) = with(builder) {
super.configure(builder)
/*
* Containers of different directives, which can be used in tests:
* - ModuleStructureDirectives
* - LanguageSettingsDirectives
* - DiagnosticsDirectives
* - FirDiagnosticsDirectives
*
* All of them are located in `org.jetbrains.kotlin.test.directives` package
*/
defaultDirectives {
+FirDiagnosticsDirectives.FIR_DUMP
+FirDiagnosticsDirectives.DISABLE_GENERATED_FIR_TAGS
+JvmEnvironmentConfigurationDirectives.FULL_JDK

with(builder) {
/*
* Containers of different directives, which can be used in tests:
* - ModuleStructureDirectives
* - LanguageSettingsDirectives
* - DiagnosticsDirectives
* - FirDiagnosticsDirectives
*
* All of them are located in `org.jetbrains.kotlin.test.directives` package
*/
defaultDirectives {
+FirDiagnosticsDirectives.FIR_DUMP
+FirDiagnosticsDirectives.DISABLE_GENERATED_FIR_TAGS
+JvmEnvironmentConfigurationDirectives.FULL_JDK

+CodegenTestDirectives.IGNORE_DEXING // Avoids loading R8 from the classpath.
}

useConfigurators(
::PluginAnnotationsProvider,
::ExtensionRegistrarConfigurator
)
+CodegenTestDirectives.IGNORE_DEXING // Avoids loading R8 from the classpath.
}

configurePlugin()
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -6,11 +6,17 @@ import org.jetbrains.kotlin.compiler.plugin.template.SimplePluginRegistrar
import org.jetbrains.kotlin.compiler.plugin.template.ir.SimpleIrGenerationExtension
import org.jetbrains.kotlin.config.CompilerConfiguration
import org.jetbrains.kotlin.fir.extensions.FirExtensionRegistrarAdapter
import org.jetbrains.kotlin.test.builders.TestConfigurationBuilder
import org.jetbrains.kotlin.test.model.TestModule
import org.jetbrains.kotlin.test.services.EnvironmentConfigurator
import org.jetbrains.kotlin.test.services.TestServices

class ExtensionRegistrarConfigurator(testServices: TestServices) : EnvironmentConfigurator(testServices) {
fun TestConfigurationBuilder.configurePlugin() {
useConfigurators(::ExtensionRegistrarConfigurator)
configureAnnotations()
}

private class ExtensionRegistrarConfigurator(testServices: TestServices) : EnvironmentConfigurator(testServices) {
override fun CompilerPluginRegistrar.ExtensionStorage.registerCompilerExtensions(
module: TestModule,
configuration: CompilerConfiguration
Expand Down
Original file line number Diff line number Diff line change
@@ -1,22 +1,29 @@
package org.jetbrains.kotlin.compiler.plugin.template.services

import org.jetbrains.kotlin.cli.jvm.config.addJvmClasspathRoot
import org.jetbrains.kotlin.cli.jvm.config.addJvmClasspathRoots
import org.jetbrains.kotlin.config.CompilerConfiguration
import org.jetbrains.kotlin.test.builders.TestConfigurationBuilder
import org.jetbrains.kotlin.test.model.TestModule
import org.jetbrains.kotlin.test.services.EnvironmentConfigurator
import org.jetbrains.kotlin.test.services.RuntimeClasspathProvider
import org.jetbrains.kotlin.test.services.TestServices
import java.io.File

class PluginAnnotationsProvider(testServices: TestServices) : EnvironmentConfigurator(testServices) {
companion object {
private val annotationsRuntimeClasspath =
System.getProperty("annotationsRuntime.classpath")?.split(File.pathSeparator)?.map(::File)
?: error("Unable to get a valid classpath from 'annotationsRuntime.classpath' property")
}
private val annotationsRuntimeClasspath =
System.getProperty("annotationsRuntime.classpath")?.split(File.pathSeparator)?.map(::File)
?: error("Unable to get a valid classpath from 'annotationsRuntime.classpath' property")

fun TestConfigurationBuilder.configureAnnotations() {
useConfigurators(::PluginAnnotationsProvider)
useCustomRuntimeClasspathProviders(::PluginAnnotationsClasspathProvider)
}

private class PluginAnnotationsProvider(testServices: TestServices) : EnvironmentConfigurator(testServices) {
override fun configureCompilerConfiguration(configuration: CompilerConfiguration, module: TestModule) {
for (file in annotationsRuntimeClasspath) {
configuration.addJvmClasspathRoot(file)
}
configuration.addJvmClasspathRoots(annotationsRuntimeClasspath)
}
}

private class PluginAnnotationsClasspathProvider(testServices: TestServices) : RuntimeClasspathProvider(testServices) {
override fun runtimeClassPaths(module: TestModule) = annotationsRuntimeClasspath
}
Loading