From 10f409adc17c8cbad13539c0c0884f9b7cf0eac3 Mon Sep 17 00:00:00 2001 From: Yan Zhulanow Date: Tue, 2 Nov 2021 02:14:47 +0900 Subject: [PATCH] [FIR IDE] Handle implicit 'it' lambda argument correctly in AAPI/FE10 This commit partially fixes KtFe10SymbolByPsiTestGenerated.testImplicitReturnInLambda(). --- .../KtFe10PsiLiteralAnonymousFunctionSymbol.kt | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/psiBased/KtFe10PsiLiteralAnonymousFunctionSymbol.kt b/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/psiBased/KtFe10PsiLiteralAnonymousFunctionSymbol.kt index ec080233ac8..0f29a191b80 100644 --- a/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/psiBased/KtFe10PsiLiteralAnonymousFunctionSymbol.kt +++ b/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/psiBased/KtFe10PsiLiteralAnonymousFunctionSymbol.kt @@ -6,7 +6,7 @@ package org.jetbrains.kotlin.analysis.api.descriptors.symbols.psiBased import org.jetbrains.kotlin.analysis.api.descriptors.Fe10AnalysisContext -import org.jetbrains.kotlin.analysis.api.descriptors.KtFe10AnalysisSession +import org.jetbrains.kotlin.analysis.api.descriptors.symbols.descriptorBased.KtFe10DescValueParameterSymbol import org.jetbrains.kotlin.analysis.api.descriptors.symbols.descriptorBased.base.toKtTypeAndAnnotations import org.jetbrains.kotlin.analysis.api.descriptors.symbols.pointers.KtFe10NeverRestoringSymbolPointer import org.jetbrains.kotlin.analysis.api.descriptors.symbols.psiBased.base.KtFe10PsiSymbol @@ -33,7 +33,14 @@ internal class KtFe10PsiLiteralAnonymousFunctionSymbol( } override val valueParameters: List - get() = withValidityAssertion { psi.valueParameters.map { KtFe10PsiValueParameterSymbol(it, analysisContext) } } + get() = withValidityAssertion { + return if (psi.valueParameters.isNotEmpty()) { + psi.valueParameters.map { KtFe10PsiValueParameterSymbol(it, analysisContext) } + } else { + // There might be implicit 'it' + descriptor?.valueParameters.orEmpty().map { KtFe10DescValueParameterSymbol(it, analysisContext) } + } + } override val hasStableParameterNames: Boolean get() = withValidityAssertion { true }