Skip to content

Commit d49ab02

Browse files
committed
Android Extensions: Migrate enabled status check to Gradle importer #KT-17641
1 parent 9f6ebc9 commit d49ab02

File tree

2 files changed

+23
-23
lines changed

2 files changed

+23
-23
lines changed

plugins/android-extensions/android-extensions-idea/src/org/jetbrains/kotlin/android/synthetic/idea/ExperimentalUtils.kt

Lines changed: 21 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -16,23 +16,35 @@
1616

1717
package org.jetbrains.kotlin.android.synthetic.idea
1818

19+
import com.intellij.openapi.module.Module
1920
import org.jetbrains.kotlin.analyzer.ModuleInfo
2021
import org.jetbrains.kotlin.android.synthetic.AndroidCommandLineProcessor.Companion.ANDROID_COMPILER_PLUGIN_ID
2122
import org.jetbrains.kotlin.android.synthetic.AndroidCommandLineProcessor.Companion.EXPERIMENTAL_OPTION
23+
import org.jetbrains.kotlin.android.synthetic.AndroidCommandLineProcessor.Companion.ENABLED_OPTION
24+
import org.jetbrains.kotlin.compiler.plugin.CliOption
2225
import org.jetbrains.kotlin.idea.caches.resolve.ModuleSourceInfo
2326
import org.jetbrains.kotlin.idea.facet.KotlinFacet
2427

25-
private val ANNOTATION_OPTION_PREFIX = "plugin:$ANDROID_COMPILER_PLUGIN_ID:${EXPERIMENTAL_OPTION.name}="
28+
private val ANNOTATION_OPTION_PREFIX = "plugin:$ANDROID_COMPILER_PLUGIN_ID:"
29+
30+
private fun Module.isOptionEnabledInFacet(option: CliOption): Boolean {
31+
val kotlinFacet = KotlinFacet.get(this) ?: return false
32+
val commonArgs = kotlinFacet.configuration.settings.compilerArguments ?: return false
33+
34+
val prefix = ANNOTATION_OPTION_PREFIX + option.name + "="
35+
36+
val optionValue = commonArgs.pluginOptions
37+
?.firstOrNull { it.startsWith(prefix) }
38+
?.substring(prefix.length)
39+
40+
return optionValue == "true"
41+
}
42+
43+
internal val Module.androidExtensionsIsEnabled: Boolean
44+
get() = isOptionEnabledInFacet(ENABLED_OPTION)
2645

2746
internal val ModuleInfo.androidExtensionsIsExperimental: Boolean
2847
get() {
2948
val module = (this as? ModuleSourceInfo)?.module ?: return false
30-
val kotlinFacet = KotlinFacet.get(module) ?: return false
31-
val commonArgs = kotlinFacet.configuration.settings.compilerArguments ?: return false
32-
33-
val isExperimentalString = commonArgs.pluginOptions
34-
?.firstOrNull { it.startsWith(ANNOTATION_OPTION_PREFIX) }
35-
?.substring(ANNOTATION_OPTION_PREFIX.length)
36-
37-
return isExperimentalString == "true"
49+
return module.isOptionEnabledInFacet(EXPERIMENTAL_OPTION)
3850
}

plugins/android-extensions/android-extensions-idea/src/org/jetbrains/kotlin/android/synthetic/idea/res/IDEAndroidPackageFragmentProviderExtension.kt

Lines changed: 2 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -16,28 +16,20 @@
1616

1717
package org.jetbrains.kotlin.android.synthetic.idea.res
1818

19-
import com.android.tools.idea.gradle.facet.AndroidGradleFacet
20-
import com.android.tools.idea.gradle.parser.GradleBuildFile
2119
import com.intellij.openapi.application.ApplicationManager
2220
import com.intellij.openapi.module.Module
2321
import com.intellij.openapi.module.ModuleServiceManager
2422
import com.intellij.openapi.project.Project
2523
import com.intellij.psi.PsiManager
2624
import org.jetbrains.android.facet.AndroidFacet
2725
import org.jetbrains.kotlin.analyzer.ModuleInfo
28-
import org.jetbrains.kotlin.android.synthetic.AndroidCommandLineProcessor.Companion.ANDROID_COMPILER_PLUGIN_ID
29-
import org.jetbrains.kotlin.android.synthetic.AndroidCommandLineProcessor.Companion.EXPERIMENTAL_OPTION
26+
import org.jetbrains.kotlin.android.synthetic.idea.androidExtensionsIsEnabled
3027
import org.jetbrains.kotlin.android.synthetic.idea.androidExtensionsIsExperimental
31-
import org.jetbrains.kotlin.android.synthetic.idea.isExperimental
3228
import org.jetbrains.kotlin.android.synthetic.res.AndroidLayoutXmlFileManager
3329
import org.jetbrains.kotlin.android.synthetic.res.AndroidPackageFragmentProviderExtension
3430
import org.jetbrains.kotlin.idea.caches.resolve.ModuleSourceInfo
35-
import org.jetbrains.kotlin.idea.facet.KotlinFacet
36-
import org.jetbrains.plugins.groovy.lang.psi.GroovyFile
3731

3832
class IDEAndroidPackageFragmentProviderExtension(val project: Project) : AndroidPackageFragmentProviderExtension() {
39-
private val psiManager = PsiManager.getInstance(project)
40-
4133
override fun isExperimental(moduleInfo: ModuleInfo?): Boolean {
4234
return moduleInfo?.androidExtensionsIsExperimental ?: false
4335
}
@@ -56,11 +48,7 @@ class IDEAndroidPackageFragmentProviderExtension(val project: Project) : Android
5648
private fun isAndroidExtensionsEnabled(module: Module): Boolean {
5749
// Android Extensions should be always enabled for Android/JPS
5850
if (isLegacyIdeaAndroidModule(module)) return true
59-
60-
val androidGradleFacet = AndroidGradleFacet.getInstance(module) ?: return false
61-
val buildFile = androidGradleFacet.gradleModel?.buildFile ?: return false
62-
val buildGroovyFile = psiManager.findFile(buildFile) as? GroovyFile ?: return false
63-
return GradleBuildFile.getPlugins(buildGroovyFile).contains("kotlin-android-extensions")
51+
return module.androidExtensionsIsEnabled
6452
}
6553

6654
private fun isLegacyIdeaAndroidModule(module: Module): Boolean {

0 commit comments

Comments
 (0)