# Copyright (c) 2018, 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.md file.

# Compile. Use mixins.

type: basic
entry: a.dart
invalidate:
  - a.dart
sources:
  a.dart: |
    // @dart=2.9
    import 'b.dart';
    class A extends Object with B<C>, D {}
  b.dart: |
    // @dart=2.9
    mixin B<ChildType extends Object> {
      ChildType get child => null;
      set child(ChildType value) {}
    }

    class C {}

    mixin D<T extends Object> on B<T> {}
