| // Copyright (c) 2011, 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. |
| // VMOptions=--enable_type_checks |
| |
| // Dart test for function type alias with optional parameters. |
| import "package:expect/expect.dart"; |
| |
| typedef int f1<T>([int? a, int? b, T? c]); |
| typedef int f2<T>([int? a, int? b, T? d]); |
| typedef int f3<T>({int? a, int? b, T? c}); |
| typedef int f4<T>({int? a, int? b, T? d}); |
| |
| class A<T> { |
| int baz([int? a, int? b, T? c]) => -1; |
| int bar({int? a, int? b, T? c}) => -1; |
| } |
| |
| int baz([int? a, int? b, int? c]) => -1; |
| |
| int bar({int? a, int? b, int? c}) => -1; |
| |
| main() { |
| Expect.isFalse(baz is f1); |
| Expect.isFalse(baz is f3); |
| Expect.isFalse(bar is f1); |
| Expect.isFalse(bar is f3); |
| Expect.isFalse(baz is f1); |
| Expect.isTrue(baz is f1<int>); |
| Expect.isTrue(bar is f3<int>); |
| Expect.isFalse(baz is f1<double>); |
| Expect.isFalse(bar is f3<double>); |
| Expect.isFalse(baz is f2); |
| Expect.isFalse(bar is f4); |
| Expect.isTrue(baz is f2<int>); |
| Expect.isFalse(bar is f2<int>); |
| |
| A<int> a = new A<int>(); |
| Expect.isTrue(a.baz is f1); |
| Expect.isFalse(a.baz is f3); |
| Expect.isFalse(a.bar is f1); |
| Expect.isTrue(a.bar is f3); |
| Expect.isTrue(a.baz is f1); |
| Expect.isTrue(a.baz is f1<Object>); |
| Expect.isTrue(a.bar is f3<Object>); |
| Expect.isTrue(a.baz is f1<int>); |
| Expect.isTrue(a.bar is f3<int>); |
| Expect.isTrue(a.baz is f1<double>); |
| Expect.isTrue(a.bar is f3<double>); |
| Expect.isTrue(a.baz is f2); |
| Expect.isFalse(a.bar is f4); |
| Expect.isTrue(a.baz is f2<Object>); |
| Expect.isFalse(a.bar is f2<Object>); |
| } |