translator: refactoring BlockCodegen
This commit is contained in:
@@ -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()
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user