library test;
//
// Problems in library:
//
// pkg/front_end/testcases/inference/future_then_explicit_future.dart:15:98: Error: A value of type 'List<dynamic>' can't be assigned to a variable of type 'FutureOr<Future<List<int>>>'.
//  - 'List' is from 'dart:core'.
//  - 'Future' is from 'dart:async'.
//       /*@returnType=FutureOr<Future<List<int*>*>*>*/ (/*@type=int**/ x) => /*@typeArgs=dynamic*/ []);
//                                                                                                  ^
//
// pkg/front_end/testcases/inference/future_then_explicit_future.dart:16:25: Error: A value of type 'Future<Future<List<int>>>' can't be assigned to a variable of type 'Future<List<int>>'.
//  - 'Future' is from 'dart:async'.
//  - 'List' is from 'dart:core'.
//   Future<List<int>> y = x;
//                         ^
//
import self as self;
import "dart:async" as asy;
import "dart:core" as core;

import "dart:async";

static method m1() → dynamic {
  asy::Future<core::int*>* f;
  asy::Future<asy::Future<core::List<core::int*>*>*>* x = f.{asy::Future::then}<asy::Future<core::List<core::int*>*>*>((core::int* x) → FutureOr<asy::Future<core::List<core::int*>*>*> => let final<BottomType> #t1 = invalid-expression "pkg/front_end/testcases/inference/future_then_explicit_future.dart:15:98: Error: A value of type 'List<dynamic>' can't be assigned to a variable of type 'FutureOr<Future<List<int>>>'.
 - 'List' is from 'dart:core'.
 - 'Future' is from 'dart:async'.
      /*@returnType=FutureOr<Future<List<int*>*>*>*/ (/*@type=int**/ x) => /*@typeArgs=dynamic*/ []);
                                                                                                 ^" in <dynamic>[] as{TypeError} FutureOr<asy::Future<core::List<core::int*>*>*>);
  asy::Future<core::List<core::int*>*>* y = let final<BottomType> #t2 = invalid-expression "pkg/front_end/testcases/inference/future_then_explicit_future.dart:16:25: Error: A value of type 'Future<Future<List<int>>>' can't be assigned to a variable of type 'Future<List<int>>'.
 - 'Future' is from 'dart:async'.
 - 'List' is from 'dart:core'.
  Future<List<int>> y = x;
                        ^" in x as{TypeError} asy::Future<core::List<core::int*>*>*;
}
static method m2() → dynamic {
  asy::Future<core::int*>* f;
  asy::Future<core::List<core::int*>*>* x = f.{asy::Future::then}<core::List<core::int*>*>((core::int* x) → core::List<core::int*>* => <core::int*>[]);
  asy::Future<core::List<core::int*>*>* y = x;
}
static method main() → dynamic {}
