// Copyright (c) 2011, 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.

/// @assertion A function value, or an instance of a class with a "call" method, 
/// is a subtype of a function type, and as such, a subtype of Function.
/// @description Checks that function values are indeed subtypes of the
/// [Function] class.
/// @author rodionov

import "../../../Utils/expect.dart";

int foo(String s) {
  return 21;
}

int foo1() => 1;

main() {
  Expect.isTrue(foo is Function);
  Expect.isTrue(foo1 is Function);
  Expect.isTrue((int, double) { return 1; } is Function);
  Expect.isTrue((()  => 1) is Function);
}
