Option for rendering types with enhancement

This commit is contained in:
Nikolay Krasko
2018-08-02 17:11:05 +03:00
parent ceeeffd814
commit 653d1d00de
3 changed files with 8 additions and 3 deletions
@@ -182,6 +182,7 @@ interface DescriptorRendererOptions {
var classWithPrimaryConstructor: Boolean var classWithPrimaryConstructor: Boolean
var verbose: Boolean var verbose: Boolean
var unitReturnType: Boolean var unitReturnType: Boolean
var enhancedTypes: Boolean
var withoutReturnType: Boolean var withoutReturnType: Boolean
var normalizedVisibilities: Boolean var normalizedVisibilities: Boolean
var renderDefaultVisibility: Boolean var renderDefaultVisibility: Boolean
@@ -78,6 +78,7 @@ internal class DescriptorRendererOptionsImpl : DescriptorRendererOptions {
override var verbose by property(false) override var verbose by property(false)
override var unitReturnType by property(true) override var unitReturnType by property(true)
override var withoutReturnType by property(false) override var withoutReturnType by property(false)
override var enhancedTypes by property(false)
override var normalizedVisibilities by property(false) override var normalizedVisibilities by property(false)
override var renderDefaultVisibility by property(true) override var renderDefaultVisibility by property(true)
override var uninferredTypeParameterAsName by property(false) override var uninferredTypeParameterAsName by property(false)
@@ -19,7 +19,6 @@ package org.jetbrains.kotlin.types
import org.jetbrains.kotlin.descriptors.annotations.Annotations import org.jetbrains.kotlin.descriptors.annotations.Annotations
import org.jetbrains.kotlin.renderer.DescriptorRenderer import org.jetbrains.kotlin.renderer.DescriptorRenderer
import org.jetbrains.kotlin.renderer.DescriptorRendererOptions import org.jetbrains.kotlin.renderer.DescriptorRendererOptions
import org.jetbrains.kotlin.resolve.scopes.MemberScope
interface TypeWithEnhancement { interface TypeWithEnhancement {
val origin: UnwrappedType val origin: UnwrappedType
@@ -53,8 +52,12 @@ class FlexibleTypeWithEnhancement(
override fun makeNullableAsSpecified(newNullability: Boolean): UnwrappedType override fun makeNullableAsSpecified(newNullability: Boolean): UnwrappedType
= origin.makeNullableAsSpecified(newNullability).wrapEnhancement(enhancement.unwrap().makeNullableAsSpecified(newNullability)) = origin.makeNullableAsSpecified(newNullability).wrapEnhancement(enhancement.unwrap().makeNullableAsSpecified(newNullability))
override fun render(renderer: DescriptorRenderer, options: DescriptorRendererOptions): String override fun render(renderer: DescriptorRenderer, options: DescriptorRendererOptions): String {
= origin.render(renderer, options) if (options.enhancedTypes) {
return renderer.renderType(enhancement)
}
return origin.render(renderer, options)
}
override val delegate: SimpleType get() = origin.delegate override val delegate: SimpleType get() = origin.delegate
} }