| Index: pkg/compiler/lib/src/dart_backend/backend_ast_emitter.dart | 
| diff --git a/pkg/compiler/lib/src/dart_backend/backend_ast_emitter.dart b/pkg/compiler/lib/src/dart_backend/backend_ast_emitter.dart | 
| index 10b056d8fbc80c9f49698bb362dfc5347e4d837e..fd7a45f325246159f52e326861c87aff3ad3a7a7 100644 | 
| --- a/pkg/compiler/lib/src/dart_backend/backend_ast_emitter.dart | 
| +++ b/pkg/compiler/lib/src/dart_backend/backend_ast_emitter.dart | 
| @@ -9,13 +9,11 @@ import '../dart_types.dart'; | 
| import '../elements/elements.dart'; | 
|  | 
| class TypeGenerator { | 
| - | 
| /// TODO(johnniwinther): Remove this when issue 21283 has been resolved. | 
| static int pseudoNameCounter = 0; | 
|  | 
| static Parameter emitParameter(DartType type, | 
| -                                 {String name, | 
| -                                  Element element}) { | 
| +      {String name, Element element}) { | 
| if (name == null && element != null) { | 
| name = element.name; | 
| } | 
| @@ -26,8 +24,7 @@ class TypeGenerator { | 
| if (type.isFunctionType) { | 
| FunctionType functionType = type; | 
| TypeAnnotation returnType = createOptionalType(functionType.returnType); | 
| -      Parameters innerParameters = | 
| -          createParametersFromType(functionType); | 
| +      Parameters innerParameters = createParametersFromType(functionType); | 
| parameter = new Parameter.function(name, returnType, innerParameters); | 
| } else { | 
| TypeAnnotation typeAnnotation = createOptionalType(type); | 
| @@ -40,31 +37,26 @@ class TypeGenerator { | 
| static Parameters createParametersFromType(FunctionType functionType) { | 
| pseudoNameCounter = 0; | 
| if (functionType.namedParameters.isEmpty) { | 
| -      return new Parameters( | 
| -          createParameters(functionType.parameterTypes), | 
| -          createParameters(functionType.optionalParameterTypes), | 
| -          false); | 
| +      return new Parameters(createParameters(functionType.parameterTypes), | 
| +          createParameters(functionType.optionalParameterTypes), false); | 
| } else { | 
| return new Parameters( | 
| createParameters(functionType.parameterTypes), | 
| createParameters(functionType.namedParameterTypes, | 
| -                         names: functionType.namedParameters), | 
| +              names: functionType.namedParameters), | 
| true); | 
| } | 
| } | 
|  | 
| -  static List<Parameter> createParameters( | 
| -      Iterable<DartType> parameterTypes, | 
| +  static List<Parameter> createParameters(Iterable<DartType> parameterTypes, | 
| {Iterable<String> names: const <String>[], | 
| -       Iterable<Element> elements: const <Element>[]}) { | 
| +      Iterable<Element> elements: const <Element>[]}) { | 
| Iterator<String> name = names.iterator; | 
| Iterator<Element> element = elements.iterator; | 
| return parameterTypes.map((DartType type) { | 
| name.moveNext(); | 
| element.moveNext(); | 
| -      return emitParameter(type, | 
| -                           name: name.current, | 
| -                           element: element.current); | 
| +      return emitParameter(type, name: name.current, element: element.current); | 
| }).toList(); | 
| } | 
|  | 
| @@ -83,22 +75,17 @@ class TypeGenerator { | 
| if (type.treatAsRaw) { | 
| return new TypeAnnotation(type.element.name)..dartType = type; | 
| } | 
| -      return new TypeAnnotation( | 
| -          type.element.name, | 
| -          type.typeArguments.map(createType).toList(growable:false)) | 
| -          ..dartType = type; | 
| +      return new TypeAnnotation(type.element.name, | 
| +          type.typeArguments.map(createType).toList(growable: false)) | 
| +        ..dartType = type; | 
| } else if (type is VoidType) { | 
| -      return new TypeAnnotation('void') | 
| -          ..dartType = type; | 
| +      return new TypeAnnotation('void')..dartType = type; | 
| } else if (type is TypeVariableType) { | 
| -      return new TypeAnnotation(type.name) | 
| -          ..dartType = type; | 
| +      return new TypeAnnotation(type.name)..dartType = type; | 
| } else if (type is DynamicType) { | 
| -      return new TypeAnnotation("dynamic") | 
| -          ..dartType = type; | 
| +      return new TypeAnnotation("dynamic")..dartType = type; | 
| } else if (type is MalformedType) { | 
| -      return new TypeAnnotation(type.name) | 
| -          ..dartType = type; | 
| +      return new TypeAnnotation(type.name)..dartType = type; | 
| } else { | 
| throw "Unsupported type annotation: $type"; | 
| } | 
|  |