// 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.

/*@testedFeatures=inference*/
library test;

import 'dart:async';

main() async {
  var /*@ type=Future<B*>* */ b = new Future<B>.value(new B());
  var /*@ type=Future<C*>* */ c = new Future<C>.value(new C());
  var /*@ type=List<Future<A*>*>* */ lll = /*@ typeArgs=Future<A*>* */ [b, c];
  var /*@ type=List<A*>* */ result = await Future. /*@ typeArgs=A* */ wait(lll);
  var /*@ type=List<A*>* */ result2 = await Future. /*@ typeArgs=A* */ wait(
      /*@ typeArgs=Future<A*>* */ [b, c]);
  List<A> list = result;
  list = result2;
}

class A {}

class B extends A {}

class C extends A {}
