diff --git a/compiler/build-tools/kotlin-build-tools-api-forward-compatibility-tests/src/testCompatibility/kotlin/arguments/CommonCompilerArgumentConversionTest.kt b/compiler/build-tools/kotlin-build-tools-api-forward-compatibility-tests/src/testCompatibility/kotlin/arguments/CommonCompilerArgumentConversionTest.kt index 1c551152cfff9..3e9295545a80d 100644 --- a/compiler/build-tools/kotlin-build-tools-api-forward-compatibility-tests/src/testCompatibility/kotlin/arguments/CommonCompilerArgumentConversionTest.kt +++ b/compiler/build-tools/kotlin-build-tools-api-forward-compatibility-tests/src/testCompatibility/kotlin/arguments/CommonCompilerArgumentConversionTest.kt @@ -88,14 +88,12 @@ internal class CommonCompilerArgumentConversionTest : BaseCompilationTest() { @DisplayName("Raw argument strings are converted to BTA argument") fun CommonArgumentConfiguration.testRawArgumentStringsConversion() { assumeArgumentSupported() - for (value in argumentValues) { + for (value in argumentRawValues) { val operation = toolchain.jvm.createJvmCompilationOperation(emptyList(), Paths.get(".")) - operation.compilerArguments.applyArgumentStrings( - expectedArgumentStringsFor(getValueString(value)) - ) + operation.compilerArguments.applyArgumentStrings(expectedArgumentStringsFor(value)) - assertEquals(getValueString(value), getValueString(operation.compilerArguments[argumentKey])) + assertEquals(value, getValueString(operation.compilerArguments[argumentKey])) } } diff --git a/compiler/build-tools/kotlin-build-tools-api-forward-compatibility-tests/src/testCompatibility/kotlin/arguments/JvmCompilerArgumentConversionTest.kt b/compiler/build-tools/kotlin-build-tools-api-forward-compatibility-tests/src/testCompatibility/kotlin/arguments/JvmCompilerArgumentConversionTest.kt index 8042ea7234ec5..b4b642f9ea602 100644 --- a/compiler/build-tools/kotlin-build-tools-api-forward-compatibility-tests/src/testCompatibility/kotlin/arguments/JvmCompilerArgumentConversionTest.kt +++ b/compiler/build-tools/kotlin-build-tools-api-forward-compatibility-tests/src/testCompatibility/kotlin/arguments/JvmCompilerArgumentConversionTest.kt @@ -88,14 +88,12 @@ internal class JvmCompilerArgumentConversionTest : BaseCompilationTest() { @DisplayName("Raw argument strings are converted to BTA argument") fun JvmArgumentConfiguration.testRawArgumentStringsConversion() { assumeArgumentSupported() - for (value in argumentValues) { + for (value in argumentRawValues) { val operation = toolchain.jvm.createJvmCompilationOperation(emptyList(), Paths.get(".")) - operation.compilerArguments.applyArgumentStrings( - expectedArgumentStringsFor(getValueString(value)) - ) + operation.compilerArguments.applyArgumentStrings(expectedArgumentStringsFor(value)) - assertEquals(getValueString(value), getValueString(operation.compilerArguments[argumentKey])) + assertEquals(value, getValueString(operation.compilerArguments[argumentKey])) } } diff --git a/compiler/build-tools/kotlin-build-tools-api-forward-compatibility-tests/src/testCompatibility/kotlin/arguments/model/ArgumentTestDescriptor.kt b/compiler/build-tools/kotlin-build-tools-api-forward-compatibility-tests/src/testCompatibility/kotlin/arguments/model/ArgumentTestDescriptor.kt index 8b747dd08d244..a5a2e3d1f71ae 100644 --- a/compiler/build-tools/kotlin-build-tools-api-forward-compatibility-tests/src/testCompatibility/kotlin/arguments/model/ArgumentTestDescriptor.kt +++ b/compiler/build-tools/kotlin-build-tools-api-forward-compatibility-tests/src/testCompatibility/kotlin/arguments/model/ArgumentTestDescriptor.kt @@ -10,6 +10,7 @@ internal interface ArgumentTestDescriptor { val argument: Any val argumentValues: List + val argumentRawValues: List val invalidArgumentValues: List val runsInvalidArgumentValueTest: Boolean diff --git a/compiler/build-tools/kotlin-build-tools-api-forward-compatibility-tests/src/testCompatibility/kotlin/arguments/model/common/CommonArgumentConfiguration.kt b/compiler/build-tools/kotlin-build-tools-api-forward-compatibility-tests/src/testCompatibility/kotlin/arguments/model/common/CommonArgumentConfiguration.kt index 3de4bf6b2142b..7fec8a926c2a2 100644 --- a/compiler/build-tools/kotlin-build-tools-api-forward-compatibility-tests/src/testCompatibility/kotlin/arguments/model/common/CommonArgumentConfiguration.kt +++ b/compiler/build-tools/kotlin-build-tools-api-forward-compatibility-tests/src/testCompatibility/kotlin/arguments/model/common/CommonArgumentConfiguration.kt @@ -13,6 +13,7 @@ internal class CommonArgumentConfiguration( ) : ArgumentConfiguration(commonArgumentTestDescriptor) { val argumentKey: CommonCompilerArgument = commonArgumentTestDescriptor.argument val argumentValues: List = commonArgumentTestDescriptor.argumentValues + val argumentRawValues: List = commonArgumentTestDescriptor.argumentRawValues val invalidArgumentValues: List = commonArgumentTestDescriptor.invalidArgumentValues val invalidRawValues: List = commonArgumentTestDescriptor.invalidRawValues diff --git a/compiler/build-tools/kotlin-build-tools-api-forward-compatibility-tests/src/testCompatibility/kotlin/arguments/model/common/CommonArgumentProviders.kt b/compiler/build-tools/kotlin-build-tools-api-forward-compatibility-tests/src/testCompatibility/kotlin/arguments/model/common/CommonArgumentProviders.kt index 93511bec10e86..89af1e383ac3e 100644 --- a/compiler/build-tools/kotlin-build-tools-api-forward-compatibility-tests/src/testCompatibility/kotlin/arguments/model/common/CommonArgumentProviders.kt +++ b/compiler/build-tools/kotlin-build-tools-api-forward-compatibility-tests/src/testCompatibility/kotlin/arguments/model/common/CommonArgumentProviders.kt @@ -66,6 +66,13 @@ internal val commonCompilerArgumentTestDescriptors: List value?.joinToString(",") }, expectedArgumentStringsFor = { value -> listOf("-opt-in", value) }, ), @@ -73,6 +80,7 @@ internal val commonCompilerArgumentTestDescriptors: List value }, expectedArgumentStringsFor = { value -> listOf("-kotlin-home", value) }, ), @@ -80,6 +88,7 @@ internal val commonCompilerArgumentTestDescriptors: List value?.joinToString(",") }, expectedArgumentStringsFor = { value -> listOf("-Xverbose-phases=$value") }, ), @@ -87,6 +96,7 @@ internal val commonCompilerArgumentTestDescriptors: List value?.joinToString(",") }, expectedArgumentStringsFor = { value -> listOf("-Xdisable-phases=$value") }, ), @@ -94,6 +104,7 @@ internal val commonCompilerArgumentTestDescriptors: List value?.joinToString(",") }, expectedArgumentStringsFor = { value -> listOf("-Xsuppress-warning=$value") }, ), @@ -101,6 +112,7 @@ internal val commonCompilerArgumentTestDescriptors: List value }, expectedArgumentStringsFor = { value -> listOf("-Xannotation-default-target=$value") }, ), @@ -108,6 +120,7 @@ internal val commonCompilerArgumentTestDescriptors: List value }, expectedArgumentStringsFor = { value -> listOf("-Xverify-ir=$value") }, ), @@ -115,6 +128,7 @@ internal val commonCompilerArgumentTestDescriptors: List value }, expectedArgumentStringsFor = { value -> listOf("-Xname-based-destructuring=$value") }, ), @@ -122,6 +136,7 @@ internal val commonCompilerArgumentTestDescriptors: List value?.joinToString(",") }, expectedArgumentStringsFor = { value -> listOf("-Xphases-to-dump=$value") }, ), @@ -129,6 +144,7 @@ internal val commonCompilerArgumentTestDescriptors: List value?.joinToString(",") }, expectedArgumentStringsFor = { value -> listOf("-Xphases-to-dump-before=$value") }, ), @@ -136,6 +152,7 @@ internal val commonCompilerArgumentTestDescriptors: List value?.joinToString(",") }, expectedArgumentStringsFor = { value -> listOf("-Xphases-to-dump-after=$value") }, ), @@ -143,6 +160,7 @@ internal val commonCompilerArgumentTestDescriptors: List value?.joinToString(",") }, expectedArgumentStringsFor = { value -> listOf("-Xphases-to-validate=$value") }, ), @@ -150,6 +168,7 @@ internal val commonCompilerArgumentTestDescriptors: List value?.joinToString(",") }, expectedArgumentStringsFor = { value -> listOf("-Xphases-to-validate-before=$value") }, ), @@ -157,6 +176,7 @@ internal val commonCompilerArgumentTestDescriptors: List value?.joinToString(",") }, expectedArgumentStringsFor = { value -> listOf("-Xphases-to-validate-after=$value") }, ), @@ -164,6 +184,7 @@ internal val commonCompilerArgumentTestDescriptors: List value }, expectedArgumentStringsFor = { value -> listOf("-Xdump-directory=$value") }, ), @@ -171,6 +192,7 @@ internal val commonCompilerArgumentTestDescriptors: List value }, expectedArgumentStringsFor = { value -> listOf("-Xdump-perf=$value") }, ), @@ -178,6 +200,7 @@ internal val commonCompilerArgumentTestDescriptors: List value?.joinToString(",") }, diff --git a/compiler/build-tools/kotlin-build-tools-api-forward-compatibility-tests/src/testCompatibility/kotlin/arguments/model/common/CommonArgumentTestDescriptor.kt b/compiler/build-tools/kotlin-build-tools-api-forward-compatibility-tests/src/testCompatibility/kotlin/arguments/model/common/CommonArgumentTestDescriptor.kt index e4006b3b78a60..fa4b50c4348e7 100644 --- a/compiler/build-tools/kotlin-build-tools-api-forward-compatibility-tests/src/testCompatibility/kotlin/arguments/model/common/CommonArgumentTestDescriptor.kt +++ b/compiler/build-tools/kotlin-build-tools-api-forward-compatibility-tests/src/testCompatibility/kotlin/arguments/model/common/CommonArgumentTestDescriptor.kt @@ -12,6 +12,7 @@ internal class CommonArgumentTestDescriptor( override val argumentName: String, override val argument: CommonCompilerArguments.CommonCompilerArgument, override val argumentValues: List, + override val argumentRawValues: List, override val invalidArgumentValues: List = emptyList(), override val invalidRawValues: List = emptyList(), val valueString: (T?) -> String?, diff --git a/compiler/build-tools/kotlin-build-tools-api-forward-compatibility-tests/src/testCompatibility/kotlin/arguments/model/jvm/JvmArgumentConfiguration.kt b/compiler/build-tools/kotlin-build-tools-api-forward-compatibility-tests/src/testCompatibility/kotlin/arguments/model/jvm/JvmArgumentConfiguration.kt index fdd66a231dbd9..76c2feb736aed 100644 --- a/compiler/build-tools/kotlin-build-tools-api-forward-compatibility-tests/src/testCompatibility/kotlin/arguments/model/jvm/JvmArgumentConfiguration.kt +++ b/compiler/build-tools/kotlin-build-tools-api-forward-compatibility-tests/src/testCompatibility/kotlin/arguments/model/jvm/JvmArgumentConfiguration.kt @@ -13,6 +13,7 @@ internal class JvmArgumentConfiguration( ) : ArgumentConfiguration(jvmArgumentTestDescriptor) { val argumentKey: JvmCompilerArgument = jvmArgumentTestDescriptor.argument val argumentValues: List = jvmArgumentTestDescriptor.argumentValues + val argumentRawValues: List = jvmArgumentTestDescriptor.argumentRawValues val invalidArgumentValues: List = jvmArgumentTestDescriptor.invalidArgumentValues val invalidRawValues: List = jvmArgumentTestDescriptor.invalidRawValues diff --git a/compiler/build-tools/kotlin-build-tools-api-forward-compatibility-tests/src/testCompatibility/kotlin/arguments/model/jvm/JvmArgumentProviders.kt b/compiler/build-tools/kotlin-build-tools-api-forward-compatibility-tests/src/testCompatibility/kotlin/arguments/model/jvm/JvmArgumentProviders.kt index 05ea9cb7dbc11..825fd29c0ccf4 100644 --- a/compiler/build-tools/kotlin-build-tools-api-forward-compatibility-tests/src/testCompatibility/kotlin/arguments/model/jvm/JvmArgumentProviders.kt +++ b/compiler/build-tools/kotlin-build-tools-api-forward-compatibility-tests/src/testCompatibility/kotlin/arguments/model/jvm/JvmArgumentProviders.kt @@ -73,6 +73,7 @@ private val jvmArgumentTestDescriptors: List> = lis argumentName = "Xabi-stability", argument = X_ABI_STABILITY, argumentValues = listOf("stable", "unstable"), + argumentRawValues = listOf("stable", "unstable"), invalidArgumentValues = listOf("non-existent-value"), invalidRawValues = listOf("non-existent-value"), valueString = { value -> value }, @@ -82,6 +83,7 @@ private val jvmArgumentTestDescriptors: List> = lis argumentName = "Xadd-modules", argument = X_ADD_MODULES, argumentValues = listOf(arrayOf("module1", "module2", "module3")), + argumentRawValues = listOf(arrayOf("module1", "module2", "module3").joinToString(",")), valueString = { value -> value?.joinToString(",") }, expectedArgumentStringsFor = { value -> listOf("-Xadd-modules=$value") }, ), @@ -89,6 +91,7 @@ private val jvmArgumentTestDescriptors: List> = lis argumentName = "Xassertions", argument = X_ASSERTIONS, argumentValues = listOf("always-enable", "always-disable", "jvm", "legacy"), + argumentRawValues = listOf("always-enable", "always-disable", "jvm", "legacy"), invalidArgumentValues = listOf("non-existent-value"), invalidRawValues = listOf("non-existent-value"), valueString = { value -> value }, @@ -104,6 +107,13 @@ private val jvmArgumentTestDescriptors: List> = lis testBaseDir.resolve("path/to/classes"), ).joinToString(File.pathSeparator) { it.toFile().absolutePath } ), + argumentRawValues = listOf( + listOf( + testBaseDir.resolve("path/to/lib1.jar"), + testBaseDir.resolve("path/to/lib2.jar"), + testBaseDir.resolve("path/to/classes"), + ).joinToString(File.pathSeparator) { it.toFile().absolutePath } + ), valueString = { value -> value }, expectedArgumentStringsFor = { value -> listOf("-classpath", value) }, ), @@ -111,6 +121,7 @@ private val jvmArgumentTestDescriptors: List> = lis argumentName = "jdk-home", argument = JDK_HOME, argumentValues = listOf(testBaseDir.resolve("path/to/jdk").toFile().absolutePath), + argumentRawValues = listOf(testBaseDir.resolve("path/to/jdk").toFile().absolutePath), valueString = { value -> value }, expectedArgumentStringsFor = { value -> listOf("-jdk-home", value) }, ), @@ -118,6 +129,7 @@ private val jvmArgumentTestDescriptors: List> = lis argumentName = "jvm-default", argument = JVM_DEFAULT, argumentValues = listOf("enable", "no-compatibility", "disable"), + argumentRawValues = listOf("enable", "no-compatibility", "disable"), invalidArgumentValues = listOf("non-existent-value"), invalidRawValues = listOf("non-existent-value"), valueString = { value -> value }, @@ -127,6 +139,7 @@ private val jvmArgumentTestDescriptors: List> = lis argumentName = "script-templates", argument = SCRIPT_TEMPLATES, argumentValues = listOf(arrayOf("org.example.Template1", "org.example.Template2")), + argumentRawValues = listOf(arrayOf("org.example.Template1", "org.example.Template2").joinToString(",")), valueString = { value -> value?.joinToString(",") }, expectedArgumentStringsFor = { value -> listOf("-script-templates", value) }, ), @@ -140,6 +153,13 @@ private val jvmArgumentTestDescriptors: List> = lis testBaseDir.resolve("path/to/friend3").toFile().absolutePath, ) ), + argumentRawValues = listOf( + arrayOf( + testBaseDir.resolve("path/to/friend1").toFile().absolutePath, + testBaseDir.resolve("path/to/friend2").toFile().absolutePath, + testBaseDir.resolve("path/to/friend3").toFile().absolutePath, + ).joinToString(",") + ), invalidArgumentValues = listOf(arrayOf(testBaseDir.resolve("path/with,comma").toFile().absolutePath)), valueString = { value -> value?.joinToString(",") }, expectedArgumentStringsFor = { value -> listOf("-Xfriend-paths=$value") }, @@ -151,6 +171,10 @@ private val jvmArgumentTestDescriptors: List> = lis "1.6", "1.7", "1.8", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24", "25" ), + argumentRawValues = listOf( + "1.6", "1.7", "1.8", "8", "9", "10", "11", "12", "13", "14", + "15", "16", "17", "18", "19", "20", "21", "22", "23", "24", "25" + ), invalidArgumentValues = listOf("non-existent-value"), invalidRawValues = listOf("non-existent-value"), valueString = { value -> value }, @@ -166,6 +190,13 @@ private val jvmArgumentTestDescriptors: List> = lis testBaseDir.resolve("path/to/module3"), ).joinToString(File.pathSeparator) { it.toFile().absolutePath } ), + argumentRawValues = listOf( + listOf( + testBaseDir.resolve("path/to/module1"), + testBaseDir.resolve("path/to/module2"), + testBaseDir.resolve("path/to/module3"), + ).joinToString(File.pathSeparator) { it.toFile().absolutePath } + ), valueString = { value -> value }, expectedArgumentStringsFor = { value -> listOf("-Xmodule-path=$value") }, ), @@ -173,6 +204,7 @@ private val jvmArgumentTestDescriptors: List> = lis argumentName = "Xstring-concat", argument = X_STRING_CONCAT, argumentValues = listOf("indy-with-constants", "indy", "inline"), + argumentRawValues = listOf("indy-with-constants", "indy", "inline"), invalidArgumentValues = listOf("non-existent-value"), invalidRawValues = listOf("non-existent-value"), valueString = { value -> value }, @@ -182,6 +214,7 @@ private val jvmArgumentTestDescriptors: List> = lis argumentName = "Xlambdas", argument = X_LAMBDAS, argumentValues = listOf("indy", "class"), + argumentRawValues = listOf("indy", "class"), invalidArgumentValues = listOf("non-existent-value"), invalidRawValues = listOf("non-existent-value"), valueString = { value -> value }, @@ -191,6 +224,7 @@ private val jvmArgumentTestDescriptors: List> = lis argumentName = "Xwhen-expressions", argument = X_WHEN_EXPRESSIONS, argumentValues = listOf("indy", "inline"), + argumentRawValues = listOf("indy", "inline"), invalidArgumentValues = listOf("non-existent-value"), invalidRawValues = listOf("non-existent-value"), valueString = { value -> value }, @@ -200,6 +234,7 @@ private val jvmArgumentTestDescriptors: List> = lis argumentName = "Xsam-conversions", argument = X_SAM_CONVERSIONS, argumentValues = listOf("class", "indy"), + argumentRawValues = listOf("class", "indy"), invalidArgumentValues = listOf("non-existent-value"), invalidRawValues = listOf("non-existent-value"), valueString = { value -> value }, @@ -209,6 +244,7 @@ private val jvmArgumentTestDescriptors: List> = lis argumentName = "Xjspecify-annotations", argument = X_JSPECIFY_ANNOTATIONS, argumentValues = listOf("ignore", "strict", "warn"), + argumentRawValues = listOf("ignore", "strict", "warn"), invalidArgumentValues = listOf("non-existent-value"), invalidRawValues = listOf("non-existent-value"), valueString = { value -> value }, @@ -218,6 +254,7 @@ private val jvmArgumentTestDescriptors: List> = lis argumentName = "Xsupport-compatqual-checker-framework-annotations", argument = X_SUPPORT_COMPATQUAL_CHECKER_FRAMEWORK_ANNOTATIONS, argumentValues = listOf("enable", "disable"), + argumentRawValues = listOf("enable", "disable"), invalidArgumentValues = listOf("non-existent-value"), invalidRawValues = listOf("non-existent-value"), valueString = { value -> value }, @@ -233,6 +270,13 @@ private val jvmArgumentTestDescriptors: List> = lis testBaseDir.resolve("path/to/lib3.klib"), ).joinToString(File.pathSeparator) { it.toFile().absolutePath } ), + argumentRawValues = listOf( + listOf( + testBaseDir.resolve("path/to/lib1.klib"), + testBaseDir.resolve("path/to/lib2.klib"), + testBaseDir.resolve("path/to/lib3.klib"), + ).joinToString(File.pathSeparator) { it.toFile().absolutePath } + ), valueString = { value -> value }, expectedArgumentStringsFor = { value -> listOf("-Xklib=$value") }, ), @@ -246,6 +290,13 @@ private val jvmArgumentTestDescriptors: List> = lis testBaseDir.resolve("path/to/java/src3").toFile().absolutePath, ) ), + argumentRawValues = listOf( + arrayOf( + testBaseDir.resolve("path/to/java/src1").toFile().absolutePath, + testBaseDir.resolve("path/to/java/src2").toFile().absolutePath, + testBaseDir.resolve("path/to/java/src3").toFile().absolutePath, + ).joinToString(",") + ), invalidArgumentValues = listOf(arrayOf(testBaseDir.resolve("path/with,comma").toFile().absolutePath)), valueString = { value -> value?.joinToString(",") }, expectedArgumentStringsFor = { value -> listOf("-Xjava-source-roots=$value") }, @@ -254,6 +305,7 @@ private val jvmArgumentTestDescriptors: List> = lis argumentName = "Xscript-resolver-environment", argument = X_SCRIPT_RESOLVER_ENVIRONMENT, argumentValues = listOf(arrayOf("key1=value1", "key2=value2")), + argumentRawValues = listOf(arrayOf("key1=value1", "key2=value2").joinToString(",")), valueString = { value -> value?.joinToString(",") }, expectedArgumentStringsFor = { value -> listOf("-Xscript-resolver-environment=$value") }, ), @@ -261,6 +313,7 @@ private val jvmArgumentTestDescriptors: List> = lis argumentName = "Xjsr305", argument = X_JSR305, argumentValues = listOf(arrayOf("strict", "under-migration:warn", "@com.example.Nullable:ignore")), + argumentRawValues = listOf(arrayOf("strict", "under-migration:warn", "@com.example.Nullable:ignore").joinToString(",")), valueString = { value -> value?.joinToString(",") }, expectedArgumentStringsFor = { value -> listOf("-Xjsr305=$value") }, ), @@ -268,6 +321,7 @@ private val jvmArgumentTestDescriptors: List> = lis argumentName = "Xnullability-annotations", argument = X_NULLABILITY_ANNOTATIONS, argumentValues = listOf(arrayOf("@javax.annotation.Nullable:strict", "@javax.annotation.Nonnull:warn")), + argumentRawValues = listOf(arrayOf("@javax.annotation.Nullable:strict", "@javax.annotation.Nonnull:warn").joinToString(",")), valueString = { value -> value?.joinToString(",") }, expectedArgumentStringsFor = { value -> listOf("-Xnullability-annotations=$value") }, ), @@ -279,6 +333,11 @@ private val jvmArgumentTestDescriptors: List> = lis File.pathSeparator + "event=cpu,interval=1ms,threads,start" + File.pathSeparator + testBaseDir.resolve("path/to/snapshots").toFile().absolutePath ), + argumentRawValues = listOf( + testBaseDir.resolve("path/to/libasyncProfiler.so").toFile().absolutePath + + File.pathSeparator + "event=cpu,interval=1ms,threads,start" + + File.pathSeparator + testBaseDir.resolve("path/to/snapshots").toFile().absolutePath + ), valueString = { value -> value }, expectedArgumentStringsFor = { value -> listOf("-Xprofile=$value") }, ), @@ -288,6 +347,9 @@ private val jvmArgumentTestDescriptors: List> = lis argumentValues = listOf( arrayOf("com.example.MyAnnotation", "*") ), + argumentRawValues = listOf( + arrayOf("com.example.MyAnnotation", "*").joinToString(",") + ), valueString = { value -> value?.joinToString(",") }, expectedArgumentStringsFor = { value -> listOf("-Xignored-annotations-for-bridges=$value") }, ), diff --git a/compiler/build-tools/kotlin-build-tools-api-forward-compatibility-tests/src/testCompatibility/kotlin/arguments/model/jvm/JvmArgumentTestDescriptor.kt b/compiler/build-tools/kotlin-build-tools-api-forward-compatibility-tests/src/testCompatibility/kotlin/arguments/model/jvm/JvmArgumentTestDescriptor.kt index 7f4a12f0d9cf5..b300e99732b27 100644 --- a/compiler/build-tools/kotlin-build-tools-api-forward-compatibility-tests/src/testCompatibility/kotlin/arguments/model/jvm/JvmArgumentTestDescriptor.kt +++ b/compiler/build-tools/kotlin-build-tools-api-forward-compatibility-tests/src/testCompatibility/kotlin/arguments/model/jvm/JvmArgumentTestDescriptor.kt @@ -12,6 +12,7 @@ internal class JvmArgumentTestDescriptor( override val argumentName: String, override val argument: JvmCompilerArguments.JvmCompilerArgument, override val argumentValues: List, + override val argumentRawValues: List, override val invalidArgumentValues: List = emptyList(), override val invalidRawValues: List = emptyList(), val valueString: (T?) -> String?, diff --git a/compiler/build-tools/kotlin-build-tools-api-tests/src/testCompatibility/kotlin/arguments/CommonCompilerArgumentConversionTest.kt b/compiler/build-tools/kotlin-build-tools-api-tests/src/testCompatibility/kotlin/arguments/CommonCompilerArgumentConversionTest.kt index cfea890d96f80..3f7f27f16b224 100644 --- a/compiler/build-tools/kotlin-build-tools-api-tests/src/testCompatibility/kotlin/arguments/CommonCompilerArgumentConversionTest.kt +++ b/compiler/build-tools/kotlin-build-tools-api-tests/src/testCompatibility/kotlin/arguments/CommonCompilerArgumentConversionTest.kt @@ -86,16 +86,12 @@ internal class CommonCompilerArgumentConversionTest : BaseCompilationTest() { @DisplayName("Raw argument strings are converted to BTA argument") fun CommonArgumentConfiguration.testRawArgumentStringsConversion() { assumeArgumentSupported() - for (value in argumentValues) { + for (value in argumentRawValues) { val operation = kotlinToolchain.jvm.jvmCompilationOperationBuilder(emptyList(), Paths.get(".")).apply { - compilerArguments.applyArgumentStrings( - expectedArgumentStringsFor( - getValueString(value), - ) - ) + compilerArguments.applyArgumentStrings(expectedArgumentStringsFor(value)) } - assertEquals(value, operation.compilerArguments[argumentKey]) + assertEquals(value, getValueString(operation.compilerArguments[argumentKey])) } } diff --git a/compiler/build-tools/kotlin-build-tools-api-tests/src/testCompatibility/kotlin/arguments/JvmCompilerArgumentConversionTest.kt b/compiler/build-tools/kotlin-build-tools-api-tests/src/testCompatibility/kotlin/arguments/JvmCompilerArgumentConversionTest.kt index f89d2dfe7913c..ba20ed2b97ed7 100644 --- a/compiler/build-tools/kotlin-build-tools-api-tests/src/testCompatibility/kotlin/arguments/JvmCompilerArgumentConversionTest.kt +++ b/compiler/build-tools/kotlin-build-tools-api-tests/src/testCompatibility/kotlin/arguments/JvmCompilerArgumentConversionTest.kt @@ -81,16 +81,12 @@ internal class JvmCompilerArgumentConversionTest : BaseCompilationTest() { @DisplayName("Raw argument strings are converted to BTA argument") fun JvmArgumentConfiguration.testRawArgumentStringsConversion() { assumeArgumentSupported() - for (value in argumentValues) { + for (value in argumentRawValues) { val operation = kotlinToolchain.jvm.jvmCompilationOperationBuilder(emptyList(), Paths.get(".")).apply { - compilerArguments.applyArgumentStrings( - expectedArgumentStringsFor( - getValueString(value), - ) - ) + compilerArguments.applyArgumentStrings(expectedArgumentStringsFor(value)) }.build() - assertEquals(value, operation.compilerArguments[argumentKey]) + assertEquals(value, getValueString(operation.compilerArguments[argumentKey])) } } diff --git a/compiler/build-tools/kotlin-build-tools-api-tests/src/testCompatibility/kotlin/arguments/model/ArgumentTestDescriptor.kt b/compiler/build-tools/kotlin-build-tools-api-tests/src/testCompatibility/kotlin/arguments/model/ArgumentTestDescriptor.kt index d5397c5ad1dbb..7163e724e12c8 100644 --- a/compiler/build-tools/kotlin-build-tools-api-tests/src/testCompatibility/kotlin/arguments/model/ArgumentTestDescriptor.kt +++ b/compiler/build-tools/kotlin-build-tools-api-tests/src/testCompatibility/kotlin/arguments/model/ArgumentTestDescriptor.kt @@ -13,6 +13,7 @@ internal interface ArgumentTestDescriptor { val availableSinceVersion: KotlinReleaseVersion val argumentValues: List + val argumentRawValues: List val invalidArgumentValues: List val runsInvalidArgumentValueTest: Boolean diff --git a/compiler/build-tools/kotlin-build-tools-api-tests/src/testCompatibility/kotlin/arguments/model/common/CommonArgumentConfiguration.kt b/compiler/build-tools/kotlin-build-tools-api-tests/src/testCompatibility/kotlin/arguments/model/common/CommonArgumentConfiguration.kt index 201dabd4b918e..26bb11580da6b 100644 --- a/compiler/build-tools/kotlin-build-tools-api-tests/src/testCompatibility/kotlin/arguments/model/common/CommonArgumentConfiguration.kt +++ b/compiler/build-tools/kotlin-build-tools-api-tests/src/testCompatibility/kotlin/arguments/model/common/CommonArgumentConfiguration.kt @@ -15,6 +15,7 @@ internal class CommonArgumentConfiguration( ) : ArgumentConfiguration(kotlinToolchain, commonArgumentTestDescriptor) { val argumentKey: CommonCompilerArgument = commonArgumentTestDescriptor.argument val argumentValues: List = commonArgumentTestDescriptor.argumentValues + val argumentRawValues: List = commonArgumentTestDescriptor.argumentRawValues val invalidArgumentValues: List = commonArgumentTestDescriptor.invalidArgumentValues val invalidRawValues: List = commonArgumentTestDescriptor.invalidRawValues diff --git a/compiler/build-tools/kotlin-build-tools-api-tests/src/testCompatibility/kotlin/arguments/model/common/CommonArgumentProviders.kt b/compiler/build-tools/kotlin-build-tools-api-tests/src/testCompatibility/kotlin/arguments/model/common/CommonArgumentProviders.kt index 8e950bc7df035..36a35df26877d 100644 --- a/compiler/build-tools/kotlin-build-tools-api-tests/src/testCompatibility/kotlin/arguments/model/common/CommonArgumentProviders.kt +++ b/compiler/build-tools/kotlin-build-tools-api-tests/src/testCompatibility/kotlin/arguments/model/common/CommonArgumentProviders.kt @@ -84,6 +84,13 @@ internal val commonCompilerArguments: List> = li argumentName = "opt-in", argument = OPT_IN, argumentValues = listOf(listOf("kotlin.RequiresOptIn", "kotlin.ExperimentalStdlibApi", "kotlin.time.ExperimentalTime")), + argumentRawValues = listOf( + listOf( + "kotlin.RequiresOptIn", + "kotlin.ExperimentalStdlibApi", + "kotlin.time.ExperimentalTime" + ).joinToString(",") + ), valueString = { value -> value?.joinToString(",") }, expectedArgumentStringsFor = { value -> listOf("-opt-in", value) }, ), @@ -91,6 +98,7 @@ internal val commonCompilerArguments: List> = li argumentName = "kotlin-home", argument = KOTLIN_HOME, argumentValues = listOf(testBaseDir.resolve("path/to/kotlin")), + argumentRawValues = listOf(testBaseDir.resolve("path/to/kotlin").toFile().absolutePath), runsNullableTest = true, valueString = { value -> value?.toFile()?.absolutePath }, expectedArgumentStringsFor = { value -> listOf("-kotlin-home", value) }, @@ -99,6 +107,7 @@ internal val commonCompilerArguments: List> = li argumentName = "Xverbose-phases", argument = X_VERBOSE_PHASES, argumentValues = listOf(listOf("phase1", "phase2", "phase3")), + argumentRawValues = listOf(listOf("phase1", "phase2", "phase3").joinToString(",")), valueString = { value -> value?.joinToString(",") }, expectedArgumentStringsFor = { value -> listOf("-Xverbose-phases=$value") }, ), @@ -106,6 +115,7 @@ internal val commonCompilerArguments: List> = li argumentName = "Xdisable-phases", argument = X_DISABLE_PHASES, argumentValues = listOf(listOf("phase1", "phase2", "phase3")), + argumentRawValues = listOf(listOf("phase1", "phase2", "phase3").joinToString(",")), valueString = { value -> value?.joinToString(",") }, expectedArgumentStringsFor = { value -> listOf("-Xdisable-phases=$value") }, ), @@ -113,6 +123,7 @@ internal val commonCompilerArguments: List> = li argumentName = "Xsuppress-warning", argument = X_SUPPRESS_WARNING, argumentValues = listOf(listOf("warning1", "warning2", "warning3")), + argumentRawValues = listOf(listOf("warning1", "warning2", "warning3").joinToString(",")), valueString = { value -> value?.joinToString(",") }, expectedArgumentStringsFor = { value -> listOf("-Xsuppress-warning=$value") }, ), @@ -120,6 +131,7 @@ internal val commonCompilerArguments: List> = li argumentName = "Xannotation-default-target", argument = X_ANNOTATION_DEFAULT_TARGET, argumentValues = AnnotationDefaultTargetMode.entries.toList(), + argumentRawValues = AnnotationDefaultTargetMode.entries.map { it.stringValue }, invalidRawValues = listOf("non-existent-value"), runsNullableTest = true, valueString = { value -> value?.stringValue }, @@ -129,6 +141,7 @@ internal val commonCompilerArguments: List> = li argumentName = "Xverify-ir", argument = X_VERIFY_IR, argumentValues = VerifyIrMode.entries.toList(), + argumentRawValues = VerifyIrMode.entries.map { it.stringValue }, invalidRawValues = listOf("non-existent-value"), runsNullableTest = true, valueString = { value -> value?.stringValue }, @@ -138,6 +151,7 @@ internal val commonCompilerArguments: List> = li argumentName = "Xname-based-destructuring", argument = X_NAME_BASED_DESTRUCTURING, argumentValues = NameBasedDestructuringMode.entries.toList(), + argumentRawValues = NameBasedDestructuringMode.entries.map { it.stringValue }, invalidRawValues = listOf("non-existent-value"), runsNullableTest = true, skipBtaV1 = true, @@ -148,6 +162,7 @@ internal val commonCompilerArguments: List> = li argumentName = "Xphases-to-dump", argument = X_PHASES_TO_DUMP, argumentValues = listOf(listOf("phase1", "phase2", "phase3")), + argumentRawValues = listOf(listOf("phase1", "phase2", "phase3").joinToString(",")), valueString = { value -> value?.joinToString(",") }, expectedArgumentStringsFor = { value -> listOf("-Xphases-to-dump=$value") }, ), @@ -155,6 +170,7 @@ internal val commonCompilerArguments: List> = li argumentName = "Xphases-to-dump-before", argument = X_PHASES_TO_DUMP_BEFORE, argumentValues = listOf(listOf("phase1", "phase2", "phase3")), + argumentRawValues = listOf(listOf("phase1", "phase2", "phase3").joinToString(",")), valueString = { value -> value?.joinToString(",") }, expectedArgumentStringsFor = { value -> listOf("-Xphases-to-dump-before=$value") }, ), @@ -162,6 +178,7 @@ internal val commonCompilerArguments: List> = li argumentName = "Xphases-to-dump-after", argument = X_PHASES_TO_DUMP_AFTER, argumentValues = listOf(listOf("phase1", "phase2", "phase3")), + argumentRawValues = listOf(listOf("phase1", "phase2", "phase3").joinToString(",")), valueString = { value -> value?.joinToString(",") }, expectedArgumentStringsFor = { value -> listOf("-Xphases-to-dump-after=$value") }, ), @@ -169,6 +186,7 @@ internal val commonCompilerArguments: List> = li argumentName = "Xphases-to-validate", argument = X_PHASES_TO_VALIDATE, argumentValues = listOf(listOf("phase1", "phase2", "phase3")), + argumentRawValues = listOf(listOf("phase1", "phase2", "phase3").joinToString(",")), valueString = { value -> value?.joinToString(",") }, expectedArgumentStringsFor = { value -> listOf("-Xphases-to-validate=$value") }, ), @@ -176,6 +194,7 @@ internal val commonCompilerArguments: List> = li argumentName = "Xphases-to-validate-before", argument = X_PHASES_TO_VALIDATE_BEFORE, argumentValues = listOf(listOf("phase1", "phase2", "phase3")), + argumentRawValues = listOf(listOf("phase1", "phase2", "phase3").joinToString(",")), valueString = { value -> value?.joinToString(",") }, expectedArgumentStringsFor = { value -> listOf("-Xphases-to-validate-before=$value") }, ), @@ -183,6 +202,7 @@ internal val commonCompilerArguments: List> = li argumentName = "Xphases-to-validate-after", argument = X_PHASES_TO_VALIDATE_AFTER, argumentValues = listOf(listOf("phase1", "phase2", "phase3")), + argumentRawValues = listOf(listOf("phase1", "phase2", "phase3").joinToString(",")), valueString = { value -> value?.joinToString(",") }, expectedArgumentStringsFor = { value -> listOf("-Xphases-to-validate-after=$value") }, ), @@ -190,6 +210,7 @@ internal val commonCompilerArguments: List> = li argumentName = "Xdump-directory", argument = X_DUMP_DIRECTORY, argumentValues = listOf(testBaseDir.resolve("path/to/dump")), + argumentRawValues = listOf(testBaseDir.resolve("path/to/dump").toFile().absolutePath), valueString = { value -> value?.toFile()?.absolutePath }, expectedArgumentStringsFor = { value -> listOf("-Xdump-directory=$value") }, ), @@ -197,6 +218,7 @@ internal val commonCompilerArguments: List> = li argumentName = "Xdump-perf", argument = X_DUMP_PERF, argumentValues = listOf(testBaseDir.resolve("path/to/perf.log")), + argumentRawValues = listOf(testBaseDir.resolve("path/to/perf.log").toFile().absolutePath), valueString = { value -> value?.toFile()?.absolutePath }, expectedArgumentStringsFor = { value -> listOf("-Xdump-perf=$value") }, ), @@ -209,6 +231,7 @@ internal val commonCompilerArguments: List> = li WarningLevel("UNUSED_VARIABLE", WarningLevel.Severity.DISABLED), ) ), + argumentRawValues = listOf("DEPRECATION:error,UNUSED_VARIABLE:disabled"), valueString = { value -> value?.joinToString(",") { "${it.warningName}:${it.severity.stringValue}" } }, expectedArgumentStringsFor = { value -> listOf("-Xwarning-level=$value") }, ), diff --git a/compiler/build-tools/kotlin-build-tools-api-tests/src/testCompatibility/kotlin/arguments/model/common/CommonArgumentTestDescriptor.kt b/compiler/build-tools/kotlin-build-tools-api-tests/src/testCompatibility/kotlin/arguments/model/common/CommonArgumentTestDescriptor.kt index 0b6801503fd51..7df785dcf4f10 100644 --- a/compiler/build-tools/kotlin-build-tools-api-tests/src/testCompatibility/kotlin/arguments/model/common/CommonArgumentTestDescriptor.kt +++ b/compiler/build-tools/kotlin-build-tools-api-tests/src/testCompatibility/kotlin/arguments/model/common/CommonArgumentTestDescriptor.kt @@ -13,6 +13,7 @@ internal class CommonArgumentTestDescriptor( override val argumentName: String, override val argument: CommonCompilerArguments.CommonCompilerArgument, override val argumentValues: List, + override val argumentRawValues: List, override val invalidArgumentValues: List = emptyList(), override val invalidRawValues: List = emptyList(), override val runsNullableTest: Boolean = false, diff --git a/compiler/build-tools/kotlin-build-tools-api-tests/src/testCompatibility/kotlin/arguments/model/jvm/JvmArgumentConfiguration.kt b/compiler/build-tools/kotlin-build-tools-api-tests/src/testCompatibility/kotlin/arguments/model/jvm/JvmArgumentConfiguration.kt index f178bb11b1a07..6ab72a2f3b1d8 100644 --- a/compiler/build-tools/kotlin-build-tools-api-tests/src/testCompatibility/kotlin/arguments/model/jvm/JvmArgumentConfiguration.kt +++ b/compiler/build-tools/kotlin-build-tools-api-tests/src/testCompatibility/kotlin/arguments/model/jvm/JvmArgumentConfiguration.kt @@ -15,6 +15,7 @@ internal class JvmArgumentConfiguration( ) : ArgumentConfiguration(kotlinToolchain, jvmArgumentTestDescriptor) { val argumentKey: JvmCompilerArgument = jvmArgumentTestDescriptor.argument val argumentValues: List = jvmArgumentTestDescriptor.argumentValues + val argumentRawValues: List = jvmArgumentTestDescriptor.argumentRawValues val invalidArgumentValues: List = jvmArgumentTestDescriptor.invalidArgumentValues val invalidRawValues: List = jvmArgumentTestDescriptor.invalidRawValues diff --git a/compiler/build-tools/kotlin-build-tools-api-tests/src/testCompatibility/kotlin/arguments/model/jvm/JvmArgumentProviders.kt b/compiler/build-tools/kotlin-build-tools-api-tests/src/testCompatibility/kotlin/arguments/model/jvm/JvmArgumentProviders.kt index 05d5a4715c9df..99f4996cf4723 100644 --- a/compiler/build-tools/kotlin-build-tools-api-tests/src/testCompatibility/kotlin/arguments/model/jvm/JvmArgumentProviders.kt +++ b/compiler/build-tools/kotlin-build-tools-api-tests/src/testCompatibility/kotlin/arguments/model/jvm/JvmArgumentProviders.kt @@ -93,6 +93,7 @@ private val jvmCompilerArguments: List> = listOf( argumentName = "Xabi-stability", argument = X_ABI_STABILITY, argumentValues = AbiStabilityMode.entries.toList(), + argumentRawValues = AbiStabilityMode.entries.map { it.stringValue }, invalidRawValues = listOf("non-existent-value"), runsNullableTest = true, valueString = { value -> value?.stringValue }, @@ -102,6 +103,7 @@ private val jvmCompilerArguments: List> = listOf( argumentName = "Xadd-modules", argument = X_ADD_MODULES, argumentValues = listOf(listOf("module1", "module2", "module3")), + argumentRawValues = listOf(listOf("module1", "module2", "module3").joinToString(",")), valueString = { value -> value?.joinToString(",") }, expectedArgumentStringsFor = { value -> listOf("-Xadd-modules=$value") }, ), @@ -109,6 +111,7 @@ private val jvmCompilerArguments: List> = listOf( argumentName = "Xassertions", argument = X_ASSERTIONS, argumentValues = AssertionsMode.entries.toList(), + argumentRawValues = AssertionsMode.entries.map { it.stringValue }, invalidRawValues = listOf("non-existent-value"), runsNullableTest = true, valueString = { value -> value?.stringValue }, @@ -124,6 +127,13 @@ private val jvmCompilerArguments: List> = listOf( testBaseDir.resolve("path/to/classes"), ) ), + argumentRawValues = listOf( + listOf( + testBaseDir.resolve("path/to/lib1.jar"), + testBaseDir.resolve("path/to/lib2.jar"), + testBaseDir.resolve("path/to/classes"), + ).joinToString(File.pathSeparator) { it.toFile().absolutePath } + ), invalidArgumentValues = listOf(listOf(testBaseDir.resolve("path/with${File.pathSeparator}separator"))), runsNullableTest = true, valueString = { value -> value?.joinToString(File.pathSeparator) { it.toFile().absolutePath } }, @@ -133,6 +143,7 @@ private val jvmCompilerArguments: List> = listOf( argumentName = "jdk-home", argument = JDK_HOME, argumentValues = listOf(testBaseDir.resolve("path/to/jdk")), + argumentRawValues = listOf(testBaseDir.resolve("path/to/jdk").toFile().absolutePath), runsNullableTest = true, valueString = { value -> value?.toFile()?.absolutePath }, expectedArgumentStringsFor = { value -> listOf("-jdk-home", value) }, @@ -141,6 +152,7 @@ private val jvmCompilerArguments: List> = listOf( argumentName = "jvm-default", argument = JVM_DEFAULT, argumentValues = JvmDefaultMode.entries.toList(), + argumentRawValues = JvmDefaultMode.entries.map { it.stringValue }, invalidRawValues = listOf("non-existent-value"), runsNullableTest = true, valueString = { value -> value?.stringValue }, @@ -150,6 +162,7 @@ private val jvmCompilerArguments: List> = listOf( argumentName = "script-templates", argument = SCRIPT_TEMPLATES, argumentValues = listOf(listOf("org.example.Template1", "org.example.Template2")), + argumentRawValues = listOf(listOf("org.example.Template1", "org.example.Template2").joinToString(",")), valueString = { value -> value?.joinToString(",") }, expectedArgumentStringsFor = { value -> listOf("-script-templates", value) }, ), @@ -163,6 +176,13 @@ private val jvmCompilerArguments: List> = listOf( testBaseDir.resolve("path/to/friend3"), ) ), + argumentRawValues = listOf( + listOf( + testBaseDir.resolve("path/to/friend1"), + testBaseDir.resolve("path/to/friend2"), + testBaseDir.resolve("path/to/friend3"), + ).joinToString(","), + ), invalidArgumentValues = listOf(listOf(testBaseDir.resolve("path/with,comma"))), valueString = { value -> value?.joinToString(",") { it.toFile().absolutePath } }, expectedArgumentStringsFor = { value -> listOf("-Xfriend-paths=$value") }, @@ -171,6 +191,7 @@ private val jvmCompilerArguments: List> = listOf( argumentName = "Xjdk-release", argument = X_JDK_RELEASE, argumentValues = JdkRelease.entries.toList(), + argumentRawValues = JdkRelease.entries.map { it.stringValue }, invalidRawValues = listOf("non-existent-value"), runsNullableTest = true, valueString = { value -> value?.stringValue }, @@ -186,6 +207,13 @@ private val jvmCompilerArguments: List> = listOf( testBaseDir.resolve("path/to/module3"), ) ), + argumentRawValues = listOf( + listOf( + testBaseDir.resolve("path/to/module1"), + testBaseDir.resolve("path/to/module2"), + testBaseDir.resolve("path/to/module3"), + ).joinToString(File.pathSeparator) { it.toFile().absolutePath } + ), invalidArgumentValues = listOf(listOf(testBaseDir.resolve("path/with${File.pathSeparator}separator"))), valueString = { value -> value?.joinToString(File.pathSeparator) { it.toFile().absolutePath } }, expectedArgumentStringsFor = { value -> listOf("-Xmodule-path=$value") }, @@ -194,6 +222,7 @@ private val jvmCompilerArguments: List> = listOf( argumentName = "Xstring-concat", argument = X_STRING_CONCAT, argumentValues = StringConcatMode.entries.toList(), + argumentRawValues = StringConcatMode.entries.map { it.stringValue }, invalidRawValues = listOf("non-existent-value"), runsNullableTest = true, valueString = { value -> value?.stringValue }, @@ -203,6 +232,7 @@ private val jvmCompilerArguments: List> = listOf( argumentName = "Xlambdas", argument = X_LAMBDAS, argumentValues = LambdasMode.entries.toList(), + argumentRawValues = LambdasMode.entries.map { it.stringValue }, invalidRawValues = listOf("non-existent-value"), valueString = { value -> value?.stringValue }, expectedArgumentStringsFor = { value -> listOf("-Xlambdas=$value") }, @@ -211,6 +241,7 @@ private val jvmCompilerArguments: List> = listOf( argumentName = "Xwhen-expressions", argument = X_WHEN_EXPRESSIONS, argumentValues = WhenExpressionsMode.entries.toList(), + argumentRawValues = WhenExpressionsMode.entries.map { it.stringValue }, invalidRawValues = listOf("non-existent-value"), runsNullableTest = true, valueString = { value -> value?.stringValue }, @@ -220,6 +251,7 @@ private val jvmCompilerArguments: List> = listOf( argumentName = "Xsam-conversions", argument = X_SAM_CONVERSIONS, argumentValues = SamConversionsMode.entries.toList(), + argumentRawValues = SamConversionsMode.entries.map { it.stringValue }, invalidRawValues = listOf("non-existent-value"), runsNullableTest = true, valueString = { value -> value?.stringValue }, @@ -229,6 +261,7 @@ private val jvmCompilerArguments: List> = listOf( argumentName = "Xjspecify-annotations", argument = X_JSPECIFY_ANNOTATIONS, argumentValues = JspecifyAnnotationsMode.entries.toList(), + argumentRawValues = JspecifyAnnotationsMode.entries.map { it.stringValue }, invalidRawValues = listOf("non-existent-value"), runsNullableTest = true, valueString = { value -> value?.stringValue }, @@ -238,6 +271,7 @@ private val jvmCompilerArguments: List> = listOf( argumentName = "Xsupport-compatqual-checker-framework-annotations", argument = X_SUPPORT_COMPATQUAL_CHECKER_FRAMEWORK_ANNOTATIONS, argumentValues = CompatqualAnnotationsMode.entries.toList(), + argumentRawValues = CompatqualAnnotationsMode.entries.map { it.stringValue }, invalidRawValues = listOf("non-existent-value"), runsNullableTest = true, valueString = { value -> value?.stringValue }, @@ -253,6 +287,13 @@ private val jvmCompilerArguments: List> = listOf( testBaseDir.resolve("path/to/lib3.klib"), ) ), + argumentRawValues = listOf( + listOf( + testBaseDir.resolve("path/to/lib1.klib"), + testBaseDir.resolve("path/to/lib2.klib"), + testBaseDir.resolve("path/to/lib3.klib"), + ).joinToString(File.pathSeparator) { it.toFile().absolutePath } + ), invalidArgumentValues = listOf(listOf(testBaseDir.resolve("path/with${File.pathSeparator}separator"))), valueString = { value -> value?.joinToString(File.pathSeparator) { it.toFile().absolutePath } }, expectedArgumentStringsFor = { value -> listOf("-Xklib=$value") }, @@ -265,7 +306,14 @@ private val jvmCompilerArguments: List> = listOf( testBaseDir.resolve("path/to/java/src1"), testBaseDir.resolve("path/to/java/src2"), testBaseDir.resolve("path/to/java/src3"), - ) + ), + ), + argumentRawValues = listOf( + listOf( + testBaseDir.resolve("path/to/java/src1"), + testBaseDir.resolve("path/to/java/src2"), + testBaseDir.resolve("path/to/java/src3"), + ).joinToString(",") { it.toFile().absolutePath } ), invalidArgumentValues = listOf(listOf(testBaseDir.resolve("path/with,comma"))), valueString = { value -> value?.joinToString(",") { it.toFile().absolutePath } }, @@ -275,6 +323,7 @@ private val jvmCompilerArguments: List> = listOf( argumentName = "Xignored-annotations-for-bridges", argument = X_IGNORED_ANNOTATIONS_FOR_BRIDGES, argumentValues = listOf(listOf("com.example.MyAnnotation", "*")), + argumentRawValues = listOf(listOf("com.example.MyAnnotation", "*").joinToString(",")), skipBtaV1 = true, valueString = { value -> value?.joinToString(",") }, expectedArgumentStringsFor = { value -> listOf("-Xignored-annotations-for-bridges=$value") }, @@ -283,6 +332,7 @@ private val jvmCompilerArguments: List> = listOf( argumentName = "Xscript-resolver-environment", argument = X_SCRIPT_RESOLVER_ENVIRONMENT, argumentValues = listOf(listOf("key1=value1", "key2=value2")), + argumentRawValues = listOf(listOf("key1=value1", "key2=value2").joinToString(",")), valueString = { value -> value?.joinToString(",") }, expectedArgumentStringsFor = { value -> listOf("-Xscript-resolver-environment=$value") }, ), @@ -296,6 +346,19 @@ private val jvmCompilerArguments: List> = listOf( Jsr305.SpecificAnnotation("com.example.Nullable", Mode.IGNORE), ) ), + argumentRawValues = listOf( + listOf( + Jsr305.Global(Mode.STRICT), + Jsr305.UnderMigration(Mode.WARN), + Jsr305.SpecificAnnotation("com.example.Nullable", Mode.IGNORE), + ).joinToString(",") { item -> + when (item) { + is Jsr305.Global -> item.mode.stringValue + is Jsr305.UnderMigration -> "under-migration:${item.mode.stringValue}" + is Jsr305.SpecificAnnotation -> "${item.annotationFqName}:${item.mode.stringValue}" + } + } + ), valueString = { value -> value?.joinToString(",") { item -> when (item) { @@ -316,6 +379,12 @@ private val jvmCompilerArguments: List> = listOf( NullabilityAnnotation("javax.annotation.Nonnull", NullabilityAnnotation.Mode.WARN), ) ), + argumentRawValues = listOf( + listOf( + NullabilityAnnotation("javax.annotation.Nullable", NullabilityAnnotation.Mode.STRICT), + NullabilityAnnotation("javax.annotation.Nonnull", NullabilityAnnotation.Mode.WARN), + ).joinToString(",") { "${it.annotationFqName}:${it.mode.stringValue}" } + ), valueString = { value -> value?.joinToString(",") { "${it.annotationFqName}:${it.mode.stringValue}" } }, expectedArgumentStringsFor = { value -> listOf("-Xnullability-annotations=$value") }, ), @@ -329,6 +398,13 @@ private val jvmCompilerArguments: List> = listOf( outputDir = testBaseDir.resolve("/path/to/snapshots") ) ), + argumentRawValues = listOf( + ProfileCompilerCommand( + profilerPath = testBaseDir.resolve("path/to/libasyncProfiler.so"), + command = "event=cpu,interval=1ms,threads,start", + outputDir = testBaseDir.resolve("/path/to/snapshots") + ).let { it.profilerPath.toFile().absolutePath + File.pathSeparator + it.command + File.pathSeparator + it.outputDir.toFile().absolutePath } + ), valueString = { value -> value?.let { value.profilerPath.toFile().absolutePath + File.pathSeparator + value.command + File.pathSeparator + value.outputDir.toFile().absolutePath } }, diff --git a/compiler/build-tools/kotlin-build-tools-api-tests/src/testCompatibility/kotlin/arguments/model/jvm/JvmArgumentTestDescriptor.kt b/compiler/build-tools/kotlin-build-tools-api-tests/src/testCompatibility/kotlin/arguments/model/jvm/JvmArgumentTestDescriptor.kt index fb53d6e1af896..561cca5eb672e 100644 --- a/compiler/build-tools/kotlin-build-tools-api-tests/src/testCompatibility/kotlin/arguments/model/jvm/JvmArgumentTestDescriptor.kt +++ b/compiler/build-tools/kotlin-build-tools-api-tests/src/testCompatibility/kotlin/arguments/model/jvm/JvmArgumentTestDescriptor.kt @@ -13,6 +13,7 @@ internal class JvmArgumentTestDescriptor( override val argumentName: String, override val argument: JvmCompilerArguments.JvmCompilerArgument, override val argumentValues: List, + override val argumentRawValues: List, override val invalidArgumentValues: List = emptyList(), override val invalidRawValues: List = emptyList(), override val runsNullableTest: Boolean = false,