| Index: runtime/vm/kernel_to_il.cc
|
| diff --git a/runtime/vm/kernel_to_il.cc b/runtime/vm/kernel_to_il.cc
|
| index b64ca2809b8411be4f61711f823fbf9364ea8f2b..100610e1f1914db2d45a34242a66ec73ccd87b89 100644
|
| --- a/runtime/vm/kernel_to_il.cc
|
| +++ b/runtime/vm/kernel_to_il.cc
|
| @@ -4963,9 +4963,8 @@ void FlowGraphBuilder::VisitConstructorInvocation(ConstructorInvocation* node) {
|
| // Check for malbounded-ness of type.
|
| if (I->type_checks()) {
|
| List<DartType>& kernel_type_arguments = node->arguments()->types();
|
| - const TypeArguments& type_arguments = T.TranslateInstantiatedTypeArguments(
|
| - klass, kernel_type_arguments.raw_array(),
|
| - kernel_type_arguments.length());
|
| + const TypeArguments& type_arguments = T.TranslateTypeArguments(
|
| + kernel_type_arguments.raw_array(), kernel_type_arguments.length());
|
|
|
| AbstractType& type = AbstractType::Handle(
|
| Z, Type::New(klass, type_arguments, TokenPosition::kNoSource));
|
| @@ -6451,33 +6450,37 @@ RawObject* BuildParameterDescriptor(TreeNode* const kernel_node) {
|
| ConstantEvaluator constant_evaluator(/* flow_graph_builder = */ NULL, Z,
|
| &translation_helper, &type_translator);
|
|
|
| -
|
| - intptr_t param_count = function_node->positional_parameters().length() +
|
| - function_node->named_parameters().length();
|
| + const intptr_t positional_count =
|
| + function_node->positional_parameters().length();
|
| + const intptr_t param_count =
|
| + positional_count + function_node->named_parameters().length();
|
| const Array& param_descriptor = Array::Handle(
|
| Array::New(param_count * Parser::kParameterEntrySize, Heap::kOld));
|
| for (intptr_t i = 0; i < param_count; ++i) {
|
| + const intptr_t entry_start = i * Parser::kParameterEntrySize;
|
| +
|
| VariableDeclaration* variable;
|
| - if (i < function_node->positional_parameters().length()) {
|
| + if (i < positional_count) {
|
| variable = function_node->positional_parameters()[i];
|
| } else {
|
| - variable = function_node->named_parameters()[i];
|
| + variable = function_node->named_parameters()[i - positional_count];
|
| }
|
|
|
| param_descriptor.SetAt(
|
| - i + Parser::kParameterIsFinalOffset,
|
| + entry_start + Parser::kParameterIsFinalOffset,
|
| variable->IsFinal() ? Bool::True() : Bool::False());
|
|
|
| if (variable->initializer() != NULL) {
|
| param_descriptor.SetAt(
|
| - i + Parser::kParameterDefaultValueOffset,
|
| + entry_start + Parser::kParameterDefaultValueOffset,
|
| constant_evaluator.EvaluateExpression(variable->initializer()));
|
| } else {
|
| - param_descriptor.SetAt(i + Parser::kParameterDefaultValueOffset,
|
| - Object::null_instance());
|
| + param_descriptor.SetAt(
|
| + entry_start + Parser::kParameterDefaultValueOffset,
|
| + Object::null_instance());
|
| }
|
|
|
| - param_descriptor.SetAt(i + Parser::kParameterMetadataOffset,
|
| + param_descriptor.SetAt(entry_start + Parser::kParameterMetadataOffset,
|
| /* Issue(28434): Missing parameter metadata. */
|
| Object::null_instance());
|
| }
|
|
|