| Index: pkg/compiler/lib/src/js_emitter/program_builder.dart
|
| diff --git a/pkg/compiler/lib/src/js_emitter/program_builder.dart b/pkg/compiler/lib/src/js_emitter/program_builder.dart
|
| index 0dc764952703597e1a20be8b8f13fa2f6172b674..a6d6fe80549fcc46ced09404fc74937ac082a22c 100644
|
| --- a/pkg/compiler/lib/src/js_emitter/program_builder.dart
|
| +++ b/pkg/compiler/lib/src/js_emitter/program_builder.dart
|
| @@ -476,8 +476,19 @@ class ProgramBuilder {
|
| callName = namer.invocationName(callSelector);
|
| }
|
|
|
| + DartType memberType;
|
| + if (element.isGenerativeConstructorBody) {
|
| + // TODO(herhut): Why does this need to be normalized away? We never need
|
| + // this information anyway as they cannot be torn off or
|
| + // reflected.
|
| + var body = element;
|
| + memberType = body.constructor.type;
|
| + } else {
|
| + memberType = element.type;
|
| + }
|
| +
|
| return new InstanceMethod(element, name, code,
|
| - _generateParameterStubs(element, canTearOff), callName,
|
| + _generateParameterStubs(element, canTearOff), callName, memberType,
|
| needsTearOff: canTearOff, tearOffName: tearOffName,
|
| isClosure: isClosure, aliasName: aliasName,
|
| canBeApplied: canBeApplied, canBeReflected: canBeReflected);
|
| @@ -619,7 +630,7 @@ class ProgramBuilder {
|
| return new StaticDartMethod(element,
|
| name, _registry.registerHolder(holder), code,
|
| _generateParameterStubs(element, needsTearOff),
|
| - callName,
|
| + callName, element.type,
|
| needsTearOff: needsTearOff,
|
| tearOffName: tearOffName,
|
| canBeApplied: canBeApplied,
|
|
|