Use OverrideMemberChooserObject to generate also primary constructors

Relates to KT-27093 and similar problems
This commit is contained in:
Mikhail Glukhikh
2018-11-14 12:45:39 +03:00
parent cd041cca71
commit 90a2f70fd1
11 changed files with 60 additions and 27 deletions
@@ -187,6 +187,7 @@ interface DescriptorRendererOptions {
var normalizedVisibilities: Boolean
var renderDefaultVisibility: Boolean
var renderDefaultModality: Boolean
var renderActualAnnotationPropertiesInPrimaryConstructor: Boolean
var uninferredTypeParameterAsName: Boolean
var overrideRenderingPolicy: OverrideRenderingPolicy
var valueParametersHandler: DescriptorRenderer.ValueParametersHandler
@@ -22,6 +22,7 @@ import org.jetbrains.kotlin.resolve.constants.ConstantValue
import org.jetbrains.kotlin.resolve.constants.KClassValue
import org.jetbrains.kotlin.resolve.descriptorUtil.annotationClass
import org.jetbrains.kotlin.resolve.descriptorUtil.declaresOrInheritsDefaultValue
import org.jetbrains.kotlin.resolve.descriptorUtil.isAnnotationConstructor
import org.jetbrains.kotlin.types.*
import org.jetbrains.kotlin.types.ErrorUtils.UninferredParameterTypeConstructor
import org.jetbrains.kotlin.types.TypeUtils.CANT_INFER_FUNCTION_PARAM_TYPE
@@ -795,6 +796,12 @@ internal class DescriptorRendererImpl(
renderModifier(builder, valueParameter.isCrossinline, "crossinline")
renderModifier(builder, valueParameter.isNoinline, "noinline")
val containingDeclaration = valueParameter.containingDeclaration
if (renderActualAnnotationPropertiesInPrimaryConstructor && containingDeclaration.isAnnotationConstructor()) {
renderModifier(builder, true, "actual")
renderModifier(builder, true, "val")
}
renderVariable(valueParameter, includeName, builder, topLevel)
val withDefaultValue =
@@ -82,6 +82,7 @@ internal class DescriptorRendererOptionsImpl : DescriptorRendererOptions {
override var normalizedVisibilities by property(false)
override var renderDefaultVisibility by property(true)
override var renderDefaultModality by property(true)
override var renderActualAnnotationPropertiesInPrimaryConstructor by property(false)
override var uninferredTypeParameterAsName by property(false)
override var includePropertyConstant by property(false)
override var withoutTypeParameters by property(false)