blob: 905c48b83c7e6eac05d447d5b1ccdbf8dafd3c06 [file] [log] [blame]
// Copyright (c) 2022, 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.17
import './type_record_unsupported_lib.dart';
typedef R = Record; // Ok.
typedef AR = A<Record>; // Ok.
typedef AR2 = A<FromSupportedR>; // Ok.
typedef AR3 = A<FromSupportedRR>; // Ok.
typedef AR4 = A<FromSupportedAR>; // Ok.
typedef RR = FromSupportedR; // Ok.
Record foo1() => throw ''; // Ok.
dynamic foo2() => new Record(); // Error.
dynamic foo3() => const Record(); // Error.
dynamic foo4() => <Record>[]; // Ok.
dynamic foo5() => Record; // Ok.
dynamic foo6() => List<Record>; // Ok.
dynamic foo7(Record r) => null; // Ok.
dynamic foo8({required Record r}) => null; // Ok.
List<Record> foo9() => throw ''; // Ok.
dynamic foo10(List<Record> l) => null; // Ok.
FromSupportedR foo11() => throw ''; // Ok.
FromSupportedAR foo12() => throw ''; // Ok.
FromSupportedRR foo13() => throw ''; // Ok.
dynamic foo14(FromSupportedR r) => null; // Ok.
dynamic foo15(FromSupportedAR l) => null; // Ok.
dynamic foo16(FromSupportedRR l) => null; // Ok.
dynamic foo17() => FromSupportedR; // Ok.
dynamic foo18() => FromSupportedAR; // Ok.
dynamic foo19() => FromSupportedRR; // Ok.
abstract class A1 extends Record {} // Error.
abstract class A2 implements Record {} // Error.
abstract class A3 with Record {} // Error.
abstract class A4 extends A<Record> {} // Ok.
abstract class A5 implements A<Record> {} // Ok.
abstract class A6 with A<Record> {} // Ok.
abstract class A7 extends FromSupportedR {} // Error.
abstract class A8 extends FromSupportedAR {} // Ok.
abstract class A9 extends FromSupportedRR {} // Error.
main() {}