@@ -10,13 +10,17 @@ import org.jetbrains.kotlin.compiler.plugin.ExperimentalCompilerApi
1010import org.jetbrains.kotlin.config.CommonConfigurationKeys.MESSAGE_COLLECTOR_KEY
1111import org.jetbrains.kotlin.config.CompilerConfiguration
1212import org.jetbrains.kotlin.fir.extensions.FirExtensionRegistrarAdapter
13+ import org.jetbrains.kotlin.konan.file.File
1314import tech.mappie.MappieCommandLineProcessor.Companion.ARGUMENT_REPORT_DIR
1415import tech.mappie.MappieCommandLineProcessor.Companion.ARGUMENT_REPORT_ENABLED
1516import tech.mappie.MappieCommandLineProcessor.Companion.ARGUMENT_USE_DEFAULT_ARGUMENTS
1617import tech.mappie.MappieCommandLineProcessor.Companion.ARGUMENT_WARNINGS_AS_ERRORS
18+ import tech.mappie.compiler_plugin.BuildConfig
1719import tech.mappie.config.MappieConfiguration
20+ import tech.mappie.config.MappieModule
1821import tech.mappie.fir.MappieFirRegistrar
1922import tech.mappie.ir.MappieIrRegistrar
23+ import kotlin.text.Regex
2024
2125@OptIn(ExperimentalCompilerApi ::class )
2226class MappieCompilerPluginRegistrar : CompilerPluginRegistrar () {
@@ -25,7 +29,12 @@ class MappieCompilerPluginRegistrar : CompilerPluginRegistrar() {
2529
2630 override fun ExtensionStorage.registerExtensions (configuration : CompilerConfiguration ) {
2731 val config = MappieConfiguration (
28- isMappieDebugMode = isStartedWithTestFixtures(configuration),
32+ modules = buildList {
33+ if (configuration.isStartedWithDependency(MODULE_KOTLINX_DATETIME_REGEX )) {
34+ add(MappieModule .KOTLINX_DATETIME )
35+ }
36+ },
37+ isMappieDebugMode = configuration.isStartedWithDependency(TESTUTIL_REGEX ),
2938 warningsAsErrors = configuration.get(ARGUMENT_WARNINGS_AS_ERRORS , false ),
3039 useDefaultArguments = configuration.get(ARGUMENT_USE_DEFAULT_ARGUMENTS , true ),
3140 strictEnums = configuration.get(ARGUMENT_STRICTNESS_ENUMS , true ),
@@ -37,11 +46,23 @@ class MappieCompilerPluginRegistrar : CompilerPluginRegistrar() {
3746 IrGenerationExtension .registerExtension(MappieIrRegistrar (configuration.get(MESSAGE_COLLECTOR_KEY , NONE ), config))
3847 }
3948
40- private fun isStartedWithTestFixtures ( configuration : CompilerConfiguration ) =
41- configuration. moduleChunk
49+ private fun CompilerConfiguration. isStartedWithDependency ( pattern : Regex ) =
50+ moduleChunk
4251 ?.modules
43- ?.firstOrNull { it.getModuleName() == " main" }
44- ?.getClasspathRoots()
45- ?.any { it.matches(Regex (" .*compiler-plugin-.*-test-fixtures.*\\ .jar" )) }
52+ ?.flatMap { it.getClasspathRoots() }
53+ ?.any { it.matches(pattern) }
4654 ? : false
55+
56+ companion object {
57+ private val SEPARATOR = Regex .escapeReplacement(File .separator)
58+
59+ private val MODULE_KOTLINX_DATETIME_REGEX = Regex (
60+ " (.*modules${SEPARATOR } kotlinx-datetime${SEPARATOR } build${SEPARATOR } classes${SEPARATOR } kotlin${SEPARATOR } jvm${SEPARATOR } main)|(.*module-kotlinx-datetime.*-${BuildConfig .VERSION } .*)"
61+ )
62+
63+ private val TESTUTIL_REGEX = Regex (
64+ " .*testutil-${BuildConfig .VERSION } .*\\ .jar"
65+ )
66+
67+ }
4768}
0 commit comments