Chromium Code Reviews| Index: tests/lib/async/future_or_bad_type_test.dart |
| diff --git a/tests/lib/async/future_or_bad_type_test.dart b/tests/lib/async/future_or_bad_type_test.dart |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..6b11be0b62a111889ef06259db30c2871a2d5952 |
| --- /dev/null |
| +++ b/tests/lib/async/future_or_bad_type_test.dart |
| @@ -0,0 +1,28 @@ |
| +// 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. |
| + |
| +// In non strong-mode, `FutureOr<T>` is dynamic, even if `T` doesn't exist. |
| +// `FutureOr<T>` can not be used as superclass, mixin, nor can it be |
| +// implemented (as interface). |
| + |
| +import 'dart:async'; |
| +import 'package:expect/expect.dart'; |
| + |
| +class A |
| + extends FutureOr<String> /// extends: compile-time error |
| + with FutureOr<bool> /// with: compile-time error |
|
Lasse Reichstein Nielsen
2016/12/08 18:20:28
You need "extends Object with FutureOr<bool>". The
floitsch
2016/12/08 18:41:55
Done.
|
| + implements FutureOr<int> /// implements: compile-time error |
| +{ |
| +} |
| + |
| +main() { |
| + Expect.isTrue(499 is FutureOr<A>); /// 00: static type warning |
| + Expect.isTrue(499 is FutureOr<Does<Not<Exist>>>); /// 01: static type warning |
|
Lasse Reichstein Nielsen
2016/12/08 18:20:28
Hmm. What is this intended to do, and why?
The "D
floitsch
2016/12/08 18:41:55
Added a comment.
// FutureOr<T> should be treate
|
| + |
| + Expect.isTrue(499 is FutureOr<A>); /// 00: static type warning |
| + Expect.isTrue(499 is FutureOr<Does<Not<Exist>>>); /// 01: static type warning |
| + |
| + var a = new A(); |
| + Expect.isTrue(a.toString() is String); |
| +} |