[FIR] Source for implicit iterator calls in for should not be null

^KT-62111 fixed


Merge-request: KT-MR-13029
Merged-by: Egor Kulikov <Egor.Kulikov@jetbrains.com>
This commit is contained in:
Egor Kulikov
2023-11-22 17:15:24 +00:00
committed by Space Team
parent 6a90926e2e
commit 43fc4ccf40
11 changed files with 43 additions and 17 deletions
@@ -1156,7 +1156,7 @@ class LightTreeRawFirExpressionBuilder(
val calculatedRangeExpression =
rangeExpression ?: buildErrorExpression(null, ConeSyntaxDiagnostic("No range in for loop"))
val fakeSource = forLoop.toFirSourceElement(KtFakeSourceElementKind.DesugaredForLoop)
val rangeSource = calculatedRangeExpression.source?.fakeElement(KtFakeSourceElementKind.DesugaredForLoop)
val rangeSource = calculatedRangeExpression.source?.fakeElement(KtFakeSourceElementKind.DesugaredForLoop) ?: fakeSource
val target: FirLoopTarget
// NB: FirForLoopChecker relies on this block existence and structure
return buildBlock {
@@ -1168,7 +1168,7 @@ class LightTreeRawFirExpressionBuilder(
buildFunctionCall {
source = rangeSource
calleeReference = buildSimpleNamedReference {
source = rangeSource ?: fakeSource
source = rangeSource
name = OperatorNameConventions.ITERATOR
}
explicitReceiver = calculatedRangeExpression
@@ -1180,7 +1180,7 @@ class LightTreeRawFirExpressionBuilder(
condition = buildFunctionCall {
source = rangeSource
calleeReference = buildSimpleNamedReference {
source = rangeSource ?: fakeSource
source = rangeSource
name = OperatorNameConventions.HAS_NEXT
}
explicitReceiver = generateResolvedAccessExpression(rangeSource, iteratorVal)
@@ -1200,7 +1200,7 @@ class LightTreeRawFirExpressionBuilder(
buildFunctionCall {
source = rangeSource
calleeReference = buildSimpleNamedReference {
source = rangeSource ?: fakeSource
source = rangeSource
name = OperatorNameConventions.NEXT
}
explicitReceiver = generateResolvedAccessExpression(rangeSource, iteratorVal)