FIR: add fake source element to implicit function return statement
This commit is contained in:
+2
-1
@@ -1361,8 +1361,9 @@ class DeclarationsConverter(
|
|||||||
baseSession, baseScopeProvider, stubMode, blockTree, offset = tree.getStartOffset(block), context
|
baseSession, baseScopeProvider, stubMode, blockTree, offset = tree.getStartOffset(block), context
|
||||||
).convertBlockExpression(blockTree.root)
|
).convertBlockExpression(blockTree.root)
|
||||||
} else {
|
} else {
|
||||||
|
val firExpression = buildExpressionStub()
|
||||||
FirSingleExpressionBlock(
|
FirSingleExpressionBlock(
|
||||||
buildExpressionStub().toReturn()
|
firExpression.toReturn(baseSource = firExpression.source)
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -236,8 +236,7 @@ class RawFirBuilder(
|
|||||||
}
|
}
|
||||||
else -> {
|
else -> {
|
||||||
val result = { bodyExpression }.toFirExpression("Function has no body (but should)")
|
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 = result.source)) to null
|
||||||
FirSingleExpressionBlock(result.toReturn(baseSource = null)) to null
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+1
-1
@@ -139,7 +139,7 @@ abstract class BaseFirBuilder<T>(val baseSession: FirSession, val context: Conte
|
|||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
source = baseSource
|
source = baseSource?.fakeElement(FirFakeSourceElementKind.ImplicitReturn)
|
||||||
result = this@toReturn
|
result = this@toReturn
|
||||||
if (labelName == null) {
|
if (labelName == null) {
|
||||||
target = context.firFunctionTargets.lastOrNull { !it.isLambda } ?: FirFunctionTarget(labelName, isLambda = false).apply {
|
target = context.firFunctionTargets.lastOrNull { !it.isLambda } ?: FirFunctionTarget(labelName, isLambda = false).apply {
|
||||||
|
|||||||
Reference in New Issue
Block a user