// 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 If an unmigrated library re-exports a migrated library, the
/// re-exported symbols retain their migrated status (that is, downstream
/// migrated libraries will see their migrated types).
/// @description Check that if non-nullable type alias exported from opted-in
/// library to legacy library and then back to the opted in code, its variable
/// can be assigned to non-null object.
/// @author iarkh@unipro.ru

// Requirements=nnbd-weak

import '../../../Utils/expect.dart';
import 'type-aliases/exports_A01_opted_out_aliases_lib.dart';

void testme() {}

main() {
  AAlias           a = A()   ;
  IntAlias         i = 0     ;
  FunctionAlias    f = testme;
  ObjectAlias      o = 1     ;
  FutureOrIntAlias x = 4     ;

  Expect.isNotNull(a);
  Expect.isNotNull(i);
  Expect.isNotNull(f);
  Expect.isNotNull(o);
  Expect.isNotNull(x);
}
