Add a set of new tests for KT-27075 (create expected class) + some fixes
This commit is contained in:
@@ -9,7 +9,6 @@ import org.jetbrains.kotlin.builtins.KotlinBuiltIns
|
||||
import org.jetbrains.kotlin.descriptors.*
|
||||
import org.jetbrains.kotlin.descriptors.annotations.AnnotationDescriptor
|
||||
import org.jetbrains.kotlin.descriptors.annotations.AnnotationUseSiteTarget
|
||||
import org.jetbrains.kotlin.descriptors.annotations.AnnotationWithTarget
|
||||
import org.jetbrains.kotlin.name.FqName
|
||||
import org.jetbrains.kotlin.name.FqNameUnsafe
|
||||
import org.jetbrains.kotlin.name.Name
|
||||
@@ -219,6 +218,7 @@ interface DescriptorRendererOptions {
|
||||
var alwaysRenderModifiers: Boolean
|
||||
var renderConstructorKeyword: Boolean
|
||||
var renderUnabbreviatedType: Boolean
|
||||
var renderTypeExpansions: Boolean
|
||||
var includeAdditionalModifiers: Boolean
|
||||
var parameterNamesInFunctionalTypes: Boolean
|
||||
var renderFunctionContracts: Boolean
|
||||
@@ -272,6 +272,8 @@ enum class DescriptorRendererModifier(val includeByDefault: Boolean) {
|
||||
INLINE(true),
|
||||
EXPECT(true),
|
||||
ACTUAL(true),
|
||||
CONST(true),
|
||||
LATEINIT(true),
|
||||
;
|
||||
|
||||
companion object {
|
||||
|
||||
@@ -129,10 +129,14 @@ internal class DescriptorRendererImpl(
|
||||
private fun StringBuilder.renderNormalizedType(type: KotlinType) {
|
||||
val abbreviated = type.unwrap() as? AbbreviatedType
|
||||
if (abbreviated != null) {
|
||||
// TODO nullability is lost for abbreviated type?
|
||||
renderNormalizedTypeAsIs(abbreviated.abbreviation)
|
||||
if (renderUnabbreviatedType) {
|
||||
renderAbbreviatedTypeExpansion(abbreviated)
|
||||
if (renderTypeExpansions) {
|
||||
renderNormalizedTypeAsIs(abbreviated.expandedType)
|
||||
} else {
|
||||
// TODO nullability is lost for abbreviated type?
|
||||
renderNormalizedTypeAsIs(abbreviated.abbreviation)
|
||||
if (renderUnabbreviatedType) {
|
||||
renderAbbreviatedTypeExpansion(abbreviated)
|
||||
}
|
||||
}
|
||||
return
|
||||
}
|
||||
@@ -468,15 +472,16 @@ internal class DescriptorRendererImpl(
|
||||
}
|
||||
}
|
||||
|
||||
private fun renderVisibility(visibility: Visibility, builder: StringBuilder) {
|
||||
private fun renderVisibility(visibility: Visibility, builder: StringBuilder): Boolean {
|
||||
@Suppress("NAME_SHADOWING")
|
||||
var visibility = visibility
|
||||
if (DescriptorRendererModifier.VISIBILITY !in modifiers) return
|
||||
if (DescriptorRendererModifier.VISIBILITY !in modifiers) return false
|
||||
if (normalizedVisibilities) {
|
||||
visibility = visibility.normalize()
|
||||
}
|
||||
if (!renderDefaultVisibility && visibility == Visibilities.DEFAULT_VISIBILITY) return
|
||||
if (!renderDefaultVisibility && visibility == Visibilities.DEFAULT_VISIBILITY) return false
|
||||
builder.append(renderKeyword(visibility.displayName)).append(" ")
|
||||
return true
|
||||
}
|
||||
|
||||
private fun renderModality(modality: Modality, builder: StringBuilder, defaultModality: Modality) {
|
||||
@@ -719,15 +724,16 @@ internal class DescriptorRendererImpl(
|
||||
|
||||
private fun renderConstructor(constructor: ConstructorDescriptor, builder: StringBuilder) {
|
||||
builder.renderAnnotations(constructor)
|
||||
renderVisibility(constructor.visibility, builder)
|
||||
val visibilityRendered = renderVisibility(constructor.visibility, builder)
|
||||
renderMemberKind(constructor, builder)
|
||||
|
||||
if (renderConstructorKeyword) {
|
||||
val constructorKeywordRendered = renderConstructorKeyword || !constructor.isPrimary || visibilityRendered
|
||||
if (constructorKeywordRendered) {
|
||||
builder.append(renderKeyword("constructor"))
|
||||
}
|
||||
val classDescriptor = constructor.containingDeclaration
|
||||
if (secondaryConstructorsAsPrimary) {
|
||||
if (renderConstructorKeyword) {
|
||||
if (constructorKeywordRendered) {
|
||||
builder.append(" ")
|
||||
}
|
||||
renderName(classDescriptor, builder, true)
|
||||
@@ -861,11 +867,11 @@ internal class DescriptorRendererImpl(
|
||||
if (!startFromDeclarationKeyword) {
|
||||
renderPropertyAnnotations(property, builder)
|
||||
renderVisibility(property.visibility, builder)
|
||||
renderModifier(builder, property.isConst, "const")
|
||||
renderModifier(builder, DescriptorRendererModifier.CONST in modifiers && property.isConst, "const")
|
||||
renderMemberModifiers(property, builder)
|
||||
renderModalityForCallable(property, builder)
|
||||
renderOverride(property, builder)
|
||||
renderModifier(builder, property.isLateInit, "lateinit")
|
||||
renderModifier(builder, DescriptorRendererModifier.LATEINIT in modifiers && property.isLateInit, "lateinit")
|
||||
renderMemberKind(property, builder)
|
||||
}
|
||||
renderValVarPrefix(property, builder)
|
||||
|
||||
@@ -116,6 +116,8 @@ internal class DescriptorRendererOptionsImpl : DescriptorRendererOptions {
|
||||
|
||||
override var renderUnabbreviatedType: Boolean by property(true)
|
||||
|
||||
override var renderTypeExpansions: Boolean by property(false)
|
||||
|
||||
override var includeAdditionalModifiers: Boolean by property(true)
|
||||
|
||||
override var parameterNamesInFunctionalTypes: Boolean by property(true)
|
||||
|
||||
Reference in New Issue
Block a user