// TODO(multitest): This was automatically migrated from a multitest and may
// contain strange or dead code.
// 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.
// This test verifies that for an unnamed async closure, the following three
// types are all appropriately matched:
// - The static return type
// - The return type of reified runtime type of a tearoff of the function or
// method
// - The reified type of the future returned by the function or method
//
// Specific attention is paid to the following conditions:
// - The static return type is determined by type inference
// - The static return type is `dynamic`
// - The function or method immediately returns a value or future with a
// different type (possibly using `=>` syntax)
import 'dart:async';
import 'package:expect/expect.dart';
class A {}
class B extends A {}
Future quick() async {}
Future futureA() => new Future.value(new A());
Future futureB() => new Future.value(new B());
void checkFutureObject(dynamic tearoff) {
Expect.isTrue(tearoff is Future