translator: refactoring BlockCodegen

This commit is contained in:
Alexey Stepanov
2016-08-29 16:07:56 +03:00
parent 90d3e895e8
commit 67e2d8cbee
@@ -582,33 +582,21 @@ abstract class BlockCodegen(val state: TranslationState, val variableManager: Va
return result return result
} }
private fun parseArgList(expr: KtCallExpression, scopeDepth: Int): List<LLVMSingleValue> { private fun parseArgList(expr: KtCallExpression, scopeDepth: Int): List<LLVMSingleValue> =
val args = expr.getValueArgumentsInParentheses() parseValueArguments(expr.getValueArgumentsInParentheses(), scopeDepth)
return parseValueArguments(args, scopeDepth)
}
private fun parseValueArguments(args: List<ValueArgument>, scopeDepth: Int): List<LLVMSingleValue> { private fun parseValueArguments(args: List<ValueArgument>, scopeDepth: Int): List<LLVMSingleValue> =
val result = ArrayList<LLVMSingleValue>() args.map { parseOneValueArgument(it, scopeDepth) }
for (arg in args) { fun parseOneValueArgument(arg: ValueArgument, scopeDepth: Int): LLVMSingleValue =
result.add(parseOneValueArgument(arg, scopeDepth)) evaluateExpression(arg.getArgumentExpression(), scopeDepth) as LLVMSingleValue
}
return result
}
fun parseOneValueArgument(arg: ValueArgument, scopeDepth: Int): LLVMSingleValue {
return evaluateExpression(arg.getArgumentExpression(), scopeDepth) as LLVMSingleValue
}
private fun parseNamedValueArguments(args: MutableCollection<ResolvedValueArgument>, defaultValues: List<KtExpression?>, scopeDepth: Int): List<LLVMSingleValue> = private fun parseNamedValueArguments(args: MutableCollection<ResolvedValueArgument>, defaultValues: List<KtExpression?>, scopeDepth: Int): List<LLVMSingleValue> =
args.mapIndexed(fun(i: Int, value: ResolvedValueArgument): LLVMSingleValue { args.mapIndexed(fun(i: Int, value: ResolvedValueArgument): LLVMSingleValue {
return when (value) { return when (value) {
is DefaultValueArgument -> evaluateExpression(defaultValues[i], scopeDepth)!! is DefaultValueArgument -> evaluateExpression(defaultValues[i], scopeDepth)!!
else -> { is ExpressionValueArgument -> evaluateExpression((value.valueArgument as KtValueArgument).getArgumentExpression()!!, scopeDepth)!!
val expr = ((value as ExpressionValueArgument).valueArgument as KtValueArgument).getArgumentExpression()!! else -> throw UnexpectedException("Wrong parser argument")
evaluateExpression(expr, scopeDepth)!!
}
} }
}).toList() }).toList()