// 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';

test() {
  Future<int> f;
  Future<List<int>> b = /*info:ASSIGNMENT_CAST should be pass*/ f
      . /*@ typeArgs=List<dynamic>* */ /*@target=Future::then*/ then(
          /*@ returnType=List<dynamic>* */ (/*@ type=int* */ x) => /*@ typeArgs=dynamic */ [])
      . /*@target=Future::whenComplete*/ whenComplete(
          /*@ returnType=Null* */ () {});
  b = f. /*@ typeArgs=List<int*>* */ /*@target=Future::then*/ then(
      /*@ returnType=List<int*>* */ (/*@ type=int* */ x) => /*@ typeArgs=int* */ []);
}

main() {}
