diff --git a/tests/language/regress/regress46867_test.dart b/tests/language/regress/regress46867_test.dart new file mode 100644 index 00000000000..7999cc849a6 --- /dev/null +++ b/tests/language/regress/regress46867_test.dart @@ -0,0 +1,32 @@ +// Copyright (c) 2021, 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. + +// Regression test for https://github.com/dart-lang/sdk/issues/46867 + +import 'package:expect/expect.dart'; + +class Interface { + covariant Object x = 'from Interface'; +} + +mixin Mixin implements Interface {} + +class BaseClass { + static var getterCallCount = 0; + static var setterCallCount = 0; + Object get x => getterCallCount++; + set x(Object value) => setterCallCount++; +} + +class SubClass extends BaseClass with Mixin {} + +void main() { + Expect.equals(0, BaseClass.getterCallCount); + SubClass().x; + Expect.equals(1, BaseClass.getterCallCount); + + Expect.equals(0, BaseClass.setterCallCount); + SubClass().x = 42; + Expect.equals(1, BaseClass.setterCallCount); +} diff --git a/tests/language_2/regress/regress46867_test.dart b/tests/language_2/regress/regress46867_test.dart new file mode 100644 index 00000000000..750b2234243 --- /dev/null +++ b/tests/language_2/regress/regress46867_test.dart @@ -0,0 +1,34 @@ +// Copyright (c) 2021, 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. + +// @dart = 2.9 + +// Regression test for https://github.com/dart-lang/sdk/issues/46867 + +import 'package:expect/expect.dart'; + +class Interface { + covariant Object x = 'from Interface'; +} + +mixin Mixin implements Interface {} + +class BaseClass { + static var getterCallCount = 0; + static var setterCallCount = 0; + Object get x => getterCallCount++; + set x(Object value) => setterCallCount++; +} + +class SubClass extends BaseClass with Mixin {} + +void main() { + Expect.equals(0, BaseClass.getterCallCount); + SubClass().x; + Expect.equals(1, BaseClass.getterCallCount); + + Expect.equals(0, BaseClass.setterCallCount); + SubClass().x = 42; + Expect.equals(1, BaseClass.setterCallCount); +}