|  | // Copyright (c) 2018, 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. | 
|  |  | 
|  | // Regression test for issue 32770. | 
|  |  | 
|  | import 'dart:async' show Future; | 
|  |  | 
|  | A<J> futureToA<T, J>(Future<T> future, [J wrapValue(T value)?]) { | 
|  | return new A<J>( | 
|  | (void resolveFn(J value), void rejectFn(error)) { | 
|  | future.then((value) { | 
|  | dynamic wrapped; | 
|  | if (wrapValue != null) { | 
|  | wrapped = wrapValue(value); | 
|  | } else if (value != null) { | 
|  | wrapped = value; | 
|  | } | 
|  | resolveFn(wrapped); | 
|  | }).catchError((error) { | 
|  | rejectFn(error); | 
|  | }); | 
|  | }, | 
|  | ); | 
|  | } | 
|  |  | 
|  | class A<X> { | 
|  | var x; | 
|  |  | 
|  | A(this.x); | 
|  | } | 
|  |  | 
|  | main() { | 
|  | print(futureToA); | 
|  | } |