Android Extensions: Support platform modules (KT-26169)
This commit is contained in:
+1
-3
@@ -25,7 +25,6 @@ import com.intellij.psi.impl.source.tree.LeafPsiElement
|
||||
import com.intellij.psi.xml.XmlAttribute
|
||||
import org.jetbrains.kotlin.android.synthetic.res.AndroidLayoutXmlFileManager
|
||||
import org.jetbrains.kotlin.descriptors.PropertyDescriptor
|
||||
import org.jetbrains.kotlin.idea.caches.project.ModuleSourceInfo
|
||||
import org.jetbrains.kotlin.idea.caches.project.getModuleInfo
|
||||
import org.jetbrains.kotlin.idea.caches.resolve.resolveToCall
|
||||
import org.jetbrains.kotlin.psi.KtSimpleNameExpression
|
||||
@@ -51,8 +50,7 @@ class AndroidGotoDeclarationHandler : GotoDeclarationHandler {
|
||||
}
|
||||
|
||||
private fun getLayoutManager(sourceElement: PsiElement): AndroidLayoutXmlFileManager? {
|
||||
val moduleInfo = sourceElement.getModuleInfo()
|
||||
if (moduleInfo !is ModuleSourceInfo) return null
|
||||
val moduleInfo = sourceElement.getModuleInfo().findAndroidModuleInfo() ?: return null
|
||||
return ModuleServiceManager.getService(moduleInfo.module, AndroidLayoutXmlFileManager::class.java)
|
||||
}
|
||||
|
||||
|
||||
+3
-5
@@ -20,7 +20,6 @@ import com.intellij.openapi.application.ApplicationManager
|
||||
import com.intellij.openapi.module.Module
|
||||
import kotlinx.android.extensions.CacheImplementation
|
||||
import org.jetbrains.kotlin.analyzer.ModuleInfo
|
||||
import org.jetbrains.kotlin.android.model.AndroidModuleInfoProvider
|
||||
import org.jetbrains.kotlin.android.model.isAndroidModule
|
||||
import org.jetbrains.kotlin.android.synthetic.AndroidCommandLineProcessor.Companion.ANDROID_COMPILER_PLUGIN_ID
|
||||
import org.jetbrains.kotlin.android.synthetic.AndroidCommandLineProcessor.Companion.EXPERIMENTAL_OPTION
|
||||
@@ -28,7 +27,6 @@ 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.caches.project.ModuleSourceInfo
|
||||
import org.jetbrains.kotlin.idea.facet.KotlinFacet
|
||||
|
||||
private val ANNOTATION_OPTION_PREFIX = "plugin:$ANDROID_COMPILER_PLUGIN_ID:"
|
||||
@@ -55,13 +53,13 @@ internal val Module.androidExtensionsIsEnabled: Boolean
|
||||
|
||||
internal val ModuleInfo.androidExtensionsIsEnabled: Boolean
|
||||
get() {
|
||||
val module = (this as? ModuleSourceInfo)?.module ?: return false
|
||||
val module = this.findAndroidModuleInfo()?.module ?: return false
|
||||
return module.androidExtensionsIsEnabled
|
||||
}
|
||||
|
||||
internal val ModuleInfo.androidExtensionsIsExperimental: Boolean
|
||||
get() {
|
||||
val module = (this as? ModuleSourceInfo)?.module ?: return false
|
||||
val module = this.findAndroidModuleInfo()?.module ?: return false
|
||||
return module.androidExtensionsIsExperimental
|
||||
}
|
||||
|
||||
@@ -73,6 +71,6 @@ internal val Module.androidExtensionsIsExperimental: Boolean
|
||||
|
||||
val ModuleInfo.androidExtensionsGlobalCacheImpl: CacheImplementation
|
||||
get() {
|
||||
val module = (this as? ModuleSourceInfo)?.module ?: return CacheImplementation.NO_CACHE
|
||||
val module = this.findAndroidModuleInfo()?.module ?: return CacheImplementation.NO_CACHE
|
||||
return parseCacheImplementationType(module.getOptionValueInFacet(DEFAULT_CACHE_IMPL_OPTION))
|
||||
}
|
||||
+19
@@ -0,0 +1,19 @@
|
||||
/*
|
||||
* 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
|
||||
}
|
||||
}
|
||||
+2
-4
@@ -21,12 +21,11 @@ import com.intellij.openapi.module.ModuleServiceManager
|
||||
import com.intellij.openapi.project.Project
|
||||
import org.jetbrains.kotlin.analyzer.ModuleInfo
|
||||
import org.jetbrains.kotlin.android.model.AndroidModuleInfoProvider
|
||||
import org.jetbrains.kotlin.android.model.isAndroidModule
|
||||
import org.jetbrains.kotlin.android.synthetic.idea.androidExtensionsIsEnabled
|
||||
import org.jetbrains.kotlin.android.synthetic.idea.androidExtensionsIsExperimental
|
||||
import org.jetbrains.kotlin.android.synthetic.idea.findAndroidModuleInfo
|
||||
import org.jetbrains.kotlin.android.synthetic.res.AndroidLayoutXmlFileManager
|
||||
import org.jetbrains.kotlin.android.synthetic.res.AndroidPackageFragmentProviderExtension
|
||||
import org.jetbrains.kotlin.idea.caches.project.ModuleSourceInfo
|
||||
|
||||
class IDEAndroidPackageFragmentProviderExtension(val project: Project) : AndroidPackageFragmentProviderExtension() {
|
||||
override fun isExperimental(moduleInfo: ModuleInfo?): Boolean {
|
||||
@@ -34,8 +33,7 @@ class IDEAndroidPackageFragmentProviderExtension(val project: Project) : Android
|
||||
}
|
||||
|
||||
override fun getLayoutXmlFileManager(project: Project, moduleInfo: ModuleInfo?): AndroidLayoutXmlFileManager? {
|
||||
val moduleSourceInfo = moduleInfo as? ModuleSourceInfo ?: return null
|
||||
val module = moduleSourceInfo.module
|
||||
val module = moduleInfo?.findAndroidModuleInfo()?.module ?: return null
|
||||
if (!isAndroidExtensionsEnabled(module)) return null
|
||||
return ModuleServiceManager.getService(module, AndroidLayoutXmlFileManager::class.java)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user