| Index: pkg/compiler/lib/src/inferrer/simple_types_inferrer.dart
|
| diff --git a/pkg/compiler/lib/src/inferrer/simple_types_inferrer.dart b/pkg/compiler/lib/src/inferrer/simple_types_inferrer.dart
|
| index e3b2327c6269666c676c7f1581b94995412d7b9e..70aa4be8d11c19b899fa1f4215efd162f4945f0b 100644
|
| --- a/pkg/compiler/lib/src/inferrer/simple_types_inferrer.dart
|
| +++ b/pkg/compiler/lib/src/inferrer/simple_types_inferrer.dart
|
| @@ -339,16 +339,24 @@ class SimpleTypeInferrerVisitor<T>
|
| final Setlet<Entity> capturedVariables = new Setlet<Entity>();
|
|
|
| SimpleTypeInferrerVisitor.internal(
|
| - analyzedElement, this.outermostElement, inferrer, compiler, locals)
|
| - : super(analyzedElement, inferrer, inferrer.types, compiler, locals),
|
| + AstElement analyzedElement,
|
| + ResolvedAst resolvedAst,
|
| + this.outermostElement,
|
| + inferrer,
|
| + compiler,
|
| + locals)
|
| + : super(analyzedElement, resolvedAst, inferrer, inferrer.types, compiler,
|
| + locals),
|
| this.inferrer = inferrer {
|
| assert(outermostElement != null);
|
| }
|
|
|
| - SimpleTypeInferrerVisitor(Element element, Compiler compiler,
|
| - InferrerEngine<T, TypeSystem<T>> inferrer, [LocalsHandler<T> handler])
|
| + SimpleTypeInferrerVisitor(Element element, ResolvedAst resolvedAst,
|
| + Compiler compiler, InferrerEngine<T, TypeSystem<T>> inferrer,
|
| + [LocalsHandler<T> handler])
|
| : this.internal(
|
| element,
|
| + resolvedAst,
|
| element.outermostEnclosingMemberOrTopLevel.implementation,
|
| inferrer,
|
| compiler,
|
| @@ -375,8 +383,8 @@ class SimpleTypeInferrerVisitor<T>
|
| // be handled specially, in that we are computing their LUB at
|
| // each update, and reading them yields the type that was found in a
|
| // previous analysis of [outermostElement].
|
| - ClosureClassMap closureData = compiler.closureToClassMapper
|
| - .computeClosureToClassMapping(analyzedElement, node, elements);
|
| + ClosureClassMap closureData =
|
| + compiler.closureToClassMapper.computeClosureToClassMapping(resolvedAst);
|
| closureData.forEachCapturedVariable((variable, field) {
|
| locals.setCaptured(variable, field);
|
| });
|
| @@ -402,8 +410,8 @@ class SimpleTypeInferrerVisitor<T>
|
| SimpleTypeInferrerVisitor visitor = this;
|
| if (inferrer.hasAlreadyComputedTypeOfParameterDefault(element)) return;
|
| if (element.functionDeclaration != analyzedElement) {
|
| - visitor = new SimpleTypeInferrerVisitor(
|
| - element.functionDeclaration, compiler, inferrer);
|
| + visitor = new SimpleTypeInferrerVisitor(element.functionDeclaration,
|
| + element.functionDeclaration.resolvedAst, compiler, inferrer);
|
| }
|
| T type =
|
| (defaultValue == null) ? types.nullType : visitor.visit(defaultValue);
|
| @@ -552,7 +560,7 @@ class SimpleTypeInferrerVisitor<T>
|
| LocalsHandler closureLocals =
|
| new LocalsHandler<T>.from(locals, node, useOtherTryBlock: false);
|
| SimpleTypeInferrerVisitor visitor = new SimpleTypeInferrerVisitor<T>(
|
| - element, compiler, inferrer, closureLocals);
|
| + element, element.resolvedAst, compiler, inferrer, closureLocals);
|
| visitor.run();
|
| inferrer.recordReturnType(element, visitor.returnType);
|
|
|
|
|