| /* |
| * 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 file. |
| */ |
| /** |
| * @assertion A mixin declaration syntax separate from class declarations: |
| * mixinDeclaration : |
| * metadata? 'mixin' identifier typeParameters? ('on' types)? |
| * ('implements' types)? '{' mixinMember* '}' |
| * |
| * @description Checks that mixin declaration above is correct. Metadata usage |
| * is checked |
| * @author ngl@unipro.ru |
| */ |
| |
| class I {} |
| class J {} |
| |
| class B {} |
| class C {} |
| |
| const IM = 1; |
| |
| class AM { |
| const AM(); |
| } |
| class BM<X> { |
| const BM(); |
| const BM.b(X x); |
| const BM.c(int i, X x); |
| } |
| enum EM {a, b, c} |
| const _bc = const BM<double>.c(1, 2.3); |
| const _bb = const BM<String>.b('abc'); |
| const _ba = const BM<AM>.b(const AM()); |
| |
| @IM @AM() @_bc @EM.a |
| mixin M1 on B, C implements I, J {} |
| |
| @BM() @EM.b |
| mixin M2 on B, C implements I, J {} |
| |
| @_bb @EM.c |
| mixin M3 on B, C implements I, J {} |
| |
| @_ba |
| mixin M4 on B, C implements I, J {} |
| |
| main() { |
| } |