Move UL compiler plugin support to separate extension point
This commit is contained in:
+9
-2
@@ -9,9 +9,16 @@ import org.jetbrains.kotlin.asJava.classes.KtUltraLightClass
|
||||
import org.jetbrains.kotlin.asJava.elements.KtLightField
|
||||
import org.jetbrains.kotlin.asJava.elements.KtLightMethod
|
||||
import org.jetbrains.kotlin.descriptors.DeclarationDescriptor
|
||||
import org.jetbrains.kotlin.extensions.ProjectExtensionDescriptor
|
||||
import org.jetbrains.kotlin.psi.KtDeclaration
|
||||
|
||||
interface UltraLightClassCodegenSupport {
|
||||
interface UltraLightClassModifierExtension {
|
||||
|
||||
companion object : ProjectExtensionDescriptor<UltraLightClassModifierExtension>(
|
||||
"org.jetbrains.kotlin.ultraLightClassModifierExtension",
|
||||
UltraLightClassModifierExtension::class.java
|
||||
)
|
||||
|
||||
fun interceptMethodsBuilding(
|
||||
declaration: KtDeclaration,
|
||||
descriptor: Lazy<DeclarationDescriptor?>,
|
||||
@@ -23,6 +30,6 @@ interface UltraLightClassCodegenSupport {
|
||||
declaration: KtDeclaration,
|
||||
descriptor: Lazy<DeclarationDescriptor?>,
|
||||
containingDeclaration: KtUltraLightClass,
|
||||
methodsList: MutableList<KtLightField>
|
||||
fieldsList: MutableList<KtLightField>
|
||||
) = Unit
|
||||
}
|
||||
@@ -14,7 +14,7 @@ import com.intellij.psi.impl.light.LightMethodBuilder
|
||||
import com.intellij.psi.util.CachedValue
|
||||
import com.intellij.psi.util.CachedValueProvider
|
||||
import com.intellij.psi.util.CachedValuesManager
|
||||
import org.jetbrains.kotlin.asJava.UltraLightClassCodegenSupport
|
||||
import org.jetbrains.kotlin.asJava.UltraLightClassModifierExtension
|
||||
import org.jetbrains.kotlin.asJava.builder.LightClassData
|
||||
import org.jetbrains.kotlin.asJava.elements.KtLightField
|
||||
import org.jetbrains.kotlin.asJava.elements.KtLightMethod
|
||||
@@ -340,10 +340,8 @@ open class KtUltraLightClass(classOrObject: KtClassOrObject, internal val suppor
|
||||
return result
|
||||
}
|
||||
|
||||
private inline fun applyCompilerPlugins(body: (UltraLightClassCodegenSupport) -> Unit) {
|
||||
ExpressionCodegenExtension.getInstances(project)
|
||||
.filterIsInstance<UltraLightClassCodegenSupport>()
|
||||
.forEach { body(it) }
|
||||
private inline fun applyCompilerPlugins(body: (UltraLightClassModifierExtension) -> Unit) {
|
||||
UltraLightClassModifierExtension.getInstances(project).forEach { body(it) }
|
||||
}
|
||||
|
||||
private val _ownMethods: CachedValue<List<KtLightMethod>> = CachedValuesManager.getManager(project).createCachedValue(
|
||||
|
||||
Reference in New Issue
Block a user