| Index: lib/compiler/implementation/ssa/builder.dart
|
| diff --git a/lib/compiler/implementation/ssa/builder.dart b/lib/compiler/implementation/ssa/builder.dart
|
| index f3783d8e2ccf281f417e91c218988316d8a7eee5..238fa6b8eda91cca470360935a1789d187b99451 100644
|
| --- a/lib/compiler/implementation/ssa/builder.dart
|
| +++ b/lib/compiler/implementation/ssa/builder.dart
|
| @@ -195,7 +195,8 @@ class SsaBuilderTask extends CompilerTask {
|
| // If there is an estimate of the parameter types assume these types
|
| // when compiling.
|
| OptionalParameterTypes defaultValueTypes = null;
|
| - FunctionSignature signature = element.computeSignature(compiler);
|
| + FunctionSignature signature =
|
| + element.computeSignature(compiler);
|
| if (signature.optionalParameterCount > 0) {
|
| defaultValueTypes =
|
| new OptionalParameterTypes(signature.optionalParameterCount);
|
| @@ -217,7 +218,7 @@ class SsaBuilderTask extends CompilerTask {
|
| });
|
| }
|
| backend.registerParameterTypesOptimization(
|
| - element, parameterTypes, defaultValueTypes);
|
| + element.declaration, parameterTypes, defaultValueTypes);
|
| }
|
|
|
| if (compiler.tracer.enabled) {
|
| @@ -974,6 +975,14 @@ class SsaBuilder extends ResolvedVisitor implements Visitor {
|
| compiler.resolver.resolveMethodElement(constructor.declaration);
|
| classElement.backendMembers =
|
| classElement.backendMembers.prepend(bodyElement);
|
| +
|
| + if (constructor.origin != null) {
|
| + // Create origin body element for patched constructors.
|
| + bodyElement.origin = new ConstructorBodyElement(constructor.origin);
|
| + bodyElement.origin.patch = bodyElement;
|
| + classElement.origin.backendMembers =
|
| + classElement.origin.backendMembers.prepend(bodyElement.origin);
|
| + }
|
| compiler.enqueuer.codegen.addToWorkList(bodyElement.declaration,
|
| treeElements);
|
| }
|
| @@ -1189,6 +1198,7 @@ class SsaBuilder extends ResolvedVisitor implements Visitor {
|
| assert(superClass.resolutionState == STATE_DONE);
|
| Selector selector =
|
| new Selector.call(superClass.name, enclosingClass.getLibrary(), 0);
|
| + // TODO(johnniwinther): Should we find injected constructors as well?
|
| FunctionElement target = superClass.lookupConstructor(superClass.name);
|
| if (target === null) {
|
| compiler.internalError("no default constructor available");
|
| @@ -1214,6 +1224,7 @@ class SsaBuilder extends ResolvedVisitor implements Visitor {
|
| classElement.forEachInstanceField(
|
| includeBackendMembers: true,
|
| includeSuperMembers: false,
|
| + includeInjectedMembers: true,
|
| f: (ClassElement enclosingClass, Element member) {
|
| TreeElements definitions = compiler.analyzeElement(member);
|
| Node node = member.parseNode(compiler);
|
| @@ -1286,6 +1297,7 @@ class SsaBuilder extends ResolvedVisitor implements Visitor {
|
| classElement.forEachInstanceField(
|
| includeBackendMembers: true,
|
| includeSuperMembers: true,
|
| + includeInjectedMembers: true,
|
| f: (ClassElement enclosingClass, Element member) {
|
| constructorArguments.add(
|
| potentiallyCheckType(fieldValues[member], member));
|
|
|