[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:
+7
-1
@@ -27,8 +27,10 @@ import org.jetbrains.kotlin.fir.symbols.lazyResolveToPhase
|
|||||||
import org.jetbrains.kotlin.fir.types.receiverType
|
import org.jetbrains.kotlin.fir.types.receiverType
|
||||||
import org.jetbrains.kotlin.psi.KtExpression
|
import org.jetbrains.kotlin.psi.KtExpression
|
||||||
import org.jetbrains.kotlin.psi.KtFile
|
import org.jetbrains.kotlin.psi.KtFile
|
||||||
|
import org.jetbrains.kotlin.psi.KtLoopExpression
|
||||||
import org.jetbrains.kotlin.psi.KtSafeQualifiedExpression
|
import org.jetbrains.kotlin.psi.KtSafeQualifiedExpression
|
||||||
import org.jetbrains.kotlin.psi.KtSimpleNameExpression
|
import org.jetbrains.kotlin.psi.KtSimpleNameExpression
|
||||||
|
import org.jetbrains.kotlin.psi.KtStatementExpression
|
||||||
import org.jetbrains.kotlin.psi.psiUtil.getQualifiedExpressionForReceiver
|
import org.jetbrains.kotlin.psi.psiUtil.getQualifiedExpressionForReceiver
|
||||||
import org.jetbrains.kotlin.utils.exceptions.errorWithAttachment
|
import org.jetbrains.kotlin.utils.exceptions.errorWithAttachment
|
||||||
import org.jetbrains.kotlin.utils.exceptions.withPsiEntry
|
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`)
|
* @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.
|
* @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()
|
val psiWholeCall = this.getQualifiedExpressionForReceiver()
|
||||||
if (psiWholeCall !is KtSafeQualifiedExpression) return this.getOrBuildFirOfType<FirExpression>(firResolveSession)
|
if (psiWholeCall !is KtSafeQualifiedExpression) return this.getOrBuildFirOfType<FirExpression>(firResolveSession)
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user