From 967304ffca72278b60dd4b7c42f40c4ca0cc1e9a Mon Sep 17 00:00:00 2001 From: Victor Petukhov Date: Thu, 8 Jul 2021 16:27:19 +0300 Subject: [PATCH] Don't compute default type for a fixing type variable for self type if the corresponding feature is disabled --- .../calls/inference/components/ResultTypeResolver.kt | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/compiler/resolution.common/src/org/jetbrains/kotlin/resolve/calls/inference/components/ResultTypeResolver.kt b/compiler/resolution.common/src/org/jetbrains/kotlin/resolve/calls/inference/components/ResultTypeResolver.kt index 152b514cf25..1b8bd25e09e 100644 --- a/compiler/resolution.common/src/org/jetbrains/kotlin/resolve/calls/inference/components/ResultTypeResolver.kt +++ b/compiler/resolution.common/src/org/jetbrains/kotlin/resolve/calls/inference/components/ResultTypeResolver.kt @@ -5,6 +5,7 @@ package org.jetbrains.kotlin.resolve.calls.inference.components +import org.jetbrains.kotlin.config.LanguageFeature import org.jetbrains.kotlin.config.LanguageVersionSettings import org.jetbrains.kotlin.resolve.calls.NewCommonSuperTypeCalculator import org.jetbrains.kotlin.resolve.calls.inference.components.TypeVariableDirectionCalculator.ResolveDirection @@ -26,6 +27,9 @@ class ResultTypeResolver( fun isReified(variable: TypeVariableMarker): Boolean } + private val isTypeInferenceForSelfTypesSupported: Boolean + get() = languageVersionSettings.supportsFeature(LanguageFeature.TypeInferenceOnCallsWithSelfTypes) + private fun Context.getDefaultTypeForSelfType( constraints: List, typeVariable: TypeVariableMarker @@ -46,7 +50,9 @@ class ResultTypeResolver( constraints: List, typeVariable: TypeVariableMarker ): KotlinTypeMarker { - getDefaultTypeForSelfType(constraints, typeVariable)?.let { return it } + if (isTypeInferenceForSelfTypesSupported) { + getDefaultTypeForSelfType(constraints, typeVariable)?.let { return it } + } return if (direction == ResolveDirection.TO_SUBTYPE) nothingType() else nullableAnyType() }