| Index: pkg/compiler/lib/src/elements/modelx.dart | 
| diff --git a/pkg/compiler/lib/src/elements/modelx.dart b/pkg/compiler/lib/src/elements/modelx.dart | 
| index 964cb741f3ed68b3d23340319d8c771fd1c40845..6ea3bb0348ab96aa4d497b4a79b9b1aaf2ece015 100644 | 
| --- a/pkg/compiler/lib/src/elements/modelx.dart | 
| +++ b/pkg/compiler/lib/src/elements/modelx.dart | 
| @@ -2142,6 +2142,7 @@ class SynthesizedConstructorElementX extends ConstructorElementX { | 
| Modifiers.EMPTY, | 
| enclosing) { | 
| typeCache = new FunctionType.synthesized(enclosingClass.thisType); | 
| +    functionSignatureCache = new FunctionSignatureX(type: type); | 
| } | 
|  | 
| FunctionExpression parseNode(DiagnosticListener listener) => null; | 
| @@ -2166,18 +2167,16 @@ class SynthesizedConstructorElementX extends ConstructorElementX { | 
|  | 
| FunctionSignature computeSignature(compiler) { | 
| if (functionSignatureCache != null) return functionSignatureCache; | 
| -    if (isDefaultConstructor) { | 
| -      return functionSignatureCache = new FunctionSignatureX( | 
| -          type: type); | 
| -    } | 
| if (definingConstructor.isErroneous) { | 
| return functionSignatureCache = | 
| compiler.objectClass.localLookup('').computeSignature(compiler); | 
| } | 
| // TODO(johnniwinther): Ensure that the function signature (and with it the | 
| // function type) substitutes type variables correctly. | 
| -    return functionSignatureCache = | 
| -        definingConstructor.computeSignature(compiler); | 
| +    definingConstructor.computeType(compiler); | 
| +    functionSignatureCache = definingConstructor.functionSignature; | 
| +    typeCache = definingConstructor.type; | 
| +    return functionSignatureCache; | 
| } | 
|  | 
| accept(ElementVisitor visitor, arg) { | 
|  |