From d084cfb65ba7362e6469e6c85534774623b2868b Mon Sep 17 00:00:00 2001 From: Simon Ogorodnik Date: Thu, 2 Dec 2021 02:32:55 +0300 Subject: [PATCH] FIR HL API: Unwrap substitution overrides if it contains stub types --- .../jetbrains/kotlin/analysis/api/fir/KtSymbolByFirBuilder.kt | 3 +++ .../delegatedPropertyAccessors/inStandardLibrary/notNull.txt | 4 ++-- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/KtSymbolByFirBuilder.kt b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/KtSymbolByFirBuilder.kt index 71289f16603..d1a51fbb9c4 100644 --- a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/KtSymbolByFirBuilder.kt +++ b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/KtSymbolByFirBuilder.kt @@ -221,6 +221,9 @@ internal class KtSymbolByFirBuilder private constructor( fir.unwrapSubstitutionOverrideIfNeeded()?.let { return buildFunctionSymbol(it) } + if (fir.dispatchReceiverType?.contains { it is ConeStubType } == true) { + return buildFunctionSymbol(fir.originalIfFakeOverride() ?: error("Stub type in real declaration")) + } check(fir.origin != FirDeclarationOrigin.SamConstructor) return symbolsCache.cache(fir) { KtFirFunctionSymbol(fir, resolveState, token, this@KtSymbolByFirBuilder) } diff --git a/analysis/analysis-api/testData/referenceResolve/delegatedPropertyAccessors/inStandardLibrary/notNull.txt b/analysis/analysis-api/testData/referenceResolve/delegatedPropertyAccessors/inStandardLibrary/notNull.txt index 8ab952d6aad..83a7b83d427 100644 --- a/analysis/analysis-api/testData/referenceResolve/delegatedPropertyAccessors/inStandardLibrary/notNull.txt +++ b/analysis/analysis-api/testData/referenceResolve/delegatedPropertyAccessors/inStandardLibrary/notNull.txt @@ -1,3 +1,3 @@ Resolved to: -0: (in kotlin.properties.ReadWriteProperty) operator fun getValue(thisRef: kotlin.Any?, property: kotlin.reflect.KProperty<*>): kotlin.Int -1: (in kotlin.properties.ReadWriteProperty) operator fun setValue(thisRef: kotlin.Any?, property: kotlin.reflect.KProperty<*>, value: kotlin.Int) +0: (in kotlin.properties.ReadWriteProperty) operator fun getValue(thisRef: T, property: kotlin.reflect.KProperty<*>): V +1: (in kotlin.properties.ReadWriteProperty) operator fun setValue(thisRef: T, property: kotlin.reflect.KProperty<*>, value: V) \ No newline at end of file