blob: 9eb7549f1be46c73c04ba19c663a45bff68c176a [file] [log] [blame]
// Copyright (c) 2013, 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 test program for constructors and initializers.
// @dart = 2.9
// Check function subtyping of simple function types.
import 'package:expect/expect.dart';
typedef Args0();
typedef Args1(a);
typedef Args2(a, b);
typedef Args3(a, b, c);
typedef Args4(a, b, c, d);
args0_1([a]) {}
args1_2(a, [b]) {}
args0_2([a, b]) {}
args1_3(a, [b, c]) {}
args0_1_named({a}) {}
args1_2_named(a, {b}) {}
args0_2_named({a, b}) {}
args1_3_named(a, {b, c}) {}
main() {
Expect.isTrue(args0_1 is Args0);
Expect.isTrue(args0_1 is Args1);
Expect.isFalse(args0_1 is Args2);
Expect.isFalse(args0_1 is Args3);
Expect.isFalse(args0_1 is Args4);
Expect.isFalse(args1_2 is Args0);
Expect.isTrue(args1_2 is Args1);
Expect.isTrue(args1_2 is Args2);
Expect.isFalse(args1_2 is Args3);
Expect.isFalse(args1_2 is Args4);
Expect.isTrue(args0_2 is Args0);
Expect.isTrue(args0_2 is Args1);
Expect.isTrue(args0_2 is Args2);
Expect.isFalse(args0_2 is Args3);
Expect.isFalse(args0_2 is Args4);
Expect.isFalse(args1_3 is Args0);
Expect.isTrue(args1_3 is Args1);
Expect.isTrue(args1_3 is Args2);
Expect.isTrue(args1_3 is Args3);
Expect.isFalse(args1_3 is Args4);
Expect.isTrue(args0_1_named is Args0);
Expect.isFalse(args0_1_named is Args1);
Expect.isFalse(args0_1_named is Args2);
Expect.isFalse(args0_1_named is Args3);
Expect.isFalse(args0_1_named is Args4);
Expect.isFalse(args1_2_named is Args0);
Expect.isTrue(args1_2_named is Args1);
Expect.isFalse(args1_2_named is Args2);
Expect.isFalse(args1_2_named is Args3);
Expect.isFalse(args1_2_named is Args4);
Expect.isTrue(args0_2_named is Args0);
Expect.isFalse(args0_2_named is Args1);
Expect.isFalse(args0_2_named is Args2);
Expect.isFalse(args0_2_named is Args3);
Expect.isFalse(args0_2_named is Args4);
Expect.isFalse(args1_3_named is Args0);
Expect.isTrue(args1_3_named is Args1);
Expect.isFalse(args1_3_named is Args2);
Expect.isFalse(args1_3_named is Args3);
Expect.isFalse(args1_3_named is Args4);
}