[FIR] Do not expect FirExpression when KtLoopExpression is supplied

^KTIJ-26599 fixed

Merge-request: KT-MR-11708
Merged-by: Egor Kulikov <Egor.Kulikov@jetbrains.com>
This commit is contained in:
Egor Kulikov
2023-08-29 09:26:52 +00:00
committed by Space Team
parent f20cc10660
commit fd5ac8575c
@@ -27,8 +27,10 @@ import org.jetbrains.kotlin.fir.symbols.lazyResolveToPhase
import org.jetbrains.kotlin.fir.types.receiverType
import org.jetbrains.kotlin.psi.KtExpression
import org.jetbrains.kotlin.psi.KtFile
import org.jetbrains.kotlin.psi.KtLoopExpression
import org.jetbrains.kotlin.psi.KtSafeQualifiedExpression
import org.jetbrains.kotlin.psi.KtSimpleNameExpression
import org.jetbrains.kotlin.psi.KtStatementExpression
import org.jetbrains.kotlin.psi.psiUtil.getQualifiedExpressionForReceiver
import org.jetbrains.kotlin.utils.exceptions.errorWithAttachment
import org.jetbrains.kotlin.utils.exceptions.withPsiEntry
@@ -112,7 +114,11 @@ internal class KtFirCompletionCandidateChecker(
* @receiver PSI receiver expression in some qualified expression (e.g. `foo` in `foo?.bar()`, `a` in `a.b`)
* @return A FIR expression which most precisely represents the receiver for the corresponding FIR call.
*/
private fun KtExpression.getMatchingFirExpressionForCallReceiver(): FirExpression {
private fun KtExpression.getMatchingFirExpressionForCallReceiver(): FirExpression? {
// FIR for KtStatementExpression is not FirExpression
if (this is KtStatementExpression) {
return null
}
val psiWholeCall = this.getQualifiedExpressionForReceiver()
if (psiWholeCall !is KtSafeQualifiedExpression) return this.getOrBuildFirOfType<FirExpression>(firResolveSession)