Skip to content

Commit 3b88a91

Browse files
authored
Merge pull request #29 from kyay10/runtime-annotations
Add PluginRuntimeAnnotationsProvider
2 parents ad82564 + ac01ff3 commit 3b88a91

File tree

4 files changed

+63
-64
lines changed

4 files changed

+63
-64
lines changed
Lines changed: 21 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
package org.jetbrains.kotlin.compiler.plugin.template.runners
22

3-
import org.jetbrains.kotlin.compiler.plugin.template.services.ExtensionRegistrarConfigurator
4-
import org.jetbrains.kotlin.compiler.plugin.template.services.PluginAnnotationsProvider
3+
import org.jetbrains.kotlin.compiler.plugin.template.services.configurePlugin
54
import org.jetbrains.kotlin.test.FirParser
65
import org.jetbrains.kotlin.test.builders.TestConfigurationBuilder
76
import org.jetbrains.kotlin.test.directives.CodegenTestDirectives
@@ -16,33 +15,27 @@ open class AbstractJvmBoxTest : AbstractFirBlackBoxCodegenTestBase(FirParser.Lig
1615
return EnvironmentBasedStandardLibrariesPathProvider
1716
}
1817

19-
override fun configure(builder: TestConfigurationBuilder) {
20-
super.configure(builder)
18+
override fun configure(builder: TestConfigurationBuilder) = with(builder) {
19+
super.configure(this)
20+
/*
21+
* Containers of different directives, which can be used in tests:
22+
* - ModuleStructureDirectives
23+
* - LanguageSettingsDirectives
24+
* - DiagnosticsDirectives
25+
* - FirDiagnosticsDirectives
26+
* - CodegenTestDirectives
27+
* - JvmEnvironmentConfigurationDirectives
28+
*
29+
* All of them are located in `org.jetbrains.kotlin.test.directives` package
30+
*/
31+
defaultDirectives {
32+
+CodegenTestDirectives.DUMP_IR
33+
+FirDiagnosticsDirectives.FIR_DUMP
34+
+JvmEnvironmentConfigurationDirectives.FULL_JDK
2135

22-
with(builder) {
23-
/*
24-
* Containers of different directives, which can be used in tests:
25-
* - ModuleStructureDirectives
26-
* - LanguageSettingsDirectives
27-
* - DiagnosticsDirectives
28-
* - FirDiagnosticsDirectives
29-
* - CodegenTestDirectives
30-
* - JvmEnvironmentConfigurationDirectives
31-
*
32-
* All of them are located in `org.jetbrains.kotlin.test.directives` package
33-
*/
34-
defaultDirectives {
35-
+CodegenTestDirectives.DUMP_IR
36-
+FirDiagnosticsDirectives.FIR_DUMP
37-
+JvmEnvironmentConfigurationDirectives.FULL_JDK
38-
39-
+CodegenTestDirectives.IGNORE_DEXING // Avoids loading R8 from the classpath.
40-
}
41-
42-
useConfigurators(
43-
::PluginAnnotationsProvider,
44-
::ExtensionRegistrarConfigurator
45-
)
36+
+CodegenTestDirectives.IGNORE_DEXING // Avoids loading R8 from the classpath.
4637
}
38+
39+
configurePlugin()
4740
}
4841
}
Lines changed: 18 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
package org.jetbrains.kotlin.compiler.plugin.template.runners
22

3-
import org.jetbrains.kotlin.compiler.plugin.template.services.ExtensionRegistrarConfigurator
4-
import org.jetbrains.kotlin.compiler.plugin.template.services.PluginAnnotationsProvider
3+
import org.jetbrains.kotlin.compiler.plugin.template.services.configurePlugin
54
import org.jetbrains.kotlin.test.FirParser
65
import org.jetbrains.kotlin.test.builders.TestConfigurationBuilder
76
import org.jetbrains.kotlin.test.directives.CodegenTestDirectives
@@ -16,31 +15,25 @@ open class AbstractJvmDiagnosticTest : AbstractFirPhasedDiagnosticTest(FirParser
1615
return EnvironmentBasedStandardLibrariesPathProvider
1716
}
1817

19-
override fun configure(builder: TestConfigurationBuilder) {
18+
override fun configure(builder: TestConfigurationBuilder) = with(builder) {
2019
super.configure(builder)
20+
/*
21+
* Containers of different directives, which can be used in tests:
22+
* - ModuleStructureDirectives
23+
* - LanguageSettingsDirectives
24+
* - DiagnosticsDirectives
25+
* - FirDiagnosticsDirectives
26+
*
27+
* All of them are located in `org.jetbrains.kotlin.test.directives` package
28+
*/
29+
defaultDirectives {
30+
+FirDiagnosticsDirectives.FIR_DUMP
31+
+FirDiagnosticsDirectives.DISABLE_GENERATED_FIR_TAGS
32+
+JvmEnvironmentConfigurationDirectives.FULL_JDK
2133

22-
with(builder) {
23-
/*
24-
* Containers of different directives, which can be used in tests:
25-
* - ModuleStructureDirectives
26-
* - LanguageSettingsDirectives
27-
* - DiagnosticsDirectives
28-
* - FirDiagnosticsDirectives
29-
*
30-
* All of them are located in `org.jetbrains.kotlin.test.directives` package
31-
*/
32-
defaultDirectives {
33-
+FirDiagnosticsDirectives.FIR_DUMP
34-
+FirDiagnosticsDirectives.DISABLE_GENERATED_FIR_TAGS
35-
+JvmEnvironmentConfigurationDirectives.FULL_JDK
36-
37-
+CodegenTestDirectives.IGNORE_DEXING // Avoids loading R8 from the classpath.
38-
}
39-
40-
useConfigurators(
41-
::PluginAnnotationsProvider,
42-
::ExtensionRegistrarConfigurator
43-
)
34+
+CodegenTestDirectives.IGNORE_DEXING // Avoids loading R8 from the classpath.
4435
}
36+
37+
configurePlugin()
4538
}
4639
}

compiler-plugin/test-fixtures/org/jetbrains/kotlin/compiler/plugin/template/services/ExtensionRegistrarConfigurator.kt

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,17 @@ import org.jetbrains.kotlin.compiler.plugin.template.SimplePluginRegistrar
66
import org.jetbrains.kotlin.compiler.plugin.template.ir.SimpleIrGenerationExtension
77
import org.jetbrains.kotlin.config.CompilerConfiguration
88
import org.jetbrains.kotlin.fir.extensions.FirExtensionRegistrarAdapter
9+
import org.jetbrains.kotlin.test.builders.TestConfigurationBuilder
910
import org.jetbrains.kotlin.test.model.TestModule
1011
import org.jetbrains.kotlin.test.services.EnvironmentConfigurator
1112
import org.jetbrains.kotlin.test.services.TestServices
1213

13-
class ExtensionRegistrarConfigurator(testServices: TestServices) : EnvironmentConfigurator(testServices) {
14+
fun TestConfigurationBuilder.configurePlugin() {
15+
useConfigurators(::ExtensionRegistrarConfigurator)
16+
configureAnnotations()
17+
}
18+
19+
private class ExtensionRegistrarConfigurator(testServices: TestServices) : EnvironmentConfigurator(testServices) {
1420
override fun CompilerPluginRegistrar.ExtensionStorage.registerCompilerExtensions(
1521
module: TestModule,
1622
configuration: CompilerConfiguration
Lines changed: 17 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,29 @@
11
package org.jetbrains.kotlin.compiler.plugin.template.services
22

3-
import org.jetbrains.kotlin.cli.jvm.config.addJvmClasspathRoot
3+
import org.jetbrains.kotlin.cli.jvm.config.addJvmClasspathRoots
44
import org.jetbrains.kotlin.config.CompilerConfiguration
5+
import org.jetbrains.kotlin.test.builders.TestConfigurationBuilder
56
import org.jetbrains.kotlin.test.model.TestModule
67
import org.jetbrains.kotlin.test.services.EnvironmentConfigurator
8+
import org.jetbrains.kotlin.test.services.RuntimeClasspathProvider
79
import org.jetbrains.kotlin.test.services.TestServices
810
import java.io.File
911

10-
class PluginAnnotationsProvider(testServices: TestServices) : EnvironmentConfigurator(testServices) {
11-
companion object {
12-
private val annotationsRuntimeClasspath =
13-
System.getProperty("annotationsRuntime.classpath")?.split(File.pathSeparator)?.map(::File)
14-
?: error("Unable to get a valid classpath from 'annotationsRuntime.classpath' property")
15-
}
12+
private val annotationsRuntimeClasspath =
13+
System.getProperty("annotationsRuntime.classpath")?.split(File.pathSeparator)?.map(::File)
14+
?: error("Unable to get a valid classpath from 'annotationsRuntime.classpath' property")
15+
16+
fun TestConfigurationBuilder.configureAnnotations() {
17+
useConfigurators(::PluginAnnotationsProvider)
18+
useCustomRuntimeClasspathProviders(::PluginAnnotationsClasspathProvider)
19+
}
1620

21+
private class PluginAnnotationsProvider(testServices: TestServices) : EnvironmentConfigurator(testServices) {
1722
override fun configureCompilerConfiguration(configuration: CompilerConfiguration, module: TestModule) {
18-
for (file in annotationsRuntimeClasspath) {
19-
configuration.addJvmClasspathRoot(file)
20-
}
23+
configuration.addJvmClasspathRoots(annotationsRuntimeClasspath)
2124
}
2225
}
26+
27+
private class PluginAnnotationsClasspathProvider(testServices: TestServices) : RuntimeClasspathProvider(testServices) {
28+
override fun runtimeClassPaths(module: TestModule) = annotationsRuntimeClasspath
29+
}

0 commit comments

Comments
 (0)