From 4ad9f486420620e322f19edfb5932d5df63fe164 Mon Sep 17 00:00:00 2001 From: Dmitriy Novozhilov Date: Tue, 3 Nov 2020 12:31:23 +0300 Subject: [PATCH] [CMI] Cleanup code of CodeMetaInfo --- .../codeMetaInfo/AbstractCodeMetaInfoTest.kt | 2 +- .../idea/codeMetaInfo/models/CodeMetaInfo.kt | 29 ++++++++++++------- ...AbstractCodeMetaInfoRenderConfiguration.kt | 6 ++-- 3 files changed, 23 insertions(+), 14 deletions(-) diff --git a/idea/tests/org/jetbrains/kotlin/idea/codeMetaInfo/AbstractCodeMetaInfoTest.kt b/idea/tests/org/jetbrains/kotlin/idea/codeMetaInfo/AbstractCodeMetaInfoTest.kt index b7f5bf28cd6..32de9fc1d22 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/codeMetaInfo/AbstractCodeMetaInfoTest.kt +++ b/idea/tests/org/jetbrains/kotlin/idea/codeMetaInfo/AbstractCodeMetaInfoTest.kt @@ -67,7 +67,7 @@ class CodeMetaInfoTestCase( ): List { val tempSourceKtFile = PsiManager.getInstance(project).findFile(file.virtualFile) as KtFile val resolutionFacade = tempSourceKtFile.getResolutionFacade() - val (bindingContext, moduleDescriptor) = resolutionFacade.analyzeWithAllCompilerChecks(listOf(tempSourceKtFile)) + val (bindingContext, moduleDescriptor, _) = resolutionFacade.analyzeWithAllCompilerChecks(listOf(tempSourceKtFile)) val directives = KotlinTestUtils.parseDirectives(file.text) val diagnosticsFilter = BaseDiagnosticsTest.parseDiagnosticFilterDirective(directives, allowUnderscoreUsage = false) val diagnostics = CheckerTestUtil.getDiagnosticsIncludingSyntaxErrors( diff --git a/idea/tests/org/jetbrains/kotlin/idea/codeMetaInfo/models/CodeMetaInfo.kt b/idea/tests/org/jetbrains/kotlin/idea/codeMetaInfo/models/CodeMetaInfo.kt index 8e483721a5a..81e670030e7 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/codeMetaInfo/models/CodeMetaInfo.kt +++ b/idea/tests/org/jetbrains/kotlin/idea/codeMetaInfo/models/CodeMetaInfo.kt @@ -29,18 +29,18 @@ interface CodeMetaInfo { class DiagnosticCodeMetaInfo( override val start: Int, override val end: Int, - override val renderConfiguration: AbstractCodeMetaInfoRenderConfiguration, + override val renderConfiguration: DiagnosticCodeMetaInfoRenderConfiguration, val diagnostic: Diagnostic ) : CodeMetaInfo { override val platforms: MutableList = mutableListOf() - override fun asString() = renderConfiguration.asString(this) + override fun asString(): String = renderConfiguration.asString(this) - override fun getTag() = (renderConfiguration as DiagnosticCodeMetaInfoRenderConfiguration).getTag(this) + override fun getTag(): String = renderConfiguration.getTag(this) } class LineMarkerCodeMetaInfo( - override val renderConfiguration: AbstractCodeMetaInfoRenderConfiguration, + override val renderConfiguration: LineMarkerRenderConfiguration, val lineMarker: LineMarkerInfo<*> ) : CodeMetaInfo { override val start: Int @@ -49,13 +49,13 @@ class LineMarkerCodeMetaInfo( get() = lineMarker.endOffset override val platforms: MutableList = mutableListOf() - override fun asString() = renderConfiguration.asString(this) + override fun asString(): String = renderConfiguration.asString(this) - override fun getTag() = (renderConfiguration as LineMarkerRenderConfiguration).getTag() + override fun getTag(): String = renderConfiguration.getTag() } class HighlightingCodeMetaInfo( - override val renderConfiguration: AbstractCodeMetaInfoRenderConfiguration, + override val renderConfiguration: HighlightingRenderConfiguration, val highlightingInfo: HighlightInfo ) : CodeMetaInfo { override val start: Int @@ -64,9 +64,9 @@ class HighlightingCodeMetaInfo( get() = highlightingInfo.endOffset override val platforms: MutableList = mutableListOf() - override fun asString() = renderConfiguration.asString(this) + override fun asString(): String = renderConfiguration.asString(this) - override fun getTag() = (renderConfiguration as HighlightingRenderConfiguration).getTag() + override fun getTag(): String = renderConfiguration.getTag() } class ParsedCodeMetaInfo( @@ -77,14 +77,21 @@ class ParsedCodeMetaInfo( ) : CodeMetaInfo { override val renderConfiguration = object : AbstractCodeMetaInfoRenderConfiguration(false) {} - override fun asString() = renderConfiguration.asString(this) + override fun asString(): String = renderConfiguration.asString(this) + + override fun getTag(): String = tag override fun equals(other: Any?): Boolean { if (other == null || other !is CodeMetaInfo) return false return this.tag == other.getTag() && this.start == other.start && this.end == other.end } - override fun getTag() = tag + override fun hashCode(): Int { + var result = start + result = 31 * result + end + result = 31 * result + tag.hashCode() + return result + } } fun createCodeMetaInfo(obj: Any, renderConfiguration: AbstractCodeMetaInfoRenderConfiguration): List { diff --git a/idea/tests/org/jetbrains/kotlin/idea/codeMetaInfo/renderConfigurations/AbstractCodeMetaInfoRenderConfiguration.kt b/idea/tests/org/jetbrains/kotlin/idea/codeMetaInfo/renderConfigurations/AbstractCodeMetaInfoRenderConfiguration.kt index 4500557b0e0..f0b135a2a1b 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/codeMetaInfo/renderConfigurations/AbstractCodeMetaInfoRenderConfiguration.kt +++ b/idea/tests/org/jetbrains/kotlin/idea/codeMetaInfo/renderConfigurations/AbstractCodeMetaInfoRenderConfiguration.kt @@ -17,7 +17,7 @@ import org.jetbrains.kotlin.idea.codeMetaInfo.models.LineMarkerCodeMetaInfo abstract class AbstractCodeMetaInfoRenderConfiguration(var renderParams: Boolean = true) { - private val clickOrPressRegex = "Click or press (.*)to navigate".toRegex() //We have different hotkeys on different platforms + private val clickOrPressRegex = "Click or press (.*)to navigate".toRegex() // We have different hotkeys on different platforms open fun asString(codeMetaInfo: CodeMetaInfo) = codeMetaInfo.getTag() + getPlatformsString(codeMetaInfo) open fun getAdditionalParams(codeMetaInfo: CodeMetaInfo) = "" @@ -62,6 +62,8 @@ open class DiagnosticCodeMetaInfoRenderConfiguration( private fun getParamsString(codeMetaInfo: DiagnosticCodeMetaInfo): String { if (!renderParams) return "" val params = mutableListOf() + + @Suppress("UNCHECKED_CAST") val renderer = when (codeMetaInfo.diagnostic.factory) { is DebugInfoDiagnosticFactory1 -> DiagnosticWithParameters1Renderer( "{0}", @@ -137,4 +139,4 @@ open class HighlightingRenderConfiguration( return if (paramsString.isEmpty()) "" else "(\"$paramsString\")" } -} \ No newline at end of file +}