FIR: add fake source element to implicit function return statement

This commit is contained in:
Ilya Kirillov
2020-08-28 15:21:42 +03:00
parent 1ccf8bfb67
commit 31f2c4a857
3 changed files with 4 additions and 4 deletions
@@ -1361,8 +1361,9 @@ class DeclarationsConverter(
baseSession, baseScopeProvider, stubMode, blockTree, offset = tree.getStartOffset(block), context
).convertBlockExpression(blockTree.root)
} else {
val firExpression = buildExpressionStub()
FirSingleExpressionBlock(
buildExpressionStub().toReturn()
firExpression.toReturn(baseSource = firExpression.source)
)
}
}
@@ -236,8 +236,7 @@ class RawFirBuilder(
}
else -> {
val result = { bodyExpression }.toFirExpression("Function has no body (but should)")
// basePsi is null, because 'return' is synthetic & should not be bound to some PSI
FirSingleExpressionBlock(result.toReturn(baseSource = null)) to null
FirSingleExpressionBlock(result.toReturn(baseSource = result.source)) to null
}
}
@@ -139,7 +139,7 @@ abstract class BaseFirBuilder<T>(val baseSession: FirSession, val context: Conte
)
}
source = baseSource
source = baseSource?.fakeElement(FirFakeSourceElementKind.ImplicitReturn)
result = this@toReturn
if (labelName == null) {
target = context.firFunctionTargets.lastOrNull { !it.isLambda } ?: FirFunctionTarget(labelName, isLambda = false).apply {