// Copyright (c) 2016, 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.

/**
 * @assertion
 * classDefinition:
 *   metadata abstract? class mixinApplicationClass
 * ;
 * mixinClassApplication:
 *   identifer typeParameters? `=' mixinApplication `;'
 *
 * mixinApplication:
 *   type mixins interfaces?
 * ;
 *
 * A mixin application of the form S with M; defines a class C with superclass
 * S.
 * A mixin application of the form S with M1,...,Mk; defines a class C whose
 * superclass is the application of the mixin composition Mk−1∗...∗M1 to S.
 * In both cases above, C declares the same instance members as M (respectively,
 * Mk).
 * @description Test that mixin may have type parameters. Class C doesn't
 * specify any type parameters
 * @author sgrekhov@unipro.ru
 */
import '../../../Utils/expect.dart';

class S<T> {
  T? s;
}

class M<T1, T2> {
  T1? m1;
  T2? m2;
}

class C<T> extends S with M {
  T? c;
}

main() {
  C c = new C();
  c.m1 = 1;
  Expect.equals(1, c.m1);

  c.m2 = "1";
  Expect.equals("1", c.m2);

  c.s = -1;
  Expect.equals(-1, c.s);

  c.c = "-1";
  Expect.equals("-1", c.c);
}
