mirror of
https://gitflic.ru/project/openide/openide.git
synced 2025-12-15 02:59:33 +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 org.jetbrains.annotations.ApiStatus
|
||||
import org.jetbrains.uast.UExpression
|
||||
import kotlin.streams.asSequence
|
||||
|
||||
@ApiStatus.Experimental
|
||||
interface UastAnalysisPlugin {
|
||||
companion object {
|
||||
val extensionPointName = ExtensionPointName<UastAnalysisPlugin>("org.jetbrains.uast.analysis.uastAnalysisPlugin")
|
||||
private val extensions by lazy { extensionPointName.extensionList }
|
||||
private val extensionPointName = ExtensionPointName<UastAnalysisPlugin>("org.jetbrains.uast.analysis.uastAnalysisPlugin")
|
||||
|
||||
@JvmStatic
|
||||
fun byLanguage(language: Language) = extensions.firstOrNull { it.language == language }
|
||||
fun byLanguage(language: Language) = extensionPointName.extensions().asSequence().firstOrNull { it.language == language }
|
||||
}
|
||||
|
||||
val language: Language
|
||||
|
||||
@@ -8,15 +8,15 @@ import com.intellij.psi.PsiElement
|
||||
import com.intellij.psi.PsiType
|
||||
import org.jetbrains.annotations.ApiStatus
|
||||
import org.jetbrains.uast.*
|
||||
import kotlin.streams.asSequence
|
||||
|
||||
@ApiStatus.Experimental
|
||||
interface UastCodeGenerationPlugin {
|
||||
companion object {
|
||||
val extensionPointName = ExtensionPointName<UastCodeGenerationPlugin>("org.jetbrains.uast.generate.uastCodeGenerationPlugin")
|
||||
private val extensions by lazy { extensionPointName.extensionList }
|
||||
private val extensionPointName = ExtensionPointName<UastCodeGenerationPlugin>("org.jetbrains.uast.generate.uastCodeGenerationPlugin")
|
||||
|
||||
@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
|
||||
|
||||
@@ -10,7 +10,6 @@ import com.intellij.psi.javadoc.PsiDocToken
|
||||
import com.intellij.psi.util.PsiTreeUtil
|
||||
import org.jetbrains.uast.*
|
||||
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.JavaUNamedExpression
|
||||
import org.jetbrains.uast.java.expressions.JavaUSynchronizedExpression
|
||||
@@ -136,9 +135,8 @@ class JavaUastLanguagePlugin : UastLanguagePlugin {
|
||||
}
|
||||
}
|
||||
|
||||
override val analysisPlugin: UastAnalysisPlugin? by lazy {
|
||||
UastAnalysisPlugin.byLanguage(JavaLanguage.INSTANCE)
|
||||
}
|
||||
override val analysisPlugin: UastAnalysisPlugin?
|
||||
get() = UastAnalysisPlugin.byLanguage(JavaLanguage.INSTANCE)
|
||||
}
|
||||
|
||||
internal inline fun <reified ActualT : UElement> Class<*>?.el(f: () -> UElement?): UElement? {
|
||||
|
||||
Reference in New Issue
Block a user