Split AnalysisFlag values to AnalysisFlags and JvmAnalysisFlags
Declare AnalysisFlags in module 'frontend', and JvmAnalysisFlags in module 'frontend.java', to avoid leaking Java-related logic to common compiler code
This commit is contained in:
@@ -10,8 +10,8 @@ import kotlin.properties.ReadOnlyProperty
|
||||
import kotlin.reflect.KProperty
|
||||
|
||||
class AnalysisFlag<out T> internal constructor(
|
||||
private val name: String,
|
||||
val defaultValue: T
|
||||
private val name: String,
|
||||
val defaultValue: T
|
||||
) {
|
||||
override fun equals(other: Any?): Boolean = other is AnalysisFlag<*> && other.name == name
|
||||
|
||||
@@ -19,60 +19,27 @@ class AnalysisFlag<out T> internal constructor(
|
||||
|
||||
override fun toString(): String = name
|
||||
|
||||
private class Flag<out T>(name: String, defaultValue: T) : ReadOnlyProperty<Any?, AnalysisFlag<T>> {
|
||||
class Delegate<out T>(name: String, defaultValue: T) : ReadOnlyProperty<Any?, AnalysisFlag<T>> {
|
||||
private val flag = AnalysisFlag(name, defaultValue)
|
||||
|
||||
override fun getValue(thisRef: Any?, property: KProperty<*>): AnalysisFlag<T> = flag
|
||||
}
|
||||
|
||||
object Delegates {
|
||||
object Boolean {
|
||||
operator fun provideDelegate(instance: Any?, property: KProperty<*>) = Flag(property.name, false)
|
||||
operator fun provideDelegate(instance: Any?, property: KProperty<*>) = Delegate(property.name, false)
|
||||
}
|
||||
|
||||
object Jsr305StateWarnByDefault {
|
||||
operator fun provideDelegate(instance: Any?, property: KProperty<*>) = Flag(property.name, Jsr305State.DEFAULT)
|
||||
operator fun provideDelegate(instance: Any?, property: KProperty<*>) = Delegate(property.name, Jsr305State.DEFAULT)
|
||||
}
|
||||
|
||||
object JvmDefaultModeDisabledByDefaul {
|
||||
operator fun provideDelegate(instance: Any?, property: KProperty<*>) = Flag(property.name, org.jetbrains.kotlin.config.JvmDefaultMode.DISABLE)
|
||||
object JvmDefaultModeDisabledByDefault {
|
||||
operator fun provideDelegate(instance: Any?, property: KProperty<*>) = Delegate(property.name, JvmDefaultMode.DISABLE)
|
||||
}
|
||||
|
||||
object ListOfStrings {
|
||||
operator fun provideDelegate(instance: Any?, property: KProperty<*>) = Flag(property.name, emptyList<String>())
|
||||
operator fun provideDelegate(instance: Any?, property: KProperty<*>) = Delegate(property.name, emptyList<String>())
|
||||
}
|
||||
}
|
||||
|
||||
companion object Flags {
|
||||
@JvmStatic
|
||||
val skipMetadataVersionCheck by Flag.Boolean
|
||||
|
||||
@JvmStatic
|
||||
val strictMetadataVersionSemantics by Flag.Boolean
|
||||
|
||||
@JvmStatic
|
||||
val multiPlatformDoNotCheckActual by Flag.Boolean
|
||||
|
||||
@JvmStatic
|
||||
val jsr305 by Flag.Jsr305StateWarnByDefault
|
||||
|
||||
@JvmStatic
|
||||
val allowKotlinPackage by Flag.Boolean
|
||||
|
||||
@JvmStatic
|
||||
val experimental by Flag.ListOfStrings
|
||||
|
||||
@JvmStatic
|
||||
val useExperimental by Flag.ListOfStrings
|
||||
|
||||
@JvmStatic
|
||||
val explicitApiVersion by Flag.Boolean
|
||||
|
||||
@JvmStatic
|
||||
val ignoreDataFlowInAssert by Flag.Boolean
|
||||
|
||||
@JvmStatic
|
||||
val jvmDefaultMode by Flag.JvmDefaultModeDisabledByDefaul
|
||||
|
||||
@JvmStatic
|
||||
val allowResultReturnType by Flag.Boolean
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user