blob: 86fdab10cb51e27575639a513b89134db5fe5ef2 [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.
import 'package:expect/expect.dart';
typedef t__();
typedef void t_void_();
typedef void t_void_2();
typedef int t_int_();
typedef int t_int_2();
typedef Object t_Object_();
typedef double t_double_();
typedef void t_void__int(int i);
typedef int t_int__int(int i);
typedef int t_int__int2(int i);
typedef int t_int__Object(Object o);
typedef Object t_Object__int(int i);
typedef int t_int__double(double d);
typedef int t_int__int_int(int i1, int i2);
typedef void t_inline_void_(void f());
typedef void t_inline_void__int(void f(int i));
void _() => null;
void void_() {}
void void_2() {}
int int_() => 0;
int int_2() => 0;
Object Object_() => null;
double double_() => 0.0;
void void__int(int i) {}
int int__int(int i) => 0;
int int__int2(int i) => 0;
int int__Object(Object o) => 0;
Object Object__int(int i) => null;
int int__double(double d) => 0;
int int__int_int(int i1, int i2) => 0;
void inline_void_(void f()) {}
void inline_void__int(void f(int i)) {}
main() {
// () -> int <: Function
Expect.isTrue(int_ is Function);
// () -> dynamic <: () -> dynamic
Expect.isTrue(_ is t__);
// () -> dynamic <: () -> void
Expect.isTrue(_ is t_void_);
// () -> void <: () -> dynamic
Expect.isTrue(void_ is t__);
// () -> int <: () -> void
Expect.isTrue(int_ is t_void_);
// () -> void <: () -> int
Expect.isFalse(void_ is t_int_);
// () -> void <: () -> void
Expect.isTrue(void_ is t_void_2);
// () -> int <: () -> int
Expect.isTrue(int_ is t_int_2);
// () -> int <: () -> Object
Expect.isTrue(int_ is t_Object_);
// () -> int <: () -> double
Expect.isFalse(int_ is t_double_);
// () -> int <: (int) -> void
Expect.isFalse(int_ is t_void__int);
// () -> void <: (int) -> int
Expect.isFalse(void_ is t_int__int);
// () -> void <: (int) -> void
Expect.isFalse(void_ is t_void__int);
// (int) -> int <: (int) -> int
Expect.isTrue(int__int is t_int__int2);
// (Object) -> int <: (int) -> Object
Expect.isTrue(int__Object is t_Object__int);
// (int) -> int <: (double) -> int
Expect.isFalse(int__int is t_int__double);
// () -> int <: (int) -> int
Expect.isFalse(int_ is t_int__int);
// (int) -> int <: (int,int) -> int
Expect.isFalse(int__int is t_int__int_int);
// (int,int) -> int <: (int) -> int
Expect.isFalse(int__int_int is t_int__int);
// (()->void) -> void <: ((int)->void) -> void
Expect.isFalse(inline_void_ is t_inline_void__int);
// ((int)->void) -> void <: (()->void) -> void
Expect.isFalse(inline_void__int is t_inline_void_);
}