Check if serialization plugin presents in the facet compiler classpath before applying extensions logic

#KT-27166 Fixed
This commit is contained in:
Leonid Startsev
2018-09-26 16:09:57 +03:00
parent 088cd4b5e3
commit b611facd71
12 changed files with 156 additions and 30 deletions
@@ -27,7 +27,9 @@ import org.jetbrains.kotlin.android.synthetic.AndroidCommandLineProcessor.Compan
import org.jetbrains.kotlin.android.synthetic.AndroidCommandLineProcessor.Companion.DEFAULT_CACHE_IMPL_OPTION
import org.jetbrains.kotlin.android.synthetic.AndroidComponentRegistrar.Companion.parseCacheImplementationType
import org.jetbrains.kotlin.compiler.plugin.CliOption
import org.jetbrains.kotlin.idea.core.unwrapModuleSourceInfo
import org.jetbrains.kotlin.idea.facet.KotlinFacet
import org.jetbrains.kotlin.resolve.jvm.platform.JvmPlatform
private val ANNOTATION_OPTION_PREFIX = "plugin:$ANDROID_COMPILER_PLUGIN_ID:"
@@ -51,6 +53,8 @@ private fun isTestMode(module: Module): Boolean {
internal val Module.androidExtensionsIsEnabled: Boolean
get() = isTestMode(this) || getOptionValueInFacet(ENABLED_OPTION) == "true"
internal fun ModuleInfo.findAndroidModuleInfo() = unwrapModuleSourceInfo()?.takeIf { it.platform is JvmPlatform }
internal val ModuleInfo.androidExtensionsIsEnabled: Boolean
get() {
val module = this.findAndroidModuleInfo()?.module ?: return false
@@ -1,19 +0,0 @@
/*
* Copyright 2010-2018 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license
* that can be found in the license/LICENSE.txt file.
*/
package org.jetbrains.kotlin.android.synthetic.idea
import org.jetbrains.kotlin.analyzer.ModuleInfo
import org.jetbrains.kotlin.idea.caches.project.ModuleSourceInfo
import org.jetbrains.kotlin.idea.caches.project.PlatformModuleInfo
import org.jetbrains.kotlin.resolve.jvm.platform.JvmPlatform
internal fun ModuleInfo.findAndroidModuleInfo(): ModuleSourceInfo? {
return when (this) {
is ModuleSourceInfo -> this.takeIf { it.platform is JvmPlatform }
is PlatformModuleInfo -> this.platformModule.takeIf { it.platform is JvmPlatform }
else -> null
}
}