blob: 884fffdc5b6ab714e37d0f1858cfe80d3eeb77f9 [file] [log] [blame]
// 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
/// @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<T> with M<T, dynamic> {
T? c;
}
main() {
C c = new C();
c.m1 = 1;
Expect.equals(1, c.m1);
}