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

// @dart = 2.9

// Fuzzy arrows will be eliminated from Dart 2.0 soon.  This test checks that
// implementations have properly removed fuzzy arrow support, both at compile
// time and at run time.  See dartbug.com/29630 for a detailed explanation.

import "package:expect/expect.dart";

typedef DynamicToDynamic(x);
typedef NullToDynamic(Null x);

num numToNum(num x) => null;

main() {
  DynamicToDynamic x = numToNum; //# 01: compile-time error
  NullToDynamic x = numToNum; //# 02: ok
  Expect.isFalse(numToNum is DynamicToDynamic); //# 03: ok
  Expect.isTrue(numToNum is NullToDynamic); //# 04: ok
}
