mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-10-06 06:21:16 +07:00
CMP-5078: Allow KotlinUastLanguagePlugin operate in common source sets.
GitOrigin-RevId: 6fbd754449337aa49f7d1b9ce9ef19d20fc1079d
This commit is contained in:
committed by
intellij-monorepo-bot
parent
c9be078fce
commit
6e26310073
+5
-4
@@ -6,17 +6,18 @@ import com.intellij.psi.PsiElement
|
||||
import org.jetbrains.kotlin.idea.base.facet.JvmOnlyProjectChecker
|
||||
import org.jetbrains.kotlin.idea.base.facet.platform.platform
|
||||
import org.jetbrains.kotlin.idea.base.util.module
|
||||
import org.jetbrains.kotlin.platform.isCommon
|
||||
import org.jetbrains.kotlin.platform.jvm.isJvm
|
||||
import org.jetbrains.kotlin.psi.KtElement
|
||||
|
||||
val PsiElement.isJvmElement: Boolean
|
||||
val PsiElement.isJvmOrCommonElement: Boolean
|
||||
get() {
|
||||
if (JvmOnlyProjectChecker.getInstance(project).value()) {
|
||||
return true
|
||||
} else if (this is KtElement) {
|
||||
return platform.isJvm()
|
||||
return platform.isJvm() || platform.isCommon()
|
||||
} else {
|
||||
val module = module ?: return true
|
||||
return module.platform.isJvm()
|
||||
return module.platform.isJvm() || module.platform.isCommon()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+1
-1
@@ -37,7 +37,7 @@ private class IdeaKotlinUastResolveProviderService : KotlinUastResolveProviderSe
|
||||
override fun getBindingContextIfAny(element: KtElement): BindingContext? =
|
||||
element.actionUnderSafeAnalyzeBlock({ getBindingContext(element) }, { null })
|
||||
|
||||
override fun isJvmElement(psiElement: PsiElement): Boolean = psiElement.isJvmElement
|
||||
override fun isJvmOrCommonElement(psiElement: PsiElement): Boolean = psiElement.isJvmOrCommonElement
|
||||
|
||||
override fun getLanguageVersionSettings(element: KtElement): LanguageVersionSettings = element.languageVersionSettings
|
||||
|
||||
|
||||
+6
-6
@@ -33,22 +33,22 @@ class KotlinUastLanguagePlugin : UastLanguagePlugin {
|
||||
return fileName.endsWith(".kt", false) || fileName.endsWith(".kts", false)
|
||||
}
|
||||
|
||||
private val PsiElement.isJvmElement: Boolean
|
||||
private val PsiElement.isJvmOrCommonElement: Boolean
|
||||
get() {
|
||||
val resolveProvider: KotlinUastResolveProviderService = project.getService(KotlinUastResolveProviderService::class.java)!!
|
||||
return resolveProvider.isJvmElement(this)
|
||||
return resolveProvider.isJvmOrCommonElement(this)
|
||||
}
|
||||
|
||||
override fun convertElement(element: PsiElement, parent: UElement?, requiredType: Class<out UElement>?): UElement? {
|
||||
val requiredTypes = elementTypes(requiredType)
|
||||
return if (!canConvert(element, requiredTypes) || !element.isJvmElement) null
|
||||
return if (!canConvert(element, requiredTypes) || !element.isJvmOrCommonElement) null
|
||||
else convertDeclarationOrElement(element, parent, requiredTypes)
|
||||
}
|
||||
|
||||
override fun convertElementWithParent(element: PsiElement, requiredType: Class<out UElement>?): UElement? {
|
||||
val requiredTypes = elementTypes(requiredType)
|
||||
return when {
|
||||
!canConvert(element, requiredTypes) || !element.isJvmElement -> null
|
||||
!canConvert(element, requiredTypes) || !element.isJvmOrCommonElement -> null
|
||||
element is PsiFile || element is KtLightClassForFacade -> convertDeclaration(element, null, requiredTypes)
|
||||
else -> convertDeclarationOrElement(element, null, requiredTypes)
|
||||
}
|
||||
@@ -109,7 +109,7 @@ class KotlinUastLanguagePlugin : UastLanguagePlugin {
|
||||
@Suppress("UNCHECKED_CAST")
|
||||
private fun <T : UElement> convertElement(element: PsiElement, parent: UElement?, expectedTypes: Array<out Class<out T>>): T? {
|
||||
val nonEmptyExpectedTypes = expectedTypes.nonEmptyOr(DEFAULT_TYPES_LIST)
|
||||
return if (!canConvert(element, nonEmptyExpectedTypes) || !element.isJvmElement) null
|
||||
return if (!canConvert(element, nonEmptyExpectedTypes) || !element.isJvmOrCommonElement) null
|
||||
else convertDeclarationOrElement(element, parent, nonEmptyExpectedTypes) as? T
|
||||
}
|
||||
|
||||
@@ -119,7 +119,7 @@ class KotlinUastLanguagePlugin : UastLanguagePlugin {
|
||||
|
||||
@Suppress("UNCHECKED_CAST")
|
||||
override fun <T : UElement> convertToAlternatives(element: PsiElement, requiredTypes: Array<out Class<out T>>): Sequence<T> =
|
||||
if (!element.isJvmElement) emptySequence() else when {
|
||||
if (!element.isJvmOrCommonElement) emptySequence() else when {
|
||||
element is KtFile -> KotlinConverter.convertKtFile(element, null, requiredTypes) as Sequence<T>
|
||||
(element is KtProperty && !element.isLocal) ->
|
||||
KotlinConverter.convertNonLocalProperty(element, null, requiredTypes) as Sequence<T>
|
||||
|
||||
+1
-1
@@ -55,7 +55,7 @@ interface KotlinUastResolveProviderService : BaseKotlinUastResolveProviderServic
|
||||
|
||||
fun getLanguageVersionSettings(element: KtElement): LanguageVersionSettings
|
||||
|
||||
fun isJvmElement(psiElement: PsiElement): Boolean
|
||||
fun isJvmOrCommonElement(psiElement: PsiElement): Boolean
|
||||
|
||||
override val languagePlugin: UastLanguagePlugin
|
||||
get() = kotlinUastPlugin
|
||||
|
||||
+1
-1
@@ -35,7 +35,7 @@ class CliKotlinUastResolveProviderService : KotlinUastResolveProviderService {
|
||||
return element.project.analysisCompletedHandler?.getBindingContext() ?: BindingContext.EMPTY
|
||||
}
|
||||
|
||||
override fun isJvmElement(psiElement: PsiElement): Boolean = true
|
||||
override fun isJvmOrCommonElement(psiElement: PsiElement): Boolean = true
|
||||
|
||||
override fun getLanguageVersionSettings(element: KtElement): LanguageVersionSettings {
|
||||
return element.project.analysisCompletedHandler?.getLanguageVersionSettings() ?: LanguageVersionSettingsImpl.DEFAULT
|
||||
|
||||
Reference in New Issue
Block a user