/*
 * 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 With sound null safety, all generic const constructors and
 * generic const literals are evaluated using the actual type arguments
 * provided, whether legacy or non-legacy. This ensures that with sound null
 * safety, the final consistent semantics are obeyed.
 *
 * @description Checks statically that actual generic class type parameter is
 * evaluated correctly for [Never] type argument.
 *
 * @author iarkh@unipro.ru
 */
// Requirements=nnbd-weak

import "dart:async";

class A<T> {
  const A();
}

main() {
  const A<int?     > a1  = A<Never>();
  const A<int      > a2  = A<Never>();
  const A<Object?  > a3  = A<Never>();
  const A<Object   > a4  = A<Never>();
  const A<Function?> a5  = A<Never>();
  const A<Function > a6  = A<Never>();
  const A<dynamic  > a7  = A<Never>();
  const A<Null     > a8  = A<Never>();
  const A<void     > a9  = A<Never>();
  const A<Never    > a10 = A<Never>();
  const A<FutureOr > a11 = A<Never>();
}
