Misc: Improve IDE rendering of type aliases

This commit is contained in:
Alexey Sedunov
2016-08-26 16:24:07 +03:00
parent 3405051bcc
commit c244baf087
3 changed files with 20 additions and 4 deletions
@@ -36,6 +36,7 @@ import org.jetbrains.kotlin.serialization.deserialization.NotFoundClasses
import org.jetbrains.kotlin.types.*
import org.jetbrains.kotlin.types.ErrorUtils.UninferredParameterTypeConstructor
import org.jetbrains.kotlin.types.TypeUtils.CANT_INFER_FUNCTION_PARAM_TYPE
import java.lang.UnsupportedOperationException
import java.util.*
internal class DescriptorRendererImpl(
@@ -128,9 +129,7 @@ internal class DescriptorRendererImpl(
// TODO nullability is lost for abbreviated type?
renderNormalizedTypeAsIs(abbreviated.abbreviation)
if (renderUnabbreviatedType) {
append(" /* = ")
renderNormalizedTypeAsIs(abbreviated.expandedType)
append(" */")
renderAbbreviatedTypeExpansion(abbreviated)
}
return
}
@@ -138,6 +137,18 @@ internal class DescriptorRendererImpl(
renderNormalizedTypeAsIs(type)
}
private fun StringBuilder.renderAbbreviatedTypeExpansion(abbreviated: AbbreviatedType) {
if (textFormat == RenderingFormat.HTML) {
append("<font color=\"808080\"><i>")
}
append(" /* = ")
renderNormalizedTypeAsIs(abbreviated.expandedType)
append(" */")
if (textFormat == RenderingFormat.HTML) {
append("</i></font>")
}
}
private fun StringBuilder.renderNormalizedTypeAsIs(type: KotlinType) {
if (type is WrappedType && debugMode && !type.isComputed()) {
append("<Not computed yet>")
@@ -51,6 +51,7 @@ object IdeDescriptorRenderers {
overrideRenderingPolicy = OverrideRenderingPolicy.RENDER_OVERRIDE
unitReturnType = false
modifiers = DescriptorRendererModifier.ALL
renderUnabbreviatedType = false
}
@JvmField val SOURCE_CODE: DescriptorRenderer = BASE.withOptions {
@@ -233,6 +233,10 @@ abstract class KotlinParameterInfoWithCallHandlerBase<TArgumentList : KtElement,
override fun getParametersForLookup(item: LookupElement, context: ParameterInfoContext) = emptyArray<Any>()
override fun getParametersForDocumentation(item: FunctionDescriptor, context: ParameterInfoContext) = emptyArray<Any>()
private val RENDERER = DescriptorRenderer.SHORT_NAMES_IN_TYPES.withOptions {
renderUnabbreviatedType = false
}
private fun renderParameter(parameter: ValueParameterDescriptor, includeName: Boolean, named: Boolean, project: Project): String {
return buildString {
if (named) append("[")
@@ -246,7 +250,7 @@ abstract class KotlinParameterInfoWithCallHandlerBase<TArgumentList : KtElement,
append(": ")
}
append(DescriptorRenderer.SHORT_NAMES_IN_TYPES.renderType(parameterTypeToRender(parameter)))
append(RENDERER.renderType(parameterTypeToRender(parameter)))
if (parameter.hasDefaultValue()) {
append(" = ")