From 254092a2679816cca9f10b4e97e9f4abe73dba9f Mon Sep 17 00:00:00 2001 From: Ilya Kirillov Date: Mon, 1 May 2023 12:02:09 +0200 Subject: [PATCH] [Analysis API FIR] tests: add ability to ignore specific scope kind in TestScopeRenderer ^KT-57966 --- .../AbstractScopeContextForPositionTest.kt | 5 ++++- .../scopeProvider/TestScopeRenderer.kt | 19 +++++++++++++------ 2 files changed, 17 insertions(+), 7 deletions(-) diff --git a/analysis/analysis-api-impl-base/tests/org/jetbrains/kotlin/analysis/api/impl/base/test/cases/components/scopeProvider/AbstractScopeContextForPositionTest.kt b/analysis/analysis-api-impl-base/tests/org/jetbrains/kotlin/analysis/api/impl/base/test/cases/components/scopeProvider/AbstractScopeContextForPositionTest.kt index 065d1499df1..d5238889d7a 100644 --- a/analysis/analysis-api-impl-base/tests/org/jetbrains/kotlin/analysis/api/impl/base/test/cases/components/scopeProvider/AbstractScopeContextForPositionTest.kt +++ b/analysis/analysis-api-impl-base/tests/org/jetbrains/kotlin/analysis/api/impl/base/test/cases/components/scopeProvider/AbstractScopeContextForPositionTest.kt @@ -7,6 +7,7 @@ package org.jetbrains.kotlin.analysis.api.impl.base.test.cases.components.scopeP import org.jetbrains.kotlin.analysis.api.KtAnalysisSession import org.jetbrains.kotlin.analysis.api.components.KtScopeContext +import org.jetbrains.kotlin.analysis.api.components.KtScopeKind import org.jetbrains.kotlin.analysis.api.impl.base.test.cases.components.scopeProvider.TestScopeRenderer.renderForTests import org.jetbrains.kotlin.analysis.test.framework.base.AbstractAnalysisApiBasedSingleModuleTest import org.jetbrains.kotlin.analysis.test.framework.services.expressionMarkerProvider @@ -39,6 +40,8 @@ abstract class AbstractScopeContextForPositionTest : AbstractAnalysisApiBasedSin printPretty: Boolean = false ): String = prettyPrint { appendLine("element: ${element.text}") - renderForTests(scopeContext, printPretty) + renderForTests(scopeContext, printPretty) { scopeKind -> + scopeKind !is KtScopeKind.DefaultSimpleImportingScope && scopeKind !is KtScopeKind.DefaultStarImportingScope + } } } diff --git a/analysis/analysis-api-impl-base/tests/org/jetbrains/kotlin/analysis/api/impl/base/test/cases/components/scopeProvider/TestScopeRenderer.kt b/analysis/analysis-api-impl-base/tests/org/jetbrains/kotlin/analysis/api/impl/base/test/cases/components/scopeProvider/TestScopeRenderer.kt index c129e8fa5b2..c51a4c4e5a2 100644 --- a/analysis/analysis-api-impl-base/tests/org/jetbrains/kotlin/analysis/api/impl/base/test/cases/components/scopeProvider/TestScopeRenderer.kt +++ b/analysis/analysis-api-impl-base/tests/org/jetbrains/kotlin/analysis/api/impl/base/test/cases/components/scopeProvider/TestScopeRenderer.kt @@ -25,7 +25,8 @@ internal object TestScopeRenderer { context (KtAnalysisSession) fun PrettyPrinter.renderForTests( scopeContext: KtScopeContext, - printPretty: Boolean = false + printPretty: Boolean = false, + fullyPrintScope: (KtScopeKind) -> Boolean, ) { appendLine("implicit receivers:") @@ -39,7 +40,7 @@ internal object TestScopeRenderer { } appendLine("scopes:") withIndent { - renderScopeContext(scopeContext, printPretty) + renderScopeContext(scopeContext, printPretty, fullyPrintScope) } } @@ -58,18 +59,24 @@ internal object TestScopeRenderer { context(KtAnalysisSession) private fun PrettyPrinter.renderScopeContext( scopeContext: KtScopeContext, - printPretty: Boolean + printPretty: Boolean, + fullyPrintScope: (KtScopeKind) -> Boolean, ) { for (scopeWithKind in scopeContext.scopes) { - appendLine(renderForTests(scopeWithKind.scope, scopeWithKind.kind, printPretty)) + appendLine(renderForTests(scopeWithKind.scope, scopeWithKind.kind, printPretty, fullyPrintScope)) } } context (KtAnalysisSession) - private fun renderForTests(scope: KtScope, scopeKind: KtScopeKind, printPretty: Boolean): String = prettyPrint { + private fun renderForTests( + scope: KtScope, + scopeKind: KtScopeKind, + printPretty: Boolean, + fullyPrintScope: (KtScopeKind) -> Boolean, + ): String = prettyPrint { append("${scopeKind::class.simpleName}, index = ${scopeKind.indexInTower}") - if (scopeKind is KtScopeKind.DefaultSimpleImportingScope || scopeKind is KtScopeKind.DefaultStarImportingScope) { + if (!fullyPrintScope(scopeKind)) { appendLine() return@prettyPrint }