// 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

// Signature conformance test.
abstract class CII {
  int id(int x);
}

class CSI {
  String id(int x) => "$x";
}

class CIS {
  int id(String x) => 0;
}

class CTT<T> {
  T id(T x) => x;
}

// Wrong return type.
abstract class C1 = CII with CIS;
//             ^
// [cfe] The mixin application class 'C1' introduces an erroneous override of 'id'.
//                           ^^^
// [analyzer] COMPILE_TIME_ERROR.INVALID_OVERRIDE
abstract class C2 extends CII with CIS {}
//             ^
// [cfe] Applying the mixin 'CIS' to 'CII' introduces an erroneous override of 'id'.
//                                 ^^^
// [analyzer] COMPILE_TIME_ERROR.INVALID_OVERRIDE


// Wrong argument type.
abstract class C3 = CII with CSI;
//             ^
// [cfe] The mixin application class 'C3' introduces an erroneous override of 'id'.
//                           ^^^
// [analyzer] COMPILE_TIME_ERROR.INVALID_OVERRIDE
abstract class C4 extends CII with CSI {}
//             ^
// [cfe] Applying the mixin 'CSI' to 'CII' introduces an erroneous override of 'id'.
//                                 ^^^
// [analyzer] COMPILE_TIME_ERROR.INVALID_OVERRIDE

// Similar as the above but using an instantiated class instead.
abstract class C5 = CII with CTT<int>;
abstract class C6 extends CII with CTT<int> {}
abstract class C7  = CII with CTT<String>;
//             ^
// [cfe] The mixin application class 'C7' introduces an erroneous override of 'id'.
//                            ^^^^^^^^^^^
// [analyzer] COMPILE_TIME_ERROR.INVALID_OVERRIDE
abstract class C8 extends CII with CTT<String> {}
//             ^
// [cfe] Applying the mixin 'CTT' to 'CII' introduces an erroneous override of 'id'.
//                                 ^^^^^^^^^^^
// [analyzer] COMPILE_TIME_ERROR.INVALID_OVERRIDE

// Named parameters
abstract class NIIx {
  int id({int x}) => x;
}

class NIIxy {
  int id({int x, int y}) => y;
}

class NIIy {
  int id({int y}) => y;
}

class NII {
  int id(int x) => x;
}

// It's OK to introduce more named parameters.
abstract class N1 = NIIx with NIIxy;
abstract class N2 extends NIIx with NIIxy {}
// It's NOT OK to rename named parameters.
abstract class N3 = NIIx with NIIy;
//             ^
// [cfe] The mixin application class 'N3' introduces an erroneous override of 'id'.
//                            ^^^^
// [analyzer] COMPILE_TIME_ERROR.INVALID_OVERRIDE
abstract class N4 extends NIIx with NIIy {}
//             ^
// [cfe] Applying the mixin 'NIIy' to 'NIIx' introduces an erroneous override of 'id'.
//                                  ^^^^
// [analyzer] COMPILE_TIME_ERROR.INVALID_OVERRIDE


// It's NOT OK to drop named parameters.
abstract class N5 = NIIx with NII;
//             ^
// [cfe] The mixin application class 'N5' introduces an erroneous override of 'id'.
//                            ^^^
// [analyzer] COMPILE_TIME_ERROR.INVALID_OVERRIDE
abstract class N6 extends NIIx with NII {}
//             ^
// [cfe] Applying the mixin 'NII' to 'NIIx' introduces an erroneous override of 'id'.
//                                  ^^^
// [analyzer] COMPILE_TIME_ERROR.INVALID_OVERRIDE

class NBABxy<A, B> {
  B id ({A x, B y}) => y;
}

class NTTy<T> {
  T id({T y}) => y;
}

class NTTx<T> {
  T id(T x) => x;
}

// Same as above but with generic classes.
abstract class N7 = NIIx with NBABxy<int, int>;
abstract class N8 extends NIIx with NBABxy<int, int> {}
abstract class N9 = NIIx with NBABxy<String, int>;
//             ^
// [cfe] The mixin application class 'N9' introduces an erroneous override of 'id'.
//                            ^^^^^^^^^^^^^^^^^^^
// [analyzer] COMPILE_TIME_ERROR.INVALID_OVERRIDE
abstract class N10 extends NIIx with NBABxy<String, int> {}
//             ^
// [cfe] Applying the mixin 'NBABxy' to 'NIIx' introduces an erroneous override of 'id'.
//                                   ^^^^^^^^^^^^^^^^^^^
// [analyzer] COMPILE_TIME_ERROR.INVALID_OVERRIDE
abstract class N11 = NIIx with NTTy<int>;
//             ^
// [cfe] The mixin application class 'N11' introduces an erroneous override of 'id'.
//                             ^^^^^^^^^
// [analyzer] COMPILE_TIME_ERROR.INVALID_OVERRIDE
abstract class N12 extends NIIx with NTTy<int> {}
//             ^
// [cfe] Applying the mixin 'NTTy' to 'NIIx' introduces an erroneous override of 'id'.
//                                   ^^^^^^^^^
// [analyzer] COMPILE_TIME_ERROR.INVALID_OVERRIDE
abstract class N13 = NIIx with NTTx<int>;
//             ^
// [cfe] The mixin application class 'N13' introduces an erroneous override of 'id'.
//                             ^^^^^^^^^
// [analyzer] COMPILE_TIME_ERROR.INVALID_OVERRIDE
abstract class N14 extends NIIx with NTTx<int> {}
//             ^
// [cfe] Applying the mixin 'NTTx' to 'NIIx' introduces an erroneous override of 'id'.
//                                   ^^^^^^^^^
// [analyzer] COMPILE_TIME_ERROR.INVALID_OVERRIDE

// Optional positional parameters
abstract class OII {
  int id([int x]) => x;
}

class OIII {
  int id([int x, int y]) => y;
}

class OIIy {
  int id([int y]) => y;
}

class PII {
  int id(int x) => x;
}

// It's OK to introduce more optional parameters.
abstract class O1 = OII with OIII;
abstract class O2 extends OII with OIII {}
// It's OK to rename optional parameters.
abstract class O3 = OII with OIIy;
abstract class O4 extends OII with OIIy {}
// It's NOT OK to drop optional parameters.
abstract class O5 = OII with PII;
//             ^
// [cfe] The mixin application class 'O5' introduces an erroneous override of 'id'.
//                           ^^^
// [analyzer] COMPILE_TIME_ERROR.INVALID_OVERRIDE
abstract class O6 extends OII with PII {}
//             ^
// [cfe] Applying the mixin 'PII' to 'OII' introduces an erroneous override of 'id'.
//                                 ^^^
// [analyzer] COMPILE_TIME_ERROR.INVALID_OVERRIDE

class OBAB<A, B> {
  B id ([A x, B y]) => y;
}

class OTTy<T> {
  T id([T y]) => y;
}

class PTT<T> {
  T id(T x) => x;
}

// Same as above but with generic classes.
abstract class O7 = OII with OBAB<int, int>;
abstract class O8 extends OII with OBAB<int, int> {}
abstract class O9 = OII with OBAB<String, int>;
//             ^
// [cfe] The mixin application class 'O9' introduces an erroneous override of 'id'.
//                           ^^^^^^^^^^^^^^^^^
// [analyzer] COMPILE_TIME_ERROR.INVALID_OVERRIDE
abstract class O10 extends OII with OBAB<String, int> {}
//             ^
// [cfe] Applying the mixin 'OBAB' to 'OII' introduces an erroneous override of 'id'.
//                                  ^^^^^^^^^^^^^^^^^
// [analyzer] COMPILE_TIME_ERROR.INVALID_OVERRIDE
abstract class O11 = OII with OTTy<int>;
abstract class O12 extends OII with OTTy<int> {}
abstract class O13 = OII with PTT<int>;
//             ^
// [cfe] The mixin application class 'O13' introduces an erroneous override of 'id'.
//                            ^^^^^^^^
// [analyzer] COMPILE_TIME_ERROR.INVALID_OVERRIDE
abstract class O14 extends OII with PTT<int> {}
//             ^
// [cfe] Applying the mixin 'PTT' to 'OII' introduces an erroneous override of 'id'.
//                                  ^^^^^^^^
// [analyzer] COMPILE_TIME_ERROR.INVALID_OVERRIDE

// More tests with generic classes.
abstract class GTTnum {
  T id<T extends num>(x);
}

class MTTnum {
  T id<T extends num>(x) => x;
}

class MTTint {
  T id<T extends int>(x) => x;
}

class MTT {
  T id<T>(x) => x;
}

class MTTnumR {
  T id<T extends num, R>(x) => x;
}
class G1 = GTTnum with MTTnum;
class G2 = GTTnum with MTTint;
//    ^
// [cfe] The mixin application class 'G2' introduces an erroneous override of 'id'.
//                     ^^^^^^
// [analyzer] COMPILE_TIME_ERROR.INVALID_OVERRIDE
class G3 = GTTnum with MTT;
//    ^
// [cfe] The mixin application class 'G3' introduces an erroneous override of 'id'.
//                     ^^^
// [analyzer] COMPILE_TIME_ERROR.INVALID_OVERRIDE
class G4 = GTTnum with MTTnumR;
//    ^
// [cfe] The mixin application class 'G4' introduces an erroneous override of 'id'.
//                     ^^^^^^^
// [analyzer] COMPILE_TIME_ERROR.INVALID_OVERRIDE
class G5 = GTTnum with CII;
//    ^^
// [analyzer] COMPILE_TIME_ERROR.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER
// [cfe] The mixin application class 'G5' introduces an erroneous override of 'id'.
//    ^
// [cfe] The non-abstract class 'G5' is missing implementations for these members:
//                     ^^^
// [analyzer] COMPILE_TIME_ERROR.INVALID_OVERRIDE

void main() {}
