Index: tests/language_strong/mixin_factory_constructor_test.dart |
diff --git a/tests/language_strong/mixin_factory_constructor_test.dart b/tests/language_strong/mixin_factory_constructor_test.dart |
new file mode 100644 |
index 0000000000000000000000000000000000000000..ac0e22762d52ef281d4e0a5c3d60b25161fd370f |
--- /dev/null |
+++ b/tests/language_strong/mixin_factory_constructor_test.dart |
@@ -0,0 +1,28 @@ |
+// Copyright (c) 2017, 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 Base { |
+ var y; |
+ Base._() { |
+ y = "world"; |
+ } |
+} |
+ |
+abstract class Mixin implements Base { |
+ final x = "hello"; |
+ factory Mixin() => new _MixinAndBase._(); |
+} |
+ |
+// TODO(jmesserly): according to the spec, this does not appear to be a valid |
+// mixin (because it declares a constructor), however it is supported by Dart |
+// implementations. |
+class _MixinAndBase = Base with Mixin; |
+ |
+void main() { |
+ var val = new Mixin(); |
+ Expect.equals(val.x, "hello"); |
+ Expect.equals(val.y, "world"); |
+} |