Add support for gradle option useFir and appropriate property...
`kotlin.useFir`
This commit is contained in:
+1
@@ -304,6 +304,7 @@ abstract class CommonCompilerArguments : CommonToolArguments() {
|
|||||||
)
|
)
|
||||||
var checkStickyPhaseConditions: Boolean by FreezableVar(false)
|
var checkStickyPhaseConditions: Boolean by FreezableVar(false)
|
||||||
|
|
||||||
|
@GradleOption(DefaultValues.BooleanFalseDefault::class)
|
||||||
@Argument(
|
@Argument(
|
||||||
value = "-Xuse-fir",
|
value = "-Xuse-fir",
|
||||||
description = "Compile using Front-end IR. Warning: this feature is far from being production-ready"
|
description = "Compile using Front-end IR. Warning: this feature is far from being production-ready"
|
||||||
|
|||||||
+6
@@ -17,4 +17,10 @@ interface KotlinCommonOptions : org.jetbrains.kotlin.gradle.dsl.KotlinCommonToo
|
|||||||
* Default value: null
|
* Default value: null
|
||||||
*/
|
*/
|
||||||
var languageVersion: kotlin.String?
|
var languageVersion: kotlin.String?
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Compile using Front-end IR. Warning: this feature is far from being production-ready
|
||||||
|
* Default value: false
|
||||||
|
*/
|
||||||
|
var useFir: kotlin.Boolean
|
||||||
}
|
}
|
||||||
|
|||||||
+6
-1
@@ -231,7 +231,8 @@ abstract class BaseGradleIT {
|
|||||||
val jsCompilerType: KotlinJsCompilerType? = null,
|
val jsCompilerType: KotlinJsCompilerType? = null,
|
||||||
val configurationCache: Boolean = false,
|
val configurationCache: Boolean = false,
|
||||||
val configurationCacheProblems: ConfigurationCacheProblems = ConfigurationCacheProblems.FAIL,
|
val configurationCacheProblems: ConfigurationCacheProblems = ConfigurationCacheProblems.FAIL,
|
||||||
val warningMode: WarningMode = WarningMode.Fail
|
val warningMode: WarningMode = WarningMode.Fail,
|
||||||
|
val useFir: Boolean = false
|
||||||
)
|
)
|
||||||
|
|
||||||
enum class ConfigurationCacheProblems {
|
enum class ConfigurationCacheProblems {
|
||||||
@@ -907,6 +908,10 @@ Finished executing task ':$taskName'|
|
|||||||
add("-Pkotlin.js.compiler=$it")
|
add("-Pkotlin.js.compiler=$it")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (options.useFir) {
|
||||||
|
add("-Pkotlin.useFir=true")
|
||||||
|
}
|
||||||
|
|
||||||
add("-Dorg.gradle.unsafe.configuration-cache=${options.configurationCache}")
|
add("-Dorg.gradle.unsafe.configuration-cache=${options.configurationCache}")
|
||||||
add("-Dorg.gradle.unsafe.configuration-cache-problems=${options.configurationCacheProblems.name.toLowerCase()}")
|
add("-Dorg.gradle.unsafe.configuration-cache-problems=${options.configurationCacheProblems.name.toLowerCase()}")
|
||||||
|
|
||||||
|
|||||||
+9
@@ -39,6 +39,13 @@ internal abstract class KotlinJsOptionsBase : org.jetbrains.kotlin.gradle.dsl.Ko
|
|||||||
languageVersionField = value
|
languageVersionField = value
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private var useFirField: kotlin.Boolean? = null
|
||||||
|
override var useFir: kotlin.Boolean
|
||||||
|
get() = useFirField ?: false
|
||||||
|
set(value) {
|
||||||
|
useFirField = value
|
||||||
|
}
|
||||||
|
|
||||||
private var friendModulesDisabledField: kotlin.Boolean? = null
|
private var friendModulesDisabledField: kotlin.Boolean? = null
|
||||||
override var friendModulesDisabled: kotlin.Boolean
|
override var friendModulesDisabled: kotlin.Boolean
|
||||||
get() = friendModulesDisabledField ?: false
|
get() = friendModulesDisabledField ?: false
|
||||||
@@ -122,6 +129,7 @@ internal abstract class KotlinJsOptionsBase : org.jetbrains.kotlin.gradle.dsl.Ko
|
|||||||
verboseField?.let { args.verbose = it }
|
verboseField?.let { args.verbose = it }
|
||||||
apiVersionField?.let { args.apiVersion = it }
|
apiVersionField?.let { args.apiVersion = it }
|
||||||
languageVersionField?.let { args.languageVersion = it }
|
languageVersionField?.let { args.languageVersion = it }
|
||||||
|
useFirField?.let { args.useFir = it }
|
||||||
friendModulesDisabledField?.let { args.friendModulesDisabled = it }
|
friendModulesDisabledField?.let { args.friendModulesDisabled = it }
|
||||||
mainField?.let { args.main = it }
|
mainField?.let { args.main = it }
|
||||||
metaInfoField?.let { args.metaInfo = it }
|
metaInfoField?.let { args.metaInfo = it }
|
||||||
@@ -142,6 +150,7 @@ internal fun org.jetbrains.kotlin.cli.common.arguments.K2JSCompilerArguments.fil
|
|||||||
verbose = false
|
verbose = false
|
||||||
apiVersion = null
|
apiVersion = null
|
||||||
languageVersion = null
|
languageVersion = null
|
||||||
|
useFir = false
|
||||||
friendModulesDisabled = false
|
friendModulesDisabled = false
|
||||||
main = "call"
|
main = "call"
|
||||||
metaInfo = true
|
metaInfo = true
|
||||||
|
|||||||
+9
@@ -39,6 +39,13 @@ internal abstract class KotlinJvmOptionsBase : org.jetbrains.kotlin.gradle.dsl.K
|
|||||||
languageVersionField = value
|
languageVersionField = value
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private var useFirField: kotlin.Boolean? = null
|
||||||
|
override var useFir: kotlin.Boolean
|
||||||
|
get() = useFirField ?: false
|
||||||
|
set(value) {
|
||||||
|
useFirField = value
|
||||||
|
}
|
||||||
|
|
||||||
private var includeRuntimeField: kotlin.Boolean? = null
|
private var includeRuntimeField: kotlin.Boolean? = null
|
||||||
override var includeRuntime: kotlin.Boolean
|
override var includeRuntime: kotlin.Boolean
|
||||||
get() = includeRuntimeField ?: false
|
get() = includeRuntimeField ?: false
|
||||||
@@ -115,6 +122,7 @@ internal abstract class KotlinJvmOptionsBase : org.jetbrains.kotlin.gradle.dsl.K
|
|||||||
verboseField?.let { args.verbose = it }
|
verboseField?.let { args.verbose = it }
|
||||||
apiVersionField?.let { args.apiVersion = it }
|
apiVersionField?.let { args.apiVersion = it }
|
||||||
languageVersionField?.let { args.languageVersion = it }
|
languageVersionField?.let { args.languageVersion = it }
|
||||||
|
useFirField?.let { args.useFir = it }
|
||||||
includeRuntimeField?.let { args.includeRuntime = it }
|
includeRuntimeField?.let { args.includeRuntime = it }
|
||||||
javaParametersField?.let { args.javaParameters = it }
|
javaParametersField?.let { args.javaParameters = it }
|
||||||
jdkHomeField?.let { args.jdkHome = it }
|
jdkHomeField?.let { args.jdkHome = it }
|
||||||
@@ -134,6 +142,7 @@ internal fun org.jetbrains.kotlin.cli.common.arguments.K2JVMCompilerArguments.fi
|
|||||||
verbose = false
|
verbose = false
|
||||||
apiVersion = null
|
apiVersion = null
|
||||||
languageVersion = null
|
languageVersion = null
|
||||||
|
useFir = false
|
||||||
includeRuntime = false
|
includeRuntime = false
|
||||||
javaParameters = false
|
javaParameters = false
|
||||||
jdkHome = null
|
jdkHome = null
|
||||||
|
|||||||
+9
@@ -39,12 +39,20 @@ internal abstract class KotlinMultiplatformCommonOptionsBase : org.jetbrains.kot
|
|||||||
languageVersionField = value
|
languageVersionField = value
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private var useFirField: kotlin.Boolean? = null
|
||||||
|
override var useFir: kotlin.Boolean
|
||||||
|
get() = useFirField ?: false
|
||||||
|
set(value) {
|
||||||
|
useFirField = value
|
||||||
|
}
|
||||||
|
|
||||||
internal open fun updateArguments(args: org.jetbrains.kotlin.cli.common.arguments.K2MetadataCompilerArguments) {
|
internal open fun updateArguments(args: org.jetbrains.kotlin.cli.common.arguments.K2MetadataCompilerArguments) {
|
||||||
allWarningsAsErrorsField?.let { args.allWarningsAsErrors = it }
|
allWarningsAsErrorsField?.let { args.allWarningsAsErrors = it }
|
||||||
suppressWarningsField?.let { args.suppressWarnings = it }
|
suppressWarningsField?.let { args.suppressWarnings = it }
|
||||||
verboseField?.let { args.verbose = it }
|
verboseField?.let { args.verbose = it }
|
||||||
apiVersionField?.let { args.apiVersion = it }
|
apiVersionField?.let { args.apiVersion = it }
|
||||||
languageVersionField?.let { args.languageVersion = it }
|
languageVersionField?.let { args.languageVersion = it }
|
||||||
|
useFirField?.let { args.useFir = it }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -54,4 +62,5 @@ internal fun org.jetbrains.kotlin.cli.common.arguments.K2MetadataCompilerArgumen
|
|||||||
verbose = false
|
verbose = false
|
||||||
apiVersion = null
|
apiVersion = null
|
||||||
languageVersion = null
|
languageVersion = null
|
||||||
|
useFir = false
|
||||||
}
|
}
|
||||||
|
|||||||
+8
-1
@@ -16,7 +16,6 @@ import org.jetbrains.kotlin.gradle.plugin.statistics.KotlinBuildStatsService
|
|||||||
import org.jetbrains.kotlin.gradle.targets.js.dukat.ExternalsOutputFormat
|
import org.jetbrains.kotlin.gradle.targets.js.dukat.ExternalsOutputFormat
|
||||||
import org.jetbrains.kotlin.gradle.targets.js.dukat.ExternalsOutputFormat.Companion.externalsOutputFormatProperty
|
import org.jetbrains.kotlin.gradle.targets.js.dukat.ExternalsOutputFormat.Companion.externalsOutputFormatProperty
|
||||||
import org.jetbrains.kotlin.gradle.targets.js.webpack.WebpackMajorVersion
|
import org.jetbrains.kotlin.gradle.targets.js.webpack.WebpackMajorVersion
|
||||||
import org.jetbrains.kotlin.gradle.targets.js.webpack.WebpackMajorVersion.Companion.warningMessage
|
|
||||||
import org.jetbrains.kotlin.gradle.targets.native.DisabledNativeTargetsReporter
|
import org.jetbrains.kotlin.gradle.targets.native.DisabledNativeTargetsReporter
|
||||||
import org.jetbrains.kotlin.gradle.tasks.AbstractKotlinCompile
|
import org.jetbrains.kotlin.gradle.tasks.AbstractKotlinCompile
|
||||||
import org.jetbrains.kotlin.gradle.tasks.Kotlin2JsCompile
|
import org.jetbrains.kotlin.gradle.tasks.Kotlin2JsCompile
|
||||||
@@ -37,6 +36,11 @@ internal fun PropertiesProvider.mapKotlinTaskProperties(task: AbstractKotlinComp
|
|||||||
usePreciseJavaTracking?.let {
|
usePreciseJavaTracking?.let {
|
||||||
task.usePreciseJavaTracking = it
|
task.usePreciseJavaTracking = it
|
||||||
}
|
}
|
||||||
|
useFir?.let {
|
||||||
|
if (it == true) {
|
||||||
|
task.kotlinOptions.useFir = true
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (task is Kotlin2JsCompile) {
|
if (task is Kotlin2JsCompile) {
|
||||||
@@ -90,6 +94,9 @@ internal class PropertiesProvider private constructor(private val project: Proje
|
|||||||
val usePreciseJavaTracking: Boolean?
|
val usePreciseJavaTracking: Boolean?
|
||||||
get() = booleanProperty("kotlin.incremental.usePreciseJavaTracking")
|
get() = booleanProperty("kotlin.incremental.usePreciseJavaTracking")
|
||||||
|
|
||||||
|
val useFir: Boolean?
|
||||||
|
get() = booleanProperty("kotlin.useFir")
|
||||||
|
|
||||||
private val useFallbackCompilerSearchPropName = "kotlin.useFallbackCompilerSearch"
|
private val useFallbackCompilerSearchPropName = "kotlin.useFallbackCompilerSearch"
|
||||||
|
|
||||||
@Deprecated("Unsupported and will be removed in next major releases")
|
@Deprecated("Unsupported and will be removed in next major releases")
|
||||||
|
|||||||
+4
@@ -42,6 +42,10 @@ abstract class AbstractKotlinNativeCompilation(
|
|||||||
get() = languageSettings.languageVersion
|
get() = languageSettings.languageVersion
|
||||||
set(value) { languageSettings.languageVersion = value }
|
set(value) { languageSettings.languageVersion = value }
|
||||||
|
|
||||||
|
override var useFir: Boolean
|
||||||
|
get() = false
|
||||||
|
set(@Suppress("UNUSED_PARAMETER") value) {}
|
||||||
|
|
||||||
override var allWarningsAsErrors: Boolean = false
|
override var allWarningsAsErrors: Boolean = false
|
||||||
override var suppressWarnings: Boolean = false
|
override var suppressWarnings: Boolean = false
|
||||||
override var verbose: Boolean = false
|
override var verbose: Boolean = false
|
||||||
|
|||||||
Reference in New Issue
Block a user