Chromium Code Reviews| Index: sdk/lib/_internal/compiler/implementation/resolution/members.dart |
| diff --git a/sdk/lib/_internal/compiler/implementation/resolution/members.dart b/sdk/lib/_internal/compiler/implementation/resolution/members.dart |
| index 4aed80b6d27b2b96f673ca869eb65b22d0b04bae..1483fd8026719b1edf618d08a9317a935bd04404 100644 |
| --- a/sdk/lib/_internal/compiler/implementation/resolution/members.dart |
| +++ b/sdk/lib/_internal/compiler/implementation/resolution/members.dart |
| @@ -1751,8 +1751,7 @@ class ResolverVisitor extends MappingVisitor<Element> { |
| ResolutionEnqueuer get world => compiler.enqueuer.resolution; |
| - Element lookup(Node node, SourceString name) { |
| - Element result = scope.lookup(name); |
| + Element reportLookupErrorIfAny(Element result, Node node, SourceString name) { |
| if (!Elements.isUnresolved(result)) { |
| if (!inInstanceContext && result.isInstanceMember()) { |
| compiler.reportError( |
| @@ -1773,6 +1772,11 @@ class ResolverVisitor extends MappingVisitor<Element> { |
| return result; |
| } |
| + Element lookupAndReport(Node node, SourceString name) { |
|
ngeoffray
2013/09/10 08:21:18
Since this is only called once, I'd prefer inlinin
karlklose
2013/09/10 11:42:33
Done.
|
| + Element result = scope.lookup(name); |
| + return reportLookupErrorIfAny(result, node, name); |
| + } |
| + |
| // Create, or reuse an already created, statement element for a statement. |
| TargetElement getOrCreateTargetElement(Node statement) { |
| TargetElement element = mapping[statement]; |
| @@ -1828,7 +1832,12 @@ class ResolverVisitor extends MappingVisitor<Element> { |
| } |
| return null; |
| } else { |
| - Element element = lookup(node, node.source); |
| + SourceString name = node.source; |
| + Element element = scope.lookup(name); |
| + if (Elements.isUnresolved(element) && name.slowToString() == 'dynamic') { |
| + element = compiler.dynamicClass; |
| + } |
| + element = reportLookupErrorIfAny(element, node, node.source); |
| if (element == null) { |
| if (!inInstanceContext) { |
| element = warnAndCreateErroneousElement( |
| @@ -4128,7 +4137,7 @@ class ConstructorResolver extends CommonResolverVisitor<Element> { |
| Element visitIdentifier(Identifier node) { |
| SourceString name = node.source; |
| - Element e = resolver.lookup(node, name); |
| + Element e = resolver.lookupAndReport(node, name); |
| // TODO(johnniwinther): Change errors to warnings, cf. 11.11.1. |
| if (e == null) { |
| return failOrReturnErroneousElement(resolver.enclosingElement, node, name, |