uast: generate and analysis extension points are dynamic (totally dynamic)

GitOrigin-RevId: 8c15445d219c8f8e3399159407ec521427068337
This commit is contained in:
aleksandr.izmaylov
2019-12-31 15:49:18 +03:00
committed by intellij-monorepo-bot
parent 5f197fe078
commit 3a2ee3b33e
3 changed files with 8 additions and 10 deletions

View File

@@ -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

View File

@@ -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

View File

@@ -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? {