| Index: lib/src/compiler/code_generator.dart
|
| diff --git a/lib/src/compiler/code_generator.dart b/lib/src/compiler/code_generator.dart
|
| index 2445a11e873482df0803669a459da25cb287c3ed..8a97a278c6114a34e3a048de9a9dd36cedc82799 100644
|
| --- a/lib/src/compiler/code_generator.dart
|
| +++ b/lib/src/compiler/code_generator.dart
|
| @@ -801,14 +801,13 @@ class CodeGenerator extends GeneralizingAstVisitor
|
| JS.Statement _defineClassTypeArguments(TypeDefiningElement element,
|
| List<TypeParameterElement> formals, JS.Statement body) {
|
| assert(formals.isNotEmpty);
|
| - var genericDef =
|
| - js.statement('# = dart.generic((#) => { #; return #; });', [
|
| - _emitTopLevelName(element, suffix: r'$'),
|
| - _emitTypeFormals(formals),
|
| - body,
|
| - element.name
|
| - ]);
|
| -
|
| + var genericCall = js.call('dart.generic((#) => { #; return #; })',
|
| + [_emitTypeFormals(formals), body, element.name]);
|
| + if (element.type.isDartAsyncFuture) {
|
| + genericCall = js.call('dart.flattenFutures(#)', [genericCall]);
|
| + }
|
| + var genericDef = js.statement(
|
| + '# = #;', [_emitTopLevelName(element, suffix: r'$'), genericCall]);
|
| var dynType = fillDynamicTypeArgs(element.type);
|
| var genericInst = _emitType(dynType, lowerGeneric: true);
|
| return js.statement(
|
|
|