| // Copyright (c) 2015, 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. |
| |
| import 'package:expect/expect.dart'; |
| |
| class K implements L { |
| final field1; |
| final field2; |
| const K({this.field1: 42, this.field2: true}); |
| } |
| |
| class L { |
| const factory L() = K; |
| const factory L.named1({field1, field2}) = K; |
| const factory L.named2({field2, field1}) = K; |
| } |
| |
| const K l1 = const L() as K; |
| |
| const K l2a = const L.named1() as K; |
| const K l2b = const L.named1(field1: 87) as K; |
| const K l2c = const L.named1(field2: false) as K; |
| const K l2d = const L.named1(field1: 87, field2: false) as K; |
| const K l2e = const L.named1(field2: false, field1: 87) as K; |
| |
| const K l3a = const L.named2() as K; |
| const K l3b = const L.named2(field1: 87) as K; |
| const K l3c = const L.named2(field2: false) as K; |
| const K l3d = const L.named2(field1: 87, field2: false) as K; |
| const K l3e = const L.named2(field2: false, field1: 87) as K; |
| |
| main() { |
| Expect.equals(42, l1.field1); |
| Expect.equals(true, l1.field2); |
| |
| Expect.equals(42, l2a.field1); |
| Expect.equals(true, l2a.field2); |
| Expect.equals(87, l2b.field1); |
| Expect.equals(true, l2b.field2); |
| Expect.equals(42, l2c.field1); |
| Expect.equals(false, l2c.field2); |
| Expect.equals(87, l2d.field1); |
| Expect.equals(false, l2d.field2); |
| Expect.equals(87, l2e.field1); |
| Expect.equals(false, l2e.field2); |
| |
| Expect.equals(42, l3a.field1); |
| Expect.equals(true, l3a.field2); |
| Expect.equals(87, l3b.field1); |
| Expect.equals(true, l3b.field2); |
| Expect.equals(42, l3c.field1); |
| Expect.equals(false, l3c.field2); |
| Expect.equals(87, l3d.field1); |
| Expect.equals(false, l3d.field2); |
| Expect.equals(87, l3e.field1); |
| Expect.equals(false, l3e.field2); |
| } |