library /*isNonNullableByDefault*/;
//
// Problems in library:
//
// pkg/front_end/testcases/nonfunction_type_aliases/issue41501.dart:13:42: Error: A value of type 'Null' can't be assigned to a variable of type 'FutureOr<A>'.
//  - 'FutureOr' is from 'dart:async'.
//  - 'A' is from 'pkg/front_end/testcases/nonfunction_type_aliases/issue41501_lib.dart'.
//   FutureOr<AAlias> foLegacyNonNullable = null; // error
//                                          ^
//
// pkg/front_end/testcases/nonfunction_type_aliases/issue41501.dart:15:47: Error: A value of type 'Null' can't be assigned to a variable of type 'FutureOr<A>'.
//  - 'FutureOr' is from 'dart:async'.
//  - 'A' is from 'pkg/front_end/testcases/nonfunction_type_aliases/issue41501_lib.dart'.
//   FutureOr<AAliasNonNullable> foNonNullable = null; // error
//                                               ^
//
import self as self;
import "issue41501_lib.dart" as opt;
import "dart:async" as asy;

import "dart:async";
import "org-dartlang-testcase:///issue41501_lib.dart";

typedef AAliasNonNullable = opt::A;
typedef AAliasNullable = opt::A?;
static method test() → dynamic {
  asy::FutureOr<opt::A> foLegacyNonNullable = let final<BottomType> #t1 = invalid-expression "pkg/front_end/testcases/nonfunction_type_aliases/issue41501.dart:13:42: Error: A value of type 'Null' can't be assigned to a variable of type 'FutureOr<A>'.
 - 'FutureOr' is from 'dart:async'.
 - 'A' is from 'pkg/front_end/testcases/nonfunction_type_aliases/issue41501_lib.dart'.
  FutureOr<AAlias> foLegacyNonNullable = null; // error
                                         ^" in null as{TypeError,ForNonNullableByDefault} asy::FutureOr<opt::A>;
  asy::FutureOr<opt::A?> foLegacyNullable = null;
  asy::FutureOr<opt::A> foNonNullable = let final<BottomType> #t2 = invalid-expression "pkg/front_end/testcases/nonfunction_type_aliases/issue41501.dart:15:47: Error: A value of type 'Null' can't be assigned to a variable of type 'FutureOr<A>'.
 - 'FutureOr' is from 'dart:async'.
 - 'A' is from 'pkg/front_end/testcases/nonfunction_type_aliases/issue41501_lib.dart'.
  FutureOr<AAliasNonNullable> foNonNullable = null; // error
                                              ^" in null as{TypeError,ForNonNullableByDefault} asy::FutureOr<opt::A>;
  asy::FutureOr<opt::A?> foNullable = null;
  asy::FutureOr<opt::A?> foNonNullableNullable = null;
  asy::FutureOr<opt::A?> foNullableNullable = null;
}
static method main() → dynamic {}

library opted_out_lib;
import self as opt;
import "dart:core" as core;
import "dart:async" as asy;

import "dart:async";
import "org-dartlang-testcase:///issue41501.dart";

typedef AAlias = opt::A*;
class A extends core::Object {
  synthetic constructor •() → opt::A*
    : super core::Object::•()
    ;
}
static method test() → dynamic {
  asy::FutureOr<opt::A*>* foLegacy = null;
  asy::FutureOr<opt::A*>* foNonNullable = null;
  asy::FutureOr<opt::A*>* foNullable = null;
}
