Add a set of new tests for KT-27075 (create expected class) + some fixes

This commit is contained in:
Mikhail Glukhikh
2018-11-20 13:48:48 +03:00
parent 4ab4358d22
commit f31428257d
37 changed files with 400 additions and 34 deletions
@@ -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)