Android Extensions: Do not generate synthetic components in Kotlin Bytecode tool window when the Gradle plugin is disabled

This commit is contained in:
Yan Zhulanow
2017-11-10 21:12:08 +09:00
parent 8496ff8611
commit ecfb045790
4 changed files with 13 additions and 1 deletions
@@ -34,7 +34,6 @@ import org.jetbrains.kotlin.descriptors.*
import org.jetbrains.kotlin.psi.KtClass
import org.jetbrains.kotlin.psi.KtClassOrObject
import org.jetbrains.kotlin.psi.KtElement
import org.jetbrains.kotlin.resolve.DescriptorUtils
import org.jetbrains.kotlin.resolve.calls.model.ResolvedCall
import org.jetbrains.kotlin.resolve.descriptorUtil.getSuperClassOrAny
import org.jetbrains.kotlin.resolve.jvm.diagnostics.JvmDeclarationOrigin
@@ -64,6 +63,7 @@ abstract class AbstractAndroidExtensionsExpressionCodegenExtension : ExpressionC
val classOrObject: KtClassOrObject,
val containerOptions: ContainerOptionsProxy)
protected abstract fun isEnabled(element: KtElement?): Boolean
protected abstract fun isExperimental(element: KtElement?): Boolean
protected abstract fun getGlobalCacheImpl(element: KtElement?): CacheImplementation
@@ -153,6 +153,8 @@ abstract class AbstractAndroidExtensionsExpressionCodegenExtension : ExpressionC
val classBuilder = codegen.v
val targetClass = codegen.myClass as? KtClass ?: return
if (!isEnabled(targetClass)) return
val container = codegen.descriptor
if (container.kind != ClassKind.CLASS && container.kind != ClassKind.OBJECT) return
@@ -24,5 +24,6 @@ class CliAndroidExtensionsExpressionCodegenExtension(
private val globalCacheImpl: CacheImplementation
) : AbstractAndroidExtensionsExpressionCodegenExtension() {
override fun isExperimental(element: KtElement?) = isExperimental
override fun isEnabled(element: KtElement?) = true
override fun getGlobalCacheImpl(element: KtElement?) = globalCacheImpl
}
@@ -52,6 +52,12 @@ private fun isTestMode(module: Module): Boolean {
internal val Module.androidExtensionsIsEnabled: Boolean
get() = isTestMode(this) || getOptionValueInFacet(ENABLED_OPTION) == "true"
internal val ModuleInfo.androidExtensionsIsEnabled: Boolean
get() {
val module = (this as? ModuleSourceInfo)?.module ?: return false
return module.androidExtensionsIsEnabled
}
internal val ModuleInfo.androidExtensionsIsExperimental: Boolean
get() {
val module = (this as? ModuleSourceInfo)?.module ?: return false
@@ -25,6 +25,9 @@ class IDEAndroidExtensionsExpressionCodegenExtension : AbstractAndroidExtensions
override fun isExperimental(element: KtElement?) =
element?.getModuleInfo()?.androidExtensionsIsExperimental ?: false
override fun isEnabled(element: KtElement?) =
element?.getModuleInfo()?.androidExtensionsIsEnabled ?: false
override fun getGlobalCacheImpl(element: KtElement?) =
element?.getModuleInfo()?.androidExtensionsGlobalCacheImpl ?: CacheImplementation.DEFAULT
}