mirror of
https://gitflic.ru/project/openide/openide.git
synced 2025-12-16 22:51:17 +07:00
uast: generate and analysis extension points are dynamic (totally dynamic)
GitOrigin-RevId: 8c15445d219c8f8e3399159407ec521427068337
This commit is contained in:
committed by
intellij-monorepo-bot
parent
5f197fe078
commit
3a2ee3b33e
@@ -5,15 +5,15 @@ import com.intellij.lang.Language
|
|||||||
import com.intellij.openapi.extensions.ExtensionPointName
|
import com.intellij.openapi.extensions.ExtensionPointName
|
||||||
import org.jetbrains.annotations.ApiStatus
|
import org.jetbrains.annotations.ApiStatus
|
||||||
import org.jetbrains.uast.UExpression
|
import org.jetbrains.uast.UExpression
|
||||||
|
import kotlin.streams.asSequence
|
||||||
|
|
||||||
@ApiStatus.Experimental
|
@ApiStatus.Experimental
|
||||||
interface UastAnalysisPlugin {
|
interface UastAnalysisPlugin {
|
||||||
companion object {
|
companion object {
|
||||||
val extensionPointName = ExtensionPointName<UastAnalysisPlugin>("org.jetbrains.uast.analysis.uastAnalysisPlugin")
|
private val extensionPointName = ExtensionPointName<UastAnalysisPlugin>("org.jetbrains.uast.analysis.uastAnalysisPlugin")
|
||||||
private val extensions by lazy { extensionPointName.extensionList }
|
|
||||||
|
|
||||||
@JvmStatic
|
@JvmStatic
|
||||||
fun byLanguage(language: Language) = extensions.firstOrNull { it.language == language }
|
fun byLanguage(language: Language) = extensionPointName.extensions().asSequence().firstOrNull { it.language == language }
|
||||||
}
|
}
|
||||||
|
|
||||||
val language: Language
|
val language: Language
|
||||||
|
|||||||
@@ -8,15 +8,15 @@ import com.intellij.psi.PsiElement
|
|||||||
import com.intellij.psi.PsiType
|
import com.intellij.psi.PsiType
|
||||||
import org.jetbrains.annotations.ApiStatus
|
import org.jetbrains.annotations.ApiStatus
|
||||||
import org.jetbrains.uast.*
|
import org.jetbrains.uast.*
|
||||||
|
import kotlin.streams.asSequence
|
||||||
|
|
||||||
@ApiStatus.Experimental
|
@ApiStatus.Experimental
|
||||||
interface UastCodeGenerationPlugin {
|
interface UastCodeGenerationPlugin {
|
||||||
companion object {
|
companion object {
|
||||||
val extensionPointName = ExtensionPointName<UastCodeGenerationPlugin>("org.jetbrains.uast.generate.uastCodeGenerationPlugin")
|
private val extensionPointName = ExtensionPointName<UastCodeGenerationPlugin>("org.jetbrains.uast.generate.uastCodeGenerationPlugin")
|
||||||
private val extensions by lazy { extensionPointName.extensionList }
|
|
||||||
|
|
||||||
@JvmStatic
|
@JvmStatic
|
||||||
fun byLanguage(language: Language) = extensions.firstOrNull { it.language == language }
|
fun byLanguage(language: Language) = extensionPointName.extensions().asSequence().firstOrNull { it.language == language }
|
||||||
}
|
}
|
||||||
|
|
||||||
fun getElementFactory(project: Project): UastElementFactory
|
fun getElementFactory(project: Project): UastElementFactory
|
||||||
|
|||||||
@@ -10,7 +10,6 @@ import com.intellij.psi.javadoc.PsiDocToken
|
|||||||
import com.intellij.psi.util.PsiTreeUtil
|
import com.intellij.psi.util.PsiTreeUtil
|
||||||
import org.jetbrains.uast.*
|
import org.jetbrains.uast.*
|
||||||
import org.jetbrains.uast.analysis.UastAnalysisPlugin
|
import org.jetbrains.uast.analysis.UastAnalysisPlugin
|
||||||
import org.jetbrains.uast.java.analysis.JavaUastAnalysisPlugin
|
|
||||||
import org.jetbrains.uast.java.expressions.JavaUAnnotationCallExpression
|
import org.jetbrains.uast.java.expressions.JavaUAnnotationCallExpression
|
||||||
import org.jetbrains.uast.java.expressions.JavaUNamedExpression
|
import org.jetbrains.uast.java.expressions.JavaUNamedExpression
|
||||||
import org.jetbrains.uast.java.expressions.JavaUSynchronizedExpression
|
import org.jetbrains.uast.java.expressions.JavaUSynchronizedExpression
|
||||||
@@ -136,9 +135,8 @@ class JavaUastLanguagePlugin : UastLanguagePlugin {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
override val analysisPlugin: UastAnalysisPlugin? by lazy {
|
override val analysisPlugin: UastAnalysisPlugin?
|
||||||
UastAnalysisPlugin.byLanguage(JavaLanguage.INSTANCE)
|
get() = UastAnalysisPlugin.byLanguage(JavaLanguage.INSTANCE)
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
internal inline fun <reified ActualT : UElement> Class<*>?.el(f: () -> UElement?): UElement? {
|
internal inline fun <reified ActualT : UElement> Class<*>?.el(f: () -> UElement?): UElement? {
|
||||||
|
|||||||
Reference in New Issue
Block a user