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) { |