ExternalDeclarationsProvider introduced
This commit is contained in:
committed by
Yan Zhulanow
parent
1f10ab21ac
commit
e10d8a6fe0
@@ -17,14 +17,18 @@
|
||||
package org.jetbrains.kotlin.android
|
||||
|
||||
import org.jetbrains.kotlin.compiler.plugin.ComponentRegistrar
|
||||
import org.jetbrains.jet.lang.resolve.android.CliAndroidUIXmlProcessor
|
||||
import org.jetbrains.jet.config.CompilerConfiguration
|
||||
import org.jetbrains.jet.lang.resolve.android.AndroidUIXmlProcessor
|
||||
import com.intellij.mock.MockProject
|
||||
import org.jetbrains.jet.config.CompilerConfigurationKey
|
||||
import org.jetbrains.kotlin.compiler.plugin.CommandLineProcessor
|
||||
import org.jetbrains.kotlin.compiler.plugin.CliOption
|
||||
import org.jetbrains.kotlin.compiler.plugin.CliOptionProcessingException
|
||||
import org.jetbrains.jet.extensions.ExternalDeclarationsProvider
|
||||
import org.jetbrains.jet.lang.psi.JetFile
|
||||
import org.jetbrains.jet.lang.resolve.android.*
|
||||
import com.intellij.openapi.components.ServiceManager
|
||||
import org.jetbrains.jet.utils.emptyOrSingletonList
|
||||
import com.intellij.openapi.project.Project
|
||||
|
||||
public object AndroidConfigurationKeys {
|
||||
|
||||
@@ -54,11 +58,20 @@ public class AndroidCommandLineProcessor : CommandLineProcessor {
|
||||
}
|
||||
}
|
||||
|
||||
public class AndroidDeclarationsProvider(private val project: Project) : ExternalDeclarationsProvider {
|
||||
override fun getExternalDeclarations(): Collection<JetFile> {
|
||||
val parser = ServiceManager.getService<AndroidUIXmlProcessor>(project, javaClass<AndroidUIXmlProcessor>())
|
||||
return emptyOrSingletonList(parser?.parseToPsi(project))
|
||||
}
|
||||
}
|
||||
|
||||
public class AndroidComponentRegistrar : ComponentRegistrar {
|
||||
|
||||
public override fun registerProjectComponents(project: MockProject, configuration: CompilerConfiguration) {
|
||||
val androidResPath = configuration.get(AndroidConfigurationKeys.ANDROID_RES_PATH)
|
||||
val androidManifest = configuration.get(AndroidConfigurationKeys.ANDROID_MANIFEST)
|
||||
project.registerService(javaClass<AndroidUIXmlProcessor>(), CliAndroidUIXmlProcessor(project, androidResPath, androidManifest))
|
||||
|
||||
ExternalDeclarationsProvider.registerExtension(project, AndroidDeclarationsProvider(project))
|
||||
}
|
||||
}
|
||||
+1
-9
@@ -21,9 +21,9 @@ import com.intellij.psi.PsiElement
|
||||
import com.intellij.openapi.project.Project
|
||||
import org.jetbrains.jet.lang.psi.JetFile
|
||||
import com.intellij.openapi.components.ServiceManager
|
||||
import java.util.ArrayList
|
||||
import com.intellij.psi.PsiField
|
||||
import com.intellij.psi.PsiClass
|
||||
import org.jetbrains.jet.utils.emptyOrSingletonList
|
||||
|
||||
trait AndroidResource
|
||||
|
||||
@@ -52,14 +52,6 @@ public fun isAndroidSyntheticElement(element: PsiElement?): Boolean {
|
||||
return isAndroidSyntheticFile(element?.getContainingFile())
|
||||
}
|
||||
|
||||
public fun searchAndAddAndroidDeclarations(project: Project, originalFiles: Collection<JetFile>): Collection<JetFile> {
|
||||
val parser = ServiceManager.getService<AndroidUIXmlProcessor>(project, javaClass<AndroidUIXmlProcessor>())
|
||||
val file = parser?.parseToPsi(project)
|
||||
val files = ArrayList(originalFiles)
|
||||
if (file != null) files.add(file)
|
||||
return files
|
||||
}
|
||||
|
||||
public fun isRClassField(element: PsiElement): Boolean {
|
||||
return if (element is PsiField) {
|
||||
val outerClass = element.getParent()?.getParent()
|
||||
|
||||
Reference in New Issue
Block a user