Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(239)

Side by Side Diff: frog/leg/resolver.dart

Issue 8924001: First implementation of top-level fields without initializers. (Closed) Base URL: http://dart.googlecode.com/svn/branches/bleeding_edge/dart/
Patch Set: '' Created 9 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2011, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2011, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a 2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file. 3 // BSD-style license that can be found in the LICENSE file.
4 4
5 class TreeElements { 5 class TreeElements {
6 Map<Node, Element> map; 6 Map<Node, Element> map;
7 TreeElements() : map = new LinkedHashMap<Node, Element>(); 7 TreeElements() : map = new LinkedHashMap<Node, Element>();
8 operator []=(Node node, Element element) => map[node] = element; 8 operator []=(Node node, Element element) => map[node] = element;
9 operator [](Node node) => map[node]; 9 operator [](Node node) => map[node];
10 } 10 }
(...skipping 457 matching lines...) Expand 10 before | Expand all | Expand 10 after
468 468
469 visitNode(Node node) { 469 visitNode(Node node) {
470 compiler.cancel('internal error'); 470 compiler.cancel('internal error');
471 } 471 }
472 } 472 }
473 473
474 class VariableDefinitionsVisitor extends AbstractVisitor<SourceString> { 474 class VariableDefinitionsVisitor extends AbstractVisitor<SourceString> {
475 VariableDefinitions definitions; 475 VariableDefinitions definitions;
476 ResolverVisitor resolver; 476 ResolverVisitor resolver;
477 ElementKind kind; 477 ElementKind kind;
478 VariableListElement variables;
478 479
479 VariableDefinitionsVisitor(this.definitions, this.resolver, this.kind); 480 VariableDefinitionsVisitor(this.definitions, this.resolver, this.kind) {
481 variables = new VariableListElement.node(
482 definitions, ElementKind.VARIABLE_LIST, resolver.context.element);
483 }
480 484
481 SourceString visitSendSet(SendSet node) { 485 SourceString visitSendSet(SendSet node) {
482 assert(node.arguments.tail.isEmpty()); // Sanity check 486 assert(node.arguments.tail.isEmpty()); // Sanity check
483 if (node.receiver !== null) { 487 if (node.receiver !== null) {
484 resolver.cancel(node, 488 resolver.cancel(node,
485 "receiver on a variable definition not implemented"); 489 "receiver on a variable definition not implemented");
486 } 490 }
487 Identifier selector = node.selector; 491 Identifier selector = node.selector;
488 resolver.visit(node.arguments.head); 492 resolver.visit(node.arguments.head);
489 493
490 return visit(node.selector); 494 return visit(node.selector);
491 } 495 }
492 496
493 SourceString visitIdentifier(Identifier node) => node.source; 497 SourceString visitIdentifier(Identifier node) => node.source;
494 498
495 visitNodeList(NodeList node) { 499 visitNodeList(NodeList node) {
496 for (Link<Node> link = node.nodes; !link.isEmpty(); link = link.tail) { 500 for (Link<Node> link = node.nodes; !link.isEmpty(); link = link.tail) {
497 SourceString name = visit(link.head); 501 SourceString name = visit(link.head);
498 Element element = new VariableElement(link.head, definitions.type, 502 Element element = new VariableElement(
499 kind, name, resolver.context.element); 503 name, variables, kind, resolver.context.element);
500 resolver.defineElement(link.head, element); 504 resolver.defineElement(link.head, element);
501 } 505 }
502 } 506 }
503 507
504 visit(Node node) => node.accept(this); 508 visit(Node node) => node.accept(this);
505 } 509 }
506 510
507 class ParametersVisitor extends AbstractVisitor<Element> { 511 class ParametersVisitor extends AbstractVisitor<Element> {
508 ResolverVisitor resolver; 512 ResolverVisitor resolver;
509 LinkBuilder<Element> elements; 513 LinkBuilder<Element> elements;
(...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after
582 class TopScope extends Scope { 586 class TopScope extends Scope {
583 Universe universe; 587 Universe universe;
584 588
585 TopScope(Universe this.universe) : super(null, null); 589 TopScope(Universe this.universe) : super(null, null);
586 Element lookup(SourceString name) => universe.find(name); 590 Element lookup(SourceString name) => universe.find(name);
587 591
588 Element add(Element element) { 592 Element add(Element element) {
589 throw "Cannot add an element in the top scope"; 593 throw "Cannot add an element in the top scope";
590 } 594 }
591 } 595 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698