blob: dce72e1c014f7d3961bc9250232a3e9506c6bbbc [file] [log] [blame]
/*
* 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.
*/
/**
* @assertion It is an error if an optional parameter (named or otherwise) with
* no default value has a potentially non-nullable type except in the parameter
* list of an abstract method declaration.
*
* @description Check that it is not an error if an abstract method optional
* parameter (named or otherwise) with no default value has a potentially
* non-nullable type
* @author sgrekhov@unipro.ru
* @issue 40287
* @issue 40954
*/
// Requirements=nnbd-strong
import "dart:async";
typedef void Foo();
class X {}
abstract class C {
void test1(var v, [Never n]);
void test2(var v, {Never n});
void test3(var v, [Function f]);
void test4(var v, {Function f});
void test5(var v, [Foo f]);
void test6(var v, {Foo f});
void test7(var v, [X x]);
void test8(var v, {X x});
void test11<T extends Object>(var v, [T t]);
void test12<T extends Object>(var v, {T t});
void test13<T extends Object?>(var v, [T t]);
void test14<T extends Object?>(var v, {T t});
void test15(var v, [FutureOr<Never> n]);
void test16(var v, {FutureOr<Never> n});
void test17(var v, [FutureOr<Function> f]);
void test18(var v, {FutureOr<Function> f});
void test19(var v, [FutureOr<Foo> f]);
void test20(var v, {FutureOr<Foo> f});
void test21(var v, [FutureOr<X> x]);
void test22(var v, {FutureOr<X> x});
void test25(var v, [FutureOr<FutureOr<X>> x]);
void test26(var v, {FutureOr<FutureOr<X>> x});
}
main() {}