blob: eb14237c581011eaf44131fd3e5e12a1457d0676 [file] [log] [blame]
// 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();
}