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
This commit is contained in:
+8
-2
@@ -20,8 +20,14 @@ interface DiagnosticParameterRenderer<in O> {
|
||||
fun render(obj: O, renderingContext: RenderingContext): String
|
||||
}
|
||||
|
||||
fun <O> Renderer(block: (O) -> String) = object : DiagnosticParameterRenderer<O> {
|
||||
override fun render(obj: O, renderingContext: RenderingContext): String = block(obj)
|
||||
interface ContextIndependentParameterRenderer<in O> : DiagnosticParameterRenderer<O> {
|
||||
override fun render(obj: O, renderingContext: RenderingContext): String = render(obj)
|
||||
|
||||
fun render(obj: O): String
|
||||
}
|
||||
|
||||
fun <O> Renderer(block: (O) -> String) = object : ContextIndependentParameterRenderer<O> {
|
||||
override fun render(obj: O): String = block(obj)
|
||||
}
|
||||
|
||||
fun <O> ContextDependentRenderer(block: (O, RenderingContext) -> String) = object : DiagnosticParameterRenderer<O> {
|
||||
|
||||
@@ -111,8 +111,8 @@ object Renderers {
|
||||
}
|
||||
|
||||
@JvmField
|
||||
val CAPITALIZED_DECLARATION_NAME_WITH_KIND_AND_PLATFORM = ContextDependentRenderer<DeclarationDescriptor> { descriptor, context ->
|
||||
val declarationWithNameAndKind = DECLARATION_NAME_WITH_KIND.render(descriptor, context)
|
||||
val CAPITALIZED_DECLARATION_NAME_WITH_KIND_AND_PLATFORM = Renderer<DeclarationDescriptor> { descriptor ->
|
||||
val declarationWithNameAndKind = DECLARATION_NAME_WITH_KIND.render(descriptor)
|
||||
val withPlatform = if (descriptor is MemberDescriptor && descriptor.isActual)
|
||||
"actual $declarationWithNameAndKind"
|
||||
else
|
||||
|
||||
@@ -86,8 +86,8 @@ object IdeRenderers {
|
||||
}
|
||||
|
||||
@JvmField
|
||||
val HTML_THROWABLE = ContextDependentRenderer<Throwable> { throwable, context ->
|
||||
Renderers.THROWABLE.render(throwable, context).replace("\n", "<br/>")
|
||||
val HTML_THROWABLE = Renderer<Throwable> { throwable ->
|
||||
Renderers.THROWABLE.render(throwable).replace("\n", "<br/>")
|
||||
}
|
||||
|
||||
@JvmField
|
||||
|
||||
Reference in New Issue
Block a user