From b8c3947827df6df96483724965c380fc7ea00eac Mon Sep 17 00:00:00 2001 From: Mikhail Glukhikh Date: Wed, 10 Jul 2019 15:43:39 +0300 Subject: [PATCH] Measure unresolved function call & qualified access # in FIR bench --- .../jetbrains/kotlin/fir/FirResolveBench.kt | 30 +++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/compiler/tests-common/tests/org/jetbrains/kotlin/fir/FirResolveBench.kt b/compiler/tests-common/tests/org/jetbrains/kotlin/fir/FirResolveBench.kt index 1e10ff271cc..e95c4b0a84d 100644 --- a/compiler/tests-common/tests/org/jetbrains/kotlin/fir/FirResolveBench.kt +++ b/compiler/tests-common/tests/org/jetbrains/kotlin/fir/FirResolveBench.kt @@ -8,6 +8,8 @@ import com.intellij.openapi.fileEditor.FileDocumentManager import com.intellij.psi.PsiElement import org.jetbrains.kotlin.fir.builder.RawFirBuilder import org.jetbrains.kotlin.fir.declarations.FirFile +import org.jetbrains.kotlin.fir.expressions.FirFunctionCall +import org.jetbrains.kotlin.fir.expressions.FirQualifiedAccessExpression import org.jetbrains.kotlin.fir.resolve.FirProvider import org.jetbrains.kotlin.fir.resolve.impl.FirProviderImpl import org.jetbrains.kotlin.fir.types.* @@ -38,6 +40,8 @@ class FirResolveBench(val withProgress: Boolean) { var resolvedTypes = 0 var errorTypes = 0 var unresolvedTypes = 0 + var errorFunctionCallTypes = 0 + var errorQualifiedAccessTypes = 0 var implicitTypes = 0 var fileCount = 0 @@ -113,6 +117,30 @@ class FirResolveBench(val withProgress: Boolean) { element.acceptChildren(this) } + override fun visitFunctionCall(functionCall: FirFunctionCall) { + val typeRef = functionCall.typeRef + if (typeRef is FirResolvedTypeRef) { + val type = typeRef.type + if (type is ConeKotlinErrorType) { + errorFunctionCallTypes++ + } + } + + super.visitFunctionCall(functionCall) + } + + override fun visitQualifiedAccessExpression(qualifiedAccessExpression: FirQualifiedAccessExpression) { + val typeRef = qualifiedAccessExpression.typeRef + if (typeRef is FirResolvedTypeRef) { + val type = typeRef.type + if (type is ConeKotlinErrorType) { + errorQualifiedAccessTypes++ + } + } + + super.visitQualifiedAccessExpression(qualifiedAccessExpression) + } + override fun visitTypeRef(typeRef: FirTypeRef) { unresolvedTypes++ @@ -177,6 +205,8 @@ class FirResolveBench(val withProgress: Boolean) { val goodTypes = resolvedTypes - errorTypes - implicitTypes stream.println("CORRECTLY RESOLVED TYPES: $goodTypes (${goodTypes percentOf resolvedTypes} of resolved)") stream.println("ERRONEOUSLY RESOLVED TYPES: $errorTypes (${errorTypes percentOf resolvedTypes} of resolved)") + stream.println(" - unresolved calls: $errorFunctionCallTypes") + stream.println(" - unresolved q.accesses: $errorQualifiedAccessTypes") stream.println("ERRONEOUSLY RESOLVED IMPLICIT TYPES: $implicitTypes (${implicitTypes percentOf resolvedTypes} of resolved)") stream.println("UNIQUE ERROR TYPES: ${errorTypesReports.size}")