| Index: runtime/vm/kernel_reader.cc
|
| diff --git a/runtime/vm/kernel_reader.cc b/runtime/vm/kernel_reader.cc
|
| index 5eb64607f79fed167926edfe31ee74b45606b431..7f467b0dbd04dd10de8230944ef46ce4d9afb7aa 100644
|
| --- a/runtime/vm/kernel_reader.cc
|
| +++ b/runtime/vm/kernel_reader.cc
|
| @@ -541,8 +541,8 @@ void KernelReader::SetupFunctionParameters(TranslationHelper translation_helper,
|
| }
|
| for (intptr_t i = 0; i < node->positional_parameters().length(); i++, pos++) {
|
| VariableDeclaration* kernel_variable = node->positional_parameters()[i];
|
| - const AbstractType& type =
|
| - type_translator.TranslateType(kernel_variable->type());
|
| + const AbstractType& type = type_translator.TranslateTypeWithoutFinalization(
|
| + kernel_variable->type());
|
| function.SetParameterTypeAt(
|
| pos, type.IsMalformed() ? Type::dynamic_type() : type);
|
| function.SetParameterNameAt(
|
| @@ -550,18 +550,21 @@ void KernelReader::SetupFunctionParameters(TranslationHelper translation_helper,
|
| }
|
| for (intptr_t i = 0; i < node->named_parameters().length(); i++, pos++) {
|
| VariableDeclaration* named_expression = node->named_parameters()[i];
|
| - const AbstractType& type =
|
| - type_translator.TranslateType(named_expression->type());
|
| + const AbstractType& type = type_translator.TranslateTypeWithoutFinalization(
|
| + named_expression->type());
|
| function.SetParameterTypeAt(
|
| pos, type.IsMalformed() ? Type::dynamic_type() : type);
|
| function.SetParameterNameAt(
|
| pos, translation_helper.DartSymbol(named_expression->name()));
|
| }
|
|
|
| - const AbstractType& return_type =
|
| - type_translator.TranslateType(node->return_type());
|
| - function.set_result_type(return_type.IsMalformed() ? Type::dynamic_type()
|
| - : return_type);
|
| + // The result type for generative constructors has already been set.
|
| + if (!function.IsGenerativeConstructor()) {
|
| + const AbstractType& return_type =
|
| + type_translator.TranslateTypeWithoutFinalization(node->return_type());
|
| + function.set_result_type(return_type.IsMalformed() ? Type::dynamic_type()
|
| + : return_type);
|
| + }
|
| }
|
|
|
|
|
|
|