mirror of
https://github.com/dart-lang/sdk
synced 2024-09-20 02:50:20 +00:00
67a93da99e
When referring to constants via a deferred prefix in an await expression the transformation must make sure that the generated code before and after the deferred load agree on the number of captured variables. (i.e. the number of await-temp variables introduced by the await-transformer is the same) This CL uses a temporary in the case of compile-time constants, because before the deferred load, a reference lib.C is translated into a static getter which also requires a temporary. Fixes #28678 R=hausner@google.com Review-Url: https://codereview.chromium.org/2683973002 .
29 lines
685 B
Dart
29 lines
685 B
Dart
// Copyright (c) 2017, 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.
|
|
|
|
// Test that await after deferred loading works as expected.
|
|
|
|
import 'dart:async';
|
|
import "package:expect/expect.dart";
|
|
import 'deferred_regression_28678_lib.dart' deferred as lib;
|
|
|
|
class A {
|
|
m() => "here";
|
|
}
|
|
|
|
f(a, b) => new Future.microtask(() {});
|
|
|
|
class R {
|
|
Future test_deferred() async {
|
|
var a = new A();
|
|
await lib.loadLibrary();
|
|
await f(lib.Clazz, lib.v);
|
|
Expect.equals("here", a.m());
|
|
}
|
|
}
|
|
|
|
main() async {
|
|
await new R().test_deferred();
|
|
}
|