| Index: tests/language/null_is_bottom_type_test.dart
|
| diff --git a/tests/language/null_is_bottom_type_test.dart b/tests/language/null_is_bottom_type_test.dart
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..b12137efebd70f9b90f16bafc3f7ddaae6853824
|
| --- /dev/null
|
| +++ b/tests/language/null_is_bottom_type_test.dart
|
| @@ -0,0 +1,60 @@
|
| +// Copyright (c) 2016, 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.
|
| +
|
| +// Test that Null is a subtype of any other type.
|
| +
|
| +import 'package:expect/expect.dart';
|
| +
|
| +class A {}
|
| +typedef A ReturnA();
|
| +typedef TakeA(A a);
|
| +typedef Null ReturnNull();
|
| +typedef TakeNull(Null n);
|
| +
|
| +testA(A a) {}
|
| +testListA(List<A> list) {}
|
| +testNull(Null n) {}
|
| +testListNull(List<Null> list) {}
|
| +testReturnA(ReturnA f) {}
|
| +testReturnNull(ReturnNull f) {}
|
| +testTakeA(TakeA f) {}
|
| +testTakeNull(TakeNull f) {}
|
| +
|
| +Null returnNull() => null;
|
| +takeNull(Null n) {}
|
| +A returnA() => null;
|
| +takeA(A a) {}
|
| +
|
| +main() {
|
| + if (false) test(); // Perform static checks only.
|
| +}
|
| +
|
| +test() {
|
| + Null n;
|
| + List<Null> listNull;
|
| + A a = new A();
|
| + List<A> listA;
|
| +
|
| + testA(n); /// 01: ok
|
| + testA(a); /// 02: ok
|
| + testListA(listNull); /// 03: ok
|
| + testListA(listA); /// 04: ok
|
| +
|
| + testNull(n); /// 05: ok
|
| + testNull(a); /// 06: ok
|
| + testListNull(listNull); /// 07: ok
|
| + testListNull(listA); /// 08: ok
|
| +
|
| + testReturnA(returnA); /// 09: ok
|
| + testReturnA(returnNull); /// 10: ok
|
| +
|
| + testReturnNull(returnA); /// 11: ok
|
| + testReturnNull(returnNull); /// 12: ok
|
| +
|
| + testTakeA(takeA); /// 13: ok
|
| + testTakeA(takeNull); /// 14: ok
|
| +
|
| + testTakeNull(takeA); /// 15: ok
|
| + testTakeNull(takeNull); /// 16: ok
|
| +}
|
|
|