| OLD | NEW |
| 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 1697 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1708 return new LibraryName(tag.token, argument); | 1708 return new LibraryName(tag.token, argument); |
| 1709 } else if (isSource()) { | 1709 } else if (isSource()) { |
| 1710 return new Part(tag.token, argument); | 1710 return new Part(tag.token, argument); |
| 1711 } else { | 1711 } else { |
| 1712 throw 'Unknown script tag ${tag.token.slowToString()}'; | 1712 throw 'Unknown script tag ${tag.token.slowToString()}'; |
| 1713 } | 1713 } |
| 1714 } | 1714 } |
| 1715 } | 1715 } |
| 1716 | 1716 |
| 1717 abstract class LibraryTag extends Node { | 1717 abstract class LibraryTag extends Node { |
| 1718 final Link<MetadataAnnotation> metadata; |
| 1719 |
| 1720 LibraryTag(this.metadata); |
| 1721 |
| 1718 bool get isLibraryName => false; | 1722 bool get isLibraryName => false; |
| 1719 bool get isImport => false; | 1723 bool get isImport => false; |
| 1720 bool get isExport => false; | 1724 bool get isExport => false; |
| 1721 bool get isPart => false; | 1725 bool get isPart => false; |
| 1722 bool get isPartOf => false; | 1726 bool get isPartOf => false; |
| 1723 } | 1727 } |
| 1724 | 1728 |
| 1725 class LibraryName extends LibraryTag { | 1729 class LibraryName extends LibraryTag { |
| 1726 final Expression name; | 1730 final Expression name; |
| 1727 | 1731 |
| 1728 final Token libraryKeyword; | 1732 final Token libraryKeyword; |
| 1729 | 1733 |
| 1730 LibraryName(this.libraryKeyword, this.name); | 1734 LibraryName(this.libraryKeyword, |
| 1735 this.name, |
| 1736 Link<MetadataAnnotation> metadata) |
| 1737 : super(metadata); |
| 1731 | 1738 |
| 1732 bool get isLibraryName => true; | 1739 bool get isLibraryName => true; |
| 1733 | 1740 |
| 1734 LibraryName asLibraryName() => this; | 1741 LibraryName asLibraryName() => this; |
| 1735 | 1742 |
| 1736 accept(Visitor visitor) => visitor.visitLibraryName(this); | 1743 accept(Visitor visitor) => visitor.visitLibraryName(this); |
| 1737 | 1744 |
| 1738 visitChildren(Visitor visitor) => name.accept(visitor); | 1745 visitChildren(Visitor visitor) => name.accept(visitor); |
| 1739 | 1746 |
| 1740 Token getBeginToken() => libraryKeyword; | 1747 Token getBeginToken() => libraryKeyword; |
| 1741 | 1748 |
| 1742 Token getEndToken() => name.getEndToken().next; | 1749 Token getEndToken() => name.getEndToken().next; |
| 1743 } | 1750 } |
| 1744 | 1751 |
| 1745 /** | 1752 /** |
| 1746 * This tag describes a dependency between one library and the exported | 1753 * This tag describes a dependency between one library and the exported |
| 1747 * identifiers of another library. The other library is specified by the [uri]. | 1754 * identifiers of another library. The other library is specified by the [uri]. |
| 1748 * Combinators filter away some identifiers from the other library. | 1755 * Combinators filter away some identifiers from the other library. |
| 1749 */ | 1756 */ |
| 1750 abstract class LibraryDependency extends LibraryTag { | 1757 abstract class LibraryDependency extends LibraryTag { |
| 1751 final StringNode uri; | 1758 final StringNode uri; |
| 1752 final NodeList combinators; | 1759 final NodeList combinators; |
| 1753 | 1760 |
| 1754 LibraryDependency(this.uri, this.combinators); | 1761 LibraryDependency(this.uri, |
| 1762 this.combinators, |
| 1763 Link<MetadataAnnotation> metadata) |
| 1764 : super(metadata); |
| 1755 } | 1765 } |
| 1756 | 1766 |
| 1757 /** | 1767 /** |
| 1758 * An [:import:] library tag. | 1768 * An [:import:] library tag. |
| 1759 * | 1769 * |
| 1760 * An import tag is dependency on another library where the exported identifiers | 1770 * An import tag is dependency on another library where the exported identifiers |
| 1761 * are put into the import scope of the importing library. The import scope is | 1771 * are put into the import scope of the importing library. The import scope is |
| 1762 * only visible inside the library. | 1772 * only visible inside the library. |
| 1763 */ | 1773 */ |
| 1764 class Import extends LibraryDependency { | 1774 class Import extends LibraryDependency { |
| 1765 final Identifier prefix; | 1775 final Identifier prefix; |
| 1766 final Token importKeyword; | 1776 final Token importKeyword; |
| 1767 | 1777 |
| 1768 Import(this.importKeyword, StringNode uri, | 1778 Import(this.importKeyword, StringNode uri, |
| 1769 this.prefix, NodeList combinators) | 1779 this.prefix, NodeList combinators, |
| 1770 : super(uri, combinators); | 1780 Link<MetadataAnnotation> metadata) |
| 1781 : super(uri, combinators, metadata); |
| 1771 | 1782 |
| 1772 bool get isImport => true; | 1783 bool get isImport => true; |
| 1773 | 1784 |
| 1774 Import asImport() => this; | 1785 Import asImport() => this; |
| 1775 | 1786 |
| 1776 Token get asKeyword => prefix == null ? null : uri.getEndToken().next; | 1787 Token get asKeyword => prefix == null ? null : uri.getEndToken().next; |
| 1777 | 1788 |
| 1778 accept(Visitor visitor) => visitor.visitImport(this); | 1789 accept(Visitor visitor) => visitor.visitImport(this); |
| 1779 | 1790 |
| 1780 visitChildren(Visitor visitor) { | 1791 visitChildren(Visitor visitor) { |
| (...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1822 if (combinators != null) return combinators.getEndToken().next; | 1833 if (combinators != null) return combinators.getEndToken().next; |
| 1823 return uri.getEndToken().next; | 1834 return uri.getEndToken().next; |
| 1824 } | 1835 } |
| 1825 } | 1836 } |
| 1826 | 1837 |
| 1827 class Part extends LibraryTag { | 1838 class Part extends LibraryTag { |
| 1828 final StringNode uri; | 1839 final StringNode uri; |
| 1829 | 1840 |
| 1830 final Token partKeyword; | 1841 final Token partKeyword; |
| 1831 | 1842 |
| 1832 Part(this.partKeyword, this.uri); | 1843 Part(this.partKeyword, this.uri, Link<MetadataAnnotation> metadata) |
| 1844 : super(metadata); |
| 1833 | 1845 |
| 1834 bool get isPart => true; | 1846 bool get isPart => true; |
| 1835 | 1847 |
| 1836 Part asPart() => this; | 1848 Part asPart() => this; |
| 1837 | 1849 |
| 1838 accept(Visitor visitor) => visitor.visitPart(this); | 1850 accept(Visitor visitor) => visitor.visitPart(this); |
| 1839 | 1851 |
| 1840 visitChildren(Visitor visitor) => uri.accept(visitor); | 1852 visitChildren(Visitor visitor) => uri.accept(visitor); |
| 1841 | 1853 |
| 1842 Token getBeginToken() => partKeyword; | 1854 Token getBeginToken() => partKeyword; |
| 1843 | 1855 |
| 1844 Token getEndToken() => uri.getEndToken().next; | 1856 Token getEndToken() => uri.getEndToken().next; |
| 1845 } | 1857 } |
| 1846 | 1858 |
| 1847 class PartOf extends Node { | 1859 class PartOf extends Node { |
| 1848 final Expression name; | 1860 final Expression name; |
| 1849 | 1861 |
| 1850 final Token partKeyword; | 1862 final Token partKeyword; |
| 1851 | 1863 |
| 1852 PartOf(this.partKeyword, this.name); | 1864 final Link<MetadataAnnotation> metadata; |
| 1865 |
| 1866 PartOf(this.partKeyword, this.name, this.metadata); |
| 1853 | 1867 |
| 1854 Token get ofKeyword => partKeyword.next; | 1868 Token get ofKeyword => partKeyword.next; |
| 1855 | 1869 |
| 1856 bool get isPartOf => true; | 1870 bool get isPartOf => true; |
| 1857 | 1871 |
| 1858 PartOf asPartOf() => this; | 1872 PartOf asPartOf() => this; |
| 1859 | 1873 |
| 1860 accept(Visitor visitor) => visitor.visitPartOf(this); | 1874 accept(Visitor visitor) => visitor.visitPartOf(this); |
| 1861 | 1875 |
| 1862 visitChildren(Visitor visitor) => name.accept(visitor); | 1876 visitChildren(Visitor visitor) => name.accept(visitor); |
| (...skipping 199 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2062 * argument). | 2076 * argument). |
| 2063 * | 2077 * |
| 2064 * TODO(ahe): This method is controversial, the team needs to discuss | 2078 * TODO(ahe): This method is controversial, the team needs to discuss |
| 2065 * if top-level methods are acceptable and what naming conventions to | 2079 * if top-level methods are acceptable and what naming conventions to |
| 2066 * use. | 2080 * use. |
| 2067 */ | 2081 */ |
| 2068 initializerDo(Node node, f(Node node)) { | 2082 initializerDo(Node node, f(Node node)) { |
| 2069 SendSet send = node.asSendSet(); | 2083 SendSet send = node.asSendSet(); |
| 2070 if (send != null) return f(send.arguments.head); | 2084 if (send != null) return f(send.arguments.head); |
| 2071 } | 2085 } |
| OLD | NEW |