// TODO(multitest): This was automatically migrated from a multitest and may // contain strange or dead code. // 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. // 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 id(T x) => x; } // Wrong return type. // Wrong argument type. // Similar as the above but using an instantiated class instead. abstract class C5 = CII with CTT; abstract class C6 extends CII with CTT {} // 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. // It's NOT OK to drop named parameters. class NBABxy { B? id ({A? x, B? y}) => y; } class NTTy { T? id({T? y}) => y; } class NTTx { T? id(T? x) => x; } // Same as above but with generic classes. abstract class N7 = NIIx with NBABxy; abstract class N8 extends NIIx with NBABxy {} // 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. class OBAB { B? id ([A? x, B? y]) => y; } class OTTy { T? id([T? y]) => y; } class PTT { T? id(T? x) => x; } // Same as above but with generic classes. abstract class O7 = OII with OBAB; abstract class O8 extends OII with OBAB {} abstract class O11 = OII with OTTy; abstract class O12 extends OII with OTTy {} // More tests with generic classes. abstract class GTTnum { T id(x); } class MTTnum { T id(x) => x; } class MTTint { T id(x) => x; } class MTT { T id(x) => x; } class MTTnumR { T id(x) => x; } class G1 = GTTnum with MTTnum; void main() {}