Files
sdk/tests/language_2/vm/regress_33025_test.dart
T
Vyacheslav Egorov f35bb0379d [vm/kernel] Initialize function type args even when resuming from yield.
Previously the graph was constructed in such a way that
:function_type_arguments_var was only initialized when we call the
function with yield points for the first time. Which meant that on
resumption we would the type arguments.

Alternative to this fix would be to capture :function_type_arguments_var
but that does not make sense: yield points only occur inside
non-generic functions at the moment, which means that :function_type_arguments_var
is cheaper then capturing it as it is just a load of a field
from the closure object.

Fixes https://github.com/dart-lang/sdk/issues/33025

Bug: 33025
Change-Id: I0543b64202511a6c48744d462e384cf8a79e903e
Reviewed-on: https://dart-review.googlesource.com/53664
Commit-Queue: Vyacheslav Egorov <vegorov@google.com>
Reviewed-by: Martin Kustermann <kustermann@google.com>
2018-05-04 11:11:05 +00:00

19 lines
471 B
Dart

// Copyright (c) 2018, the Dart project authors. Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.
// Verify that VM correctly handles function type arguments across
// yield points.
import "package:expect/expect.dart";
void main() {
doStuff<String>();
}
doStuff<T>() async {
Expect.equals(String, T);
await null;
Expect.equals(String, T);
}