From d9be05fea828ff66e6ba1611f19e499c56474694 Mon Sep 17 00:00:00 2001 From: Stanislav Erokhin Date: Fri, 22 Jan 2021 10:56:02 +0100 Subject: [PATCH] Support getContainer for the synthetic `it` value parameter Also fixed incorrect KtSymbolOrigin: it was SOURCE instead of SOURCE_MEMBER_GENERATED --- .../org/jetbrains/kotlin/idea/frontend/api/symbols/KtSymbol.kt | 1 + .../idea/fir/FirIdeDeserializedDeclarationSourceProvider.kt | 2 +- .../kotlin/idea/frontend/api/fir/symbols/KtFirSymbol.kt | 1 + 3 files changed, 3 insertions(+), 1 deletion(-) diff --git a/idea/idea-frontend-api/src/org/jetbrains/kotlin/idea/frontend/api/symbols/KtSymbol.kt b/idea/idea-frontend-api/src/org/jetbrains/kotlin/idea/frontend/api/symbols/KtSymbol.kt index 3a4775ad71c..b77a0d5ac19 100644 --- a/idea/idea-frontend-api/src/org/jetbrains/kotlin/idea/frontend/api/symbols/KtSymbol.kt +++ b/idea/idea-frontend-api/src/org/jetbrains/kotlin/idea/frontend/api/symbols/KtSymbol.kt @@ -53,6 +53,7 @@ enum class KtSymbolOrigin { * Declaration which do not have it's PSI source and was generated, they are: * For data classes the `copy`, `component{N}`, `toString`, `equals`, `hashCode` functions are generated * For enum classes the `valueOf` & `values` functions are generated + * For lambda the `it` property is generated */ SOURCE_MEMBER_GENERATED, diff --git a/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/fir/FirIdeDeserializedDeclarationSourceProvider.kt b/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/fir/FirIdeDeserializedDeclarationSourceProvider.kt index c268619fe66..e517bc0d7b0 100644 --- a/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/fir/FirIdeDeserializedDeclarationSourceProvider.kt +++ b/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/fir/FirIdeDeserializedDeclarationSourceProvider.kt @@ -139,7 +139,7 @@ object FirIdeDeserializedDeclarationSourceProvider { private fun KtElement.isCompiled(): Boolean = containingKtFile.isCompiled -private val allowedFakeElementKinds = setOf(FirFakeSourceElementKind.PropertyFromParameter) +private val allowedFakeElementKinds = setOf(FirFakeSourceElementKind.PropertyFromParameter, FirFakeSourceElementKind.ItLambdaParameter) private fun FirElement.getAllowedPsi() = when (val source = source) { null -> null diff --git a/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/symbols/KtFirSymbol.kt b/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/symbols/KtFirSymbol.kt index 9956c461a3a..8fc32a82251 100644 --- a/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/symbols/KtFirSymbol.kt +++ b/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/symbols/KtFirSymbol.kt @@ -26,6 +26,7 @@ private tailrec fun FirDeclaration.ktSymbolOrigin(): KtSymbolOrigin = when (orig FirDeclarationOrigin.Source -> { if (source?.kind == FirFakeSourceElementKind.DataClassGeneratedMembers || source?.kind == FirFakeSourceElementKind.EnumGeneratedDeclaration + || source?.kind == FirFakeSourceElementKind.ItLambdaParameter ) { KtSymbolOrigin.SOURCE_MEMBER_GENERATED } else KtSymbolOrigin.SOURCE