| Index: pkg/compiler/lib/src/cps_ir/cps_ir_builder_task.dart | 
| diff --git a/pkg/compiler/lib/src/cps_ir/cps_ir_builder_task.dart b/pkg/compiler/lib/src/cps_ir/cps_ir_builder_task.dart | 
| index e768e3c154fb4a360fa86d4107f252acbaad1b38..1ab44e7146e0fd59f4417f5c15b9484bb12c4b25 100644 | 
| --- a/pkg/compiler/lib/src/cps_ir/cps_ir_builder_task.dart | 
| +++ b/pkg/compiler/lib/src/cps_ir/cps_ir_builder_task.dart | 
| @@ -192,8 +192,15 @@ abstract class IrBuilderVisitor extends ast.Visitor<ir.Primitive> | 
| ir.FunctionDefinition _makeFunctionBody(FunctionElement element, | 
| ast.FunctionExpression node) { | 
| FunctionSignature signature = element.functionSignature; | 
| -    List<ParameterElement> parameters = []; | 
| -    signature.orderedForEachParameter(parameters.add); | 
| +    List<Local> parameters = <Local>[]; | 
| +    signature.orderedForEachParameter((e) => parameters.add(e)); | 
| + | 
| +    if (element.isFactoryConstructor) { | 
| +      // Type arguments are passed in as extra parameters. | 
| +      for (DartType typeVariable in element.enclosingClass.typeVariables) { | 
| +        parameters.add(new TypeVariableLocal(typeVariable, element)); | 
| +      } | 
| +    } | 
|  | 
| irBuilder.buildFunctionHeader(parameters, | 
| closureScope: getClosureScopeForNode(node), | 
|  |