// Copyright (c) 2014, 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.

// @dart = 2.9

import 'dart:async';

import 'package:expect/expect.dart';

// Note, this is a regression test for:
// https://github.com/dart-lang/sdk/issues/29252
class Foo {
  Future _x;
  int z;
  List list = [];

  Future foo() async {
    _x ??= new Future(() async {
      z = await new Future.value(42);
      list = list.toList()..add(z);
    });
    await _x;
    return list[0];
  }
}

main() async {
  var f = new Foo();
  var result = await f.foo();
  Expect.equals(42, result);
}
