// 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> base;
  var /*@type=Future<bool>*/ f =
      base. /*@typeArgs=bool*/ /*@target=Future::then*/ then(
          /*@returnType=bool*/ (/*@type=int*/ x) {
    return x /*@target=num::==*/ == 0;
  });
  var /*@type=Future<bool>*/ g =
      base. /*@typeArgs=bool*/ /*@target=Future::then*/ then(
          /*@returnType=bool*/ (/*@type=int*/ x) => x /*@target=num::==*/ == 0);
  Future<bool> b = f;
  b = g;
}

main() {}
