| Index: sdk/lib/_internal/compiler/implementation/inferrer/inferrer_visitor.dart
|
| ===================================================================
|
| --- sdk/lib/_internal/compiler/implementation/inferrer/inferrer_visitor.dart (revision 31020)
|
| +++ sdk/lib/_internal/compiler/implementation/inferrer/inferrer_visitor.dart (working copy)
|
| @@ -49,6 +49,8 @@
|
|
|
| T allocateMap(T keyType, T valueType, T type);
|
|
|
| + T allocateClosure(Node node, Element element);
|
| +
|
| /**
|
| * Returns the least upper bound between [firstType] and
|
| * [secondType].
|
| @@ -271,6 +273,10 @@
|
| bool every(bool f(T type)) {
|
| return positional.every(f) && named.values.every(f);
|
| }
|
| +
|
| + bool contains(T type) {
|
| + return positional.contains(type) || named.containsValue(type);
|
| + }
|
| }
|
|
|
| abstract class MinimalInferrerEngine<T> {
|
| @@ -734,6 +740,11 @@
|
| return thisType;
|
| } else if (node.isSuper()) {
|
| return superType;
|
| + } else {
|
| + Element element = elements[node];
|
| + if (Elements.isLocal(element)) {
|
| + return locals.use(element);
|
| + }
|
| }
|
| }
|
|
|
|
|