mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-03-22 15:19:59 +07:00
[kotlin] Minor, move noarg descriptor utils to IDE plugin sources
In the main Kotlin repo, they were only used from the old JVM backend implementation of noarg, which is being removed right now. #KT-71197 GitOrigin-RevId: 4faae27bfc6c5e8aec5c10c7e7bb3a09825ad351
This commit is contained in:
committed by
intellij-monorepo-bot
parent
a4bd7743a6
commit
c251b6961f
@@ -3,18 +3,19 @@
|
||||
package org.jetbrains.kotlin.idea.compilerPlugin.noarg
|
||||
|
||||
import com.intellij.openapi.project.Project
|
||||
import org.jetbrains.kotlin.idea.compilerPlugin.CachedAnnotationNames
|
||||
import org.jetbrains.kotlin.idea.compilerPlugin.getAnnotationNames
|
||||
import org.jetbrains.kotlin.asJava.UltraLightClassModifierExtension
|
||||
import org.jetbrains.kotlin.asJava.classes.KtUltraLightClass
|
||||
import org.jetbrains.kotlin.asJava.classes.createGeneratedMethodFromDescriptor
|
||||
import org.jetbrains.kotlin.asJava.elements.KtLightMethod
|
||||
import org.jetbrains.kotlin.descriptors.ClassDescriptor
|
||||
import org.jetbrains.kotlin.descriptors.DeclarationDescriptor
|
||||
import org.jetbrains.kotlin.descriptors.*
|
||||
import org.jetbrains.kotlin.descriptors.annotations.Annotations
|
||||
import org.jetbrains.kotlin.descriptors.impl.ClassConstructorDescriptorImpl
|
||||
import org.jetbrains.kotlin.extensions.AnnotationBasedExtension
|
||||
import org.jetbrains.kotlin.noarg.AbstractNoArgExpressionCodegenExtension
|
||||
import org.jetbrains.kotlin.noarg.AbstractNoArgExpressionCodegenExtension.Companion.isZeroParameterConstructor
|
||||
import org.jetbrains.kotlin.idea.compilerPlugin.CachedAnnotationNames
|
||||
import org.jetbrains.kotlin.idea.compilerPlugin.getAnnotationNames
|
||||
import org.jetbrains.kotlin.psi.*
|
||||
import org.jetbrains.kotlin.resolve.descriptorUtil.builtIns
|
||||
import org.jetbrains.kotlin.resolve.jvm.annotations.findJvmOverloadsAnnotation
|
||||
import org.jetbrains.kotlin.util.isAnnotated
|
||||
import org.jetbrains.kotlin.util.isOrdinaryClass
|
||||
|
||||
@@ -63,8 +64,28 @@ class NoArgUltraLightClassModifierExtension(project: Project) :
|
||||
|
||||
if (classDescriptor.constructors.any { isZeroParameterConstructor(it) }) return
|
||||
|
||||
val constructorDescriptor = AbstractNoArgExpressionCodegenExtension.createNoArgConstructorDescriptor(classDescriptor)
|
||||
val constructorDescriptor = createNoArgConstructorDescriptor(classDescriptor)
|
||||
|
||||
methodsList.add(parentClass.createGeneratedMethodFromDescriptor(constructorDescriptor))
|
||||
}
|
||||
}
|
||||
|
||||
private fun isZeroParameterConstructor(constructor: ClassConstructorDescriptor): Boolean {
|
||||
val parameters = constructor.valueParameters
|
||||
return parameters.isEmpty() ||
|
||||
(parameters.all { it.declaresDefaultValue() } && (constructor.isPrimary || constructor.findJvmOverloadsAnnotation() != null))
|
||||
}
|
||||
|
||||
private fun createNoArgConstructorDescriptor(containingClass: ClassDescriptor): ConstructorDescriptor =
|
||||
ClassConstructorDescriptorImpl.createSynthesized(containingClass, Annotations.EMPTY, false, SourceElement.NO_SOURCE).apply {
|
||||
initialize(
|
||||
null,
|
||||
calculateDispatchReceiverParameter(),
|
||||
emptyList(),
|
||||
emptyList(),
|
||||
emptyList(),
|
||||
containingClass.builtIns.unitType,
|
||||
Modality.OPEN,
|
||||
DescriptorVisibilities.PUBLIC
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user