| // Copyright (c) 2012, 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"; | |
| // Dart test program for testing default factories. | |
| abstract class Vehicle { | |
| factory Vehicle() = GoogleOne.Vehicle; | |
| // ^^^^^^^^^^^^^^^^^ | |
| // [analyzer] COMPILE_TIME_ERROR.REDIRECT_TO_INVALID_RETURN_TYPE | |
| // [cfe] The constructor function type 'GoogleOne Function()' isn't a subtype of 'Vehicle Function()'. | |
| } | |
| class Bike implements Vehicle, GoogleOne { | |
| Bike.redOne() {} | |
| } | |
| abstract class SpaceShip { | |
| factory SpaceShip() = GoogleOne; | |
| } | |
| class GoogleOne implements SpaceShip { | |
| GoogleOne.internal_() {} | |
| factory GoogleOne() { | |
| return new GoogleOne.internal_(); | |
| } | |
| factory GoogleOne.Vehicle() { | |
| return new Bike.redOne(); | |
| } | |
| } | |
| main() { | |
| Expect.equals(true, (new Bike.redOne()) is Bike); | |
| Expect.equals(true, (new SpaceShip()) is GoogleOne); | |
| var ensureItsCalled = new Vehicle(); | |
| } |