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

Side by Side Diff: sdk/lib/_internal/compiler/implementation/tree/nodes.dart

Issue 11412147: Fix a type annotation in the parser to make it accept non-literal strings as part URIs in checked m… (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Also fix import and add a test. Created 8 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) 2012, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2012, 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 part of tree; 5 part of tree;
6 6
7 abstract class Visitor<R> { 7 abstract class Visitor<R> {
8 const Visitor(); 8 const Visitor();
9 9
10 R visitNode(Node node); 10 R visitNode(Node node);
(...skipping 1666 matching lines...) Expand 10 before | Expand all | Expand 10 after
1677 1677
1678 Token getEndToken() => name.getEndToken().next; 1678 Token getEndToken() => name.getEndToken().next;
1679 } 1679 }
1680 1680
1681 /** 1681 /**
1682 * This tag describes a dependency between one library and the exported 1682 * This tag describes a dependency between one library and the exported
1683 * identifiers of another library. The other library is specified by the [uri]. 1683 * identifiers of another library. The other library is specified by the [uri].
1684 * Combinators filter away some identifiers from the other library. 1684 * Combinators filter away some identifiers from the other library.
1685 */ 1685 */
1686 abstract class LibraryDependency extends LibraryTag { 1686 abstract class LibraryDependency extends LibraryTag {
1687 final LiteralString uri; 1687 final StringNode uri;
1688 final NodeList combinators; 1688 final NodeList combinators;
1689 1689
1690 LibraryDependency(this.uri, this.combinators); 1690 LibraryDependency(this.uri, this.combinators);
1691 } 1691 }
1692 1692
1693 /** 1693 /**
1694 * An [:import:] library tag. 1694 * An [:import:] library tag.
1695 * 1695 *
1696 * An import tag is dependency on another library where the exported identifiers 1696 * An import tag is dependency on another library where the exported identifiers
1697 * are put into the import scope of the importing library. The import scope is 1697 * are put into the import scope of the importing library. The import scope is
1698 * only visible inside the library. 1698 * only visible inside the library.
1699 */ 1699 */
1700 class Import extends LibraryDependency { 1700 class Import extends LibraryDependency {
1701 final Identifier prefix; 1701 final Identifier prefix;
1702 final Token importKeyword; 1702 final Token importKeyword;
1703 1703
1704 Import(this.importKeyword, LiteralString uri, 1704 Import(this.importKeyword, StringNode uri,
1705 this.prefix, NodeList combinators) 1705 this.prefix, NodeList combinators)
1706 : super(uri, combinators); 1706 : super(uri, combinators);
1707 1707
1708 bool get isImport => true; 1708 bool get isImport => true;
1709 1709
1710 Import asImport() => this; 1710 Import asImport() => this;
1711 1711
1712 Token get asKeyword => prefix == null ? null : uri.getEndToken().next; 1712 Token get asKeyword => prefix == null ? null : uri.getEndToken().next;
1713 1713
1714 accept(Visitor visitor) => visitor.visitImport(this); 1714 accept(Visitor visitor) => visitor.visitImport(this);
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
1754 1754
1755 Token getBeginToken() => exportKeyword; 1755 Token getBeginToken() => exportKeyword;
1756 1756
1757 Token getEndToken() { 1757 Token getEndToken() {
1758 if (combinators != null) return combinators.getEndToken().next; 1758 if (combinators != null) return combinators.getEndToken().next;
1759 return uri.getEndToken().next; 1759 return uri.getEndToken().next;
1760 } 1760 }
1761 } 1761 }
1762 1762
1763 class Part extends LibraryTag { 1763 class Part extends LibraryTag {
1764 final LiteralString uri; 1764 final StringNode uri;
1765 1765
1766 final Token partKeyword; 1766 final Token partKeyword;
1767 1767
1768 Part(this.partKeyword, this.uri); 1768 Part(this.partKeyword, this.uri);
1769 1769
1770 bool get isPart => true; 1770 bool get isPart => true;
1771 1771
1772 Part asPart() => this; 1772 Part asPart() => this;
1773 1773
1774 accept(Visitor visitor) => visitor.visitPart(this); 1774 accept(Visitor visitor) => visitor.visitPart(this);
(...skipping 223 matching lines...) Expand 10 before | Expand all | Expand 10 after
1998 * argument). 1998 * argument).
1999 * 1999 *
2000 * TODO(ahe): This method is controversial, the team needs to discuss 2000 * TODO(ahe): This method is controversial, the team needs to discuss
2001 * if top-level methods are acceptable and what naming conventions to 2001 * if top-level methods are acceptable and what naming conventions to
2002 * use. 2002 * use.
2003 */ 2003 */
2004 initializerDo(Node node, f(Node node)) { 2004 initializerDo(Node node, f(Node node)) {
2005 SendSet send = node.asSendSet(); 2005 SendSet send = node.asSendSet();
2006 if (send != null) return f(send.arguments.head); 2006 if (send != null) return f(send.arguments.head);
2007 } 2007 }
OLDNEW
« no previous file with comments | « sdk/lib/_internal/compiler/implementation/scanner/listener.dart ('k') | tests/language/language.status » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698