From 45737e51fb7bbfd02e1be04204bd035b482dcd47 Mon Sep 17 00:00:00 2001 From: Dmitry Savvinov Date: Wed, 21 Aug 2019 18:28:33 +0300 Subject: [PATCH] Minor: let 'Renderer'-helper return more specific type This allows to easily re-use other renderers from 'Renderer'-block (previously, one had to declare 'ContextDependentRenderer' just to get hold of 'RenderingContext' just to call 'render(O, RenderingContext)' from DiagnosticParameterRenderer, which would be unused anyways) This commit introduces more specific subtype, 'ContextIndependentParameterRenderer', which exposes 'render(O)' method for easy re-use. Several (ab)uses of 'ContextDependentRenderer' have been removed --- .../rendering/DiagnosticParameterRenderer.kt | 10 ++++++++-- .../kotlin/diagnostics/rendering/Renderers.kt | 4 ++-- .../jetbrains/kotlin/idea/highlighter/IdeRenderers.kt | 4 ++-- 3 files changed, 12 insertions(+), 6 deletions(-) diff --git a/compiler/frontend/src/org/jetbrains/kotlin/diagnostics/rendering/DiagnosticParameterRenderer.kt b/compiler/frontend/src/org/jetbrains/kotlin/diagnostics/rendering/DiagnosticParameterRenderer.kt index 1d445f643ca..8c61c2910ab 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/diagnostics/rendering/DiagnosticParameterRenderer.kt +++ b/compiler/frontend/src/org/jetbrains/kotlin/diagnostics/rendering/DiagnosticParameterRenderer.kt @@ -20,8 +20,14 @@ interface DiagnosticParameterRenderer { fun render(obj: O, renderingContext: RenderingContext): String } -fun Renderer(block: (O) -> String) = object : DiagnosticParameterRenderer { - override fun render(obj: O, renderingContext: RenderingContext): String = block(obj) +interface ContextIndependentParameterRenderer : DiagnosticParameterRenderer { + override fun render(obj: O, renderingContext: RenderingContext): String = render(obj) + + fun render(obj: O): String +} + +fun Renderer(block: (O) -> String) = object : ContextIndependentParameterRenderer { + override fun render(obj: O): String = block(obj) } fun ContextDependentRenderer(block: (O, RenderingContext) -> String) = object : DiagnosticParameterRenderer { diff --git a/compiler/frontend/src/org/jetbrains/kotlin/diagnostics/rendering/Renderers.kt b/compiler/frontend/src/org/jetbrains/kotlin/diagnostics/rendering/Renderers.kt index 655732f8649..dcc3624ec19 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/diagnostics/rendering/Renderers.kt +++ b/compiler/frontend/src/org/jetbrains/kotlin/diagnostics/rendering/Renderers.kt @@ -111,8 +111,8 @@ object Renderers { } @JvmField - val CAPITALIZED_DECLARATION_NAME_WITH_KIND_AND_PLATFORM = ContextDependentRenderer { descriptor, context -> - val declarationWithNameAndKind = DECLARATION_NAME_WITH_KIND.render(descriptor, context) + val CAPITALIZED_DECLARATION_NAME_WITH_KIND_AND_PLATFORM = Renderer { descriptor -> + val declarationWithNameAndKind = DECLARATION_NAME_WITH_KIND.render(descriptor) val withPlatform = if (descriptor is MemberDescriptor && descriptor.isActual) "actual $declarationWithNameAndKind" else diff --git a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/highlighter/IdeRenderers.kt b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/highlighter/IdeRenderers.kt index 4d8d7112cfe..550780966ac 100644 --- a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/highlighter/IdeRenderers.kt +++ b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/highlighter/IdeRenderers.kt @@ -86,8 +86,8 @@ object IdeRenderers { } @JvmField - val HTML_THROWABLE = ContextDependentRenderer { throwable, context -> - Renderers.THROWABLE.render(throwable, context).replace("\n", "
") + val HTML_THROWABLE = Renderer { throwable -> + Renderers.THROWABLE.render(throwable).replace("\n", "
") } @JvmField