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

// This test checks for compile-time errors in cases when either Never or T? is
// extended, implemented, or mixed in, where T is a type.

class Aoo {}

class Boo {}

class Coo extends Boo with Aoo? {}

class Doo extends Aoo? {}

class Eoo implements Boo? {}

class Foo extends Boo? with Aoo {}

class Goo = Boo? with Aoo?;

class Hoo extends Object with Aoo implements Boo? {}

class Ioo = Object with Aoo implements Boo?;

class Joo extends Boo with Never {}

class Koo extends Never {}

class Loo implements Never {}

mixin Moo1 on Aoo? implements Boo? {}

mixin Moo2 on Aoo?, Boo? {}

mixin Moo3 implements Aoo?, Boo? {}

mixin Moo4 on Aoo implements Never {}

mixin Moo5 on Aoo, Never {}

mixin Moo6 on Never {}

mixin Moo7 implements Aoo, Never {}

mixin Moo8 implements Never {}

class Noo = Never with Aoo;
class NooDynamic = dynamic with Aoo;
class NooVoid = void with Aoo;

class Ooo = Aoo with Never;

main() {}
