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:
Alexander Udalov
2018-09-28 17:11:21 +02:00
parent c59779f5b9
commit 009f18f1f4
33 changed files with 130 additions and 123 deletions
@@ -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
}
}