[FIR] Add util function for extracting return arguments from block

This commit is contained in:
Dmitriy Novozhilov
2019-08-02 12:30:38 +03:00
parent fe3824d796
commit 741ff958e8
2 changed files with 7 additions and 2 deletions
@@ -122,7 +122,7 @@ class FirCallCompleter(
replacements[lambdaArgument] = replacements[lambdaArgument] =
newLambdaExpression.transformSingle(transformer, FirBodyResolveTransformer.LambdaResolution(expectedReturnTypeRef)) newLambdaExpression.transformSingle(transformer, FirBodyResolveTransformer.LambdaResolution(expectedReturnTypeRef))
return listOfNotNull(newLambdaExpression.body?.statements?.lastOrNull() as? FirExpression) to InferenceSession.default return (newLambdaExpression.body?.returnExpressions() ?: emptyList()) to InferenceSession.default
} }
} }
} }
@@ -6,6 +6,8 @@
package org.jetbrains.kotlin.fir package org.jetbrains.kotlin.fir
import org.jetbrains.kotlin.analyzer.ModuleInfo import org.jetbrains.kotlin.analyzer.ModuleInfo
import org.jetbrains.kotlin.fir.expressions.FirBlock
import org.jetbrains.kotlin.fir.expressions.FirExpression
import org.jetbrains.kotlin.fir.visitors.FirTransformer import org.jetbrains.kotlin.fir.visitors.FirTransformer
fun <T : FirElement, D> MutableList<T>.transformInplace(transformer: FirTransformer<D>, data: D) { fun <T : FirElement, D> MutableList<T>.transformInplace(transformer: FirTransformer<D>, data: D) {
@@ -35,3 +37,6 @@ fun <T : FirElement, D> T.transformSingle(transformer: FirTransformer<D>, data:
} }
fun ModuleInfo.dependenciesWithoutSelf(): Sequence<ModuleInfo> = dependencies().asSequence().filter { it != this } fun ModuleInfo.dependenciesWithoutSelf(): Sequence<ModuleInfo> = dependencies().asSequence().filter { it != this }
// TODO: rewrite
fun FirBlock.returnExpressions(): List<FirExpression> = listOfNotNull(statements.lastOrNull() as? FirExpression)