Chromium Code Reviews| 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 912ab3754d8d9cd0035b4a5a56a02f0fde1027b7..25f78a20f02c4e435d055593b34d9abbaba6b0bf 100644 |
| --- a/pkg/compiler/lib/src/js_emitter/program_builder.dart |
| +++ b/pkg/compiler/lib/src/js_emitter/program_builder.dart |
| @@ -462,8 +462,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. |
|
floitsch
2015/02/03 14:14:15
probably for reflection.
|
| + 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); |
| @@ -605,7 +616,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, |