[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] =
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
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
fun <T : FirElement, D> MutableList<T>.transformInplace(transformer: FirTransformer<D>, data: D) {
@@ -34,4 +36,7 @@ fun <T : FirElement, D> T.transformSingle(transformer: FirTransformer<D>, data:
return (this as FirPureAbstractElement).transform<T, D>(transformer, data).single
}
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)