diff --git a/pkg/native_compiler/lib/snapshot/snapshot.dart b/pkg/native_compiler/lib/snapshot/snapshot.dart index 9d0eb9fcea8..53ea6bee246 100644 --- a/pkg/native_compiler/lib/snapshot/snapshot.dart +++ b/pkg/native_compiler/lib/snapshot/snapshot.dart @@ -428,8 +428,9 @@ class WrapperConstant extends ast.AuxiliaryConstant { void visitChildren(ast.Visitor v) => throw 'Should not be called.'; @override - void toTextInternal(ast_printer.AstPrinter printer) => - throw 'Should not be called.'; + void toTextInternal(ast_printer.AstPrinter printer) { + printer.write('WrapperConstant(${unwrap})'); + } @override ast.DartType getType(ast_type_environment.StaticTypeContext context) => diff --git a/runtime/vm/module_snapshot.cc b/runtime/vm/module_snapshot.cc index fead63041a3..2ceafd97faa 100644 --- a/runtime/vm/module_snapshot.cc +++ b/runtime/vm/module_snapshot.cc @@ -1057,12 +1057,14 @@ class FunctionTypeDeserializationCluster : public DeserializationCluster { const intptr_t num_fixed_params = type.num_fixed_parameters(); type.set_num_implicit_parameters(1); // Implicit closure parameter. if (num_named_params != 0) { - type.SetNumOptionalParameters(num_params - num_named_params, + ASSERT(num_params - num_named_params == num_fixed_params); + type.SetNumOptionalParameters(num_named_params, /* are_optional_positional=*/false); } else if (num_fixed_params != num_params) { type.SetNumOptionalParameters(num_params - num_fixed_params, /* are_optional_positional=*/true); } + ASSERT(type.NumParameters() == num_params); type.SetIsFinalized(); } }