| // 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. | 
 |  | 
 | // @dart = 2.9 | 
 |  | 
 | import "package:expect/expect.dart"; | 
 |  | 
 | // Test various invalid syntax combinations. | 
 |  | 
 | // You cannot prefix "mixin" with anything. | 
 | abstract //# 01: compile-time error | 
 | static //# 02: compile-time error | 
 | const //# 03: compile-time error | 
 | mixin M0 {} | 
 |  | 
 | // Cannot use "extends". | 
 | mixin M1 // | 
 |   extends A //# 04: compile-time error | 
 | {} | 
 |  | 
 | // On-clause must be before implements clause. | 
 | mixin M2 | 
 |   implements B //# 05: compile-time error | 
 |   on A | 
 | {} | 
 |  | 
 | // Cannot use "on" on class declarations. | 
 | class C0 // | 
 |   on A //# 06: compile-time error | 
 | {} | 
 |  | 
 | // Type parameters must not be empty. | 
 | mixin M3 // | 
 |   <> //# 07: compile-time error | 
 | {} | 
 |  | 
 | // Super-class restrictions and implements must be well-formed. | 
 | mixin M4 on List | 
 |   <UndeclaredType> //# 08: compile-time error | 
 | {} | 
 | mixin M5 implements List | 
 |   <UndeclaredType> //# 09: compile-time error | 
 | {} | 
 |  | 
 | mixin M6 { | 
 |   // Mixins cannot have constructors (or members with same name as mixin). | 
 |   factory M6() {} //# 10: compile-time error | 
 |   M6() {} //# 11: compile-time error | 
 |   M6.foo(); //# 12: compile-time error | 
 |   get M6 => 42; //# 13: compile-time error | 
 | } | 
 |  | 
 | // Cannot declare local mixins. | 
 | class C { | 
 |   static mixin M {}; //# 14: compile-time error | 
 |   mixin M {} //# 15: compile-time error | 
 | } | 
 |  | 
 | // Just to have some types. | 
 | class A {} | 
 | class B {} | 
 |  | 
 | main() { | 
 |   new C(); | 
 | } |