| 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 library elements; | 5 library elements; |
| 6 | 6 |
| 7 | 7 |
| 8 import '../constants/expressions.dart'; | 8 import '../constants/expressions.dart'; |
| 9 import '../tree/tree.dart'; | 9 import '../tree/tree.dart'; |
| 10 import '../util/util.dart'; | 10 import '../util/util.dart'; |
| (...skipping 393 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 404 | 404 |
| 405 bool get isSynthesized; | 405 bool get isSynthesized; |
| 406 bool get isMixinApplication; | 406 bool get isMixinApplication; |
| 407 | 407 |
| 408 bool get hasFixedBackendName; | 408 bool get hasFixedBackendName; |
| 409 String get fixedBackendName; | 409 String get fixedBackendName; |
| 410 | 410 |
| 411 bool get isAbstract; | 411 bool get isAbstract; |
| 412 bool isForeign(Backend backend); | 412 bool isForeign(Backend backend); |
| 413 | 413 |
| 414 void addMetadata(MetadataAnnotation annotation); | |
| 415 void setNative(String name); | |
| 416 | |
| 417 Scope buildScope(); | 414 Scope buildScope(); |
| 418 | 415 |
| 419 void diagnose(Element context, DiagnosticListener listener); | 416 void diagnose(Element context, DiagnosticListener listener); |
| 420 | 417 |
| 421 // TODO(johnniwinther): Move this to [AstElement]. | 418 // TODO(johnniwinther): Move this to [AstElement]. |
| 422 /// Returns the [Element] that holds the [TreeElements] for this element. | 419 /// Returns the [Element] that holds the [TreeElements] for this element. |
| 423 AnalyzableElement get analyzableElement; | 420 AnalyzableElement get analyzableElement; |
| 424 | 421 |
| 425 accept(ElementVisitor visitor, arg); | 422 accept(ElementVisitor visitor, arg); |
| 426 } | 423 } |
| (...skipping 406 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 833 | 830 |
| 834 // TODO(kasperl): This probably shouldn't be called an element. It's | 831 // TODO(kasperl): This probably shouldn't be called an element. It's |
| 835 // just an interface shared by classes and libraries. | 832 // just an interface shared by classes and libraries. |
| 836 abstract class ScopeContainerElement implements Element { | 833 abstract class ScopeContainerElement implements Element { |
| 837 Element localLookup(String elementName); | 834 Element localLookup(String elementName); |
| 838 | 835 |
| 839 void forEachLocalMember(f(Element element)); | 836 void forEachLocalMember(f(Element element)); |
| 840 } | 837 } |
| 841 | 838 |
| 842 abstract class CompilationUnitElement extends Element { | 839 abstract class CompilationUnitElement extends Element { |
| 840 /// Use [library] instead. |
| 841 @deprecated |
| 842 get enclosingElement; |
| 843 |
| 843 Script get script; | 844 Script get script; |
| 844 PartOf get partTag; | 845 PartOf get partTag; |
| 845 | 846 |
| 846 void forEachLocalMember(f(Element element)); | 847 void forEachLocalMember(f(Element element)); |
| 847 void addMember(Element element, DiagnosticListener listener); | |
| 848 void setPartOf(PartOf tag, DiagnosticListener listener); | |
| 849 bool get hasMembers; | 848 bool get hasMembers; |
| 850 | 849 |
| 851 int compareTo(CompilationUnitElement other); | 850 int compareTo(CompilationUnitElement other); |
| 852 } | 851 } |
| 853 | 852 |
| 854 abstract class LibraryElement extends Element | 853 abstract class LibraryElement extends Element |
| 855 implements ScopeContainerElement, AnalyzableElement { | 854 implements ScopeContainerElement, AnalyzableElement { |
| 856 /** | 855 /** |
| 857 * The canonical uri for this library. | 856 * The canonical uri for this library. |
| 858 * | 857 * |
| (...skipping 21 matching lines...) Expand all Loading... |
| 880 * [:true:] if this library is from a package, that is, its canonical uri has | 879 * [:true:] if this library is from a package, that is, its canonical uri has |
| 881 * the scheme 'package'. | 880 * the scheme 'package'. |
| 882 */ | 881 */ |
| 883 bool get isPackageLibrary; | 882 bool get isPackageLibrary; |
| 884 | 883 |
| 885 /** | 884 /** |
| 886 * [:true:] if this library is a platform library whose path starts with | 885 * [:true:] if this library is a platform library whose path starts with |
| 887 * an underscore. | 886 * an underscore. |
| 888 */ | 887 */ |
| 889 bool get isInternalLibrary; | 888 bool get isInternalLibrary; |
| 889 |
| 890 bool get canUseNative; | 890 bool get canUseNative; |
| 891 bool get exportsHandled; | 891 bool get exportsHandled; |
| 892 | 892 |
| 893 // TODO(kasperl): We should try to get rid of these. | |
| 894 void set libraryTag(LibraryName value); | |
| 895 | |
| 896 LibraryElement get implementation; | 893 LibraryElement get implementation; |
| 897 | 894 |
| 898 void addCompilationUnit(CompilationUnitElement element); | |
| 899 void addTag(LibraryTag tag, DiagnosticListener listener); | |
| 900 void addImport(Element element, Import import, DiagnosticListener listener); | |
| 901 | |
| 902 /// Record which element an import or export tag resolved to. | |
| 903 /// (Belongs on builder object). | |
| 904 void recordResolvedTag(LibraryDependency tag, LibraryElement library); | |
| 905 | |
| 906 /// Return the library element corresponding to an import or export. | 895 /// Return the library element corresponding to an import or export. |
| 907 LibraryElement getLibraryFromTag(LibraryDependency tag); | 896 LibraryElement getLibraryFromTag(LibraryDependency tag); |
| 908 | 897 |
| 909 void addMember(Element element, DiagnosticListener listener); | |
| 910 void addToScope(Element element, DiagnosticListener listener); | |
| 911 | |
| 912 // TODO(kasperl): Get rid of this method. | |
| 913 Iterable<Element> getNonPrivateElementsInScope(); | |
| 914 | |
| 915 void setExports(Iterable<Element> exportedElements); | |
| 916 | |
| 917 Element find(String elementName); | 898 Element find(String elementName); |
| 918 Element findLocal(String elementName); | 899 Element findLocal(String elementName); |
| 919 Element findExported(String elementName); | 900 Element findExported(String elementName); |
| 920 void forEachExport(f(Element element)); | 901 void forEachExport(f(Element element)); |
| 921 | 902 |
| 922 /// Returns the imports that import element into this library. | 903 /// Returns the imports that import element into this library. |
| 923 Link<Import> getImportsFor(Element element); | 904 Link<Import> getImportsFor(Element element); |
| 924 | 905 |
| 925 bool hasLibraryName(); | 906 bool hasLibraryName(); |
| 926 String getLibraryName(); | 907 String getLibraryName(); |
| (...skipping 205 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1132 abstract class FunctionElement extends Element | 1113 abstract class FunctionElement extends Element |
| 1133 implements AstElement, | 1114 implements AstElement, |
| 1134 TypedElement, | 1115 TypedElement, |
| 1135 FunctionTypedElement, | 1116 FunctionTypedElement, |
| 1136 ExecutableElement { | 1117 ExecutableElement { |
| 1137 FunctionExpression get node; | 1118 FunctionExpression get node; |
| 1138 | 1119 |
| 1139 FunctionElement get patch; | 1120 FunctionElement get patch; |
| 1140 FunctionElement get origin; | 1121 FunctionElement get origin; |
| 1141 | 1122 |
| 1142 /// Used to retrieve a link to the abstract field element representing this | |
| 1143 /// element. | |
| 1144 AbstractFieldElement get abstractField; | |
| 1145 | |
| 1146 /// Do not use [computeSignature] outside of the resolver; instead retrieve | 1123 /// Do not use [computeSignature] outside of the resolver; instead retrieve |
| 1147 /// the signature through the [functionSignature] field. | 1124 /// the signature through the [functionSignature] field. |
| 1148 /// Trying to access a function signature that has not been computed in | 1125 /// Trying to access a function signature that has not been computed in |
| 1149 /// resolution is an error and calling [computeSignature] covers that error. | 1126 /// resolution is an error and calling [computeSignature] covers that error. |
| 1150 /// This method will go away! | 1127 /// This method will go away! |
| 1151 // TODO(johnniwinther): Rename to `ensureFunctionSignature`. | 1128 // TODO(johnniwinther): Rename to `ensureFunctionSignature`. |
| 1152 @deprecated FunctionSignature computeSignature(Compiler compiler); | 1129 @deprecated FunctionSignature computeSignature(Compiler compiler); |
| 1153 | 1130 |
| 1154 bool get hasFunctionSignature; | 1131 bool get hasFunctionSignature; |
| 1155 | 1132 |
| 1156 /// The parameters of this functions. | 1133 /// The parameters of this functions. |
| 1157 List<ParameterElement> get parameters; | 1134 List<ParameterElement> get parameters; |
| 1158 | 1135 |
| 1159 /// The type of this function. | 1136 /// The type of this function. |
| 1160 FunctionType get type; | 1137 FunctionType get type; |
| 1161 | 1138 |
| 1162 /// The synchronous/asynchronous marker on this function. | 1139 /// The synchronous/asynchronous marker on this function. |
| 1163 AsyncMarker get asyncMarker; | 1140 AsyncMarker get asyncMarker; |
| 1164 | 1141 |
| 1165 /// `true` if this function is external. | 1142 /// `true` if this function is external. |
| 1166 bool get isExternal; | 1143 bool get isExternal; |
| 1167 } | 1144 } |
| 1168 | 1145 |
| 1146 /// A getter or setter. |
| 1147 abstract class AccessorElement extends MethodElement { |
| 1148 /// Used to retrieve a link to the abstract field element representing this |
| 1149 /// element. |
| 1150 AbstractFieldElement get abstractField; |
| 1151 } |
| 1152 |
| 1153 /// A getter. |
| 1154 abstract class GetterElement extends AccessorElement { |
| 1155 /// The setter corresponding to this getter, if any. |
| 1156 SetterElement get setter; |
| 1157 } |
| 1158 |
| 1159 /// A setter. |
| 1160 abstract class SetterElement extends AccessorElement { |
| 1161 /// The getter corresponding to this setter, if any. |
| 1162 GetterElement get getter; |
| 1163 } |
| 1164 |
| 1169 /// Enum for the synchronous/asynchronous function body modifiers. | 1165 /// Enum for the synchronous/asynchronous function body modifiers. |
| 1170 class AsyncMarker { | 1166 class AsyncMarker { |
| 1171 /// The default function body marker. | 1167 /// The default function body marker. |
| 1172 static const AsyncMarker SYNC = const AsyncMarker._(); | 1168 static const AsyncMarker SYNC = const AsyncMarker._(); |
| 1173 | 1169 |
| 1174 /// The `sync*` function body marker. | 1170 /// The `sync*` function body marker. |
| 1175 static const AsyncMarker SYNC_STAR = const AsyncMarker._(isYielding: true); | 1171 static const AsyncMarker SYNC_STAR = const AsyncMarker._(isYielding: true); |
| 1176 | 1172 |
| 1177 /// The `async` function body marker. | 1173 /// The `async` function body marker. |
| 1178 static const AsyncMarker ASYNC = const AsyncMarker._(isAsync: true); | 1174 static const AsyncMarker ASYNC = const AsyncMarker._(isAsync: true); |
| (...skipping 464 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1643 bool get isDeclaredByField; | 1639 bool get isDeclaredByField; |
| 1644 | 1640 |
| 1645 /// Returns `true` if this member is abstract. | 1641 /// Returns `true` if this member is abstract. |
| 1646 bool get isAbstract; | 1642 bool get isAbstract; |
| 1647 | 1643 |
| 1648 /// If abstract, [implementation] points to the overridden concrete member, | 1644 /// If abstract, [implementation] points to the overridden concrete member, |
| 1649 /// if any. Otherwise [implementation] points to the member itself. | 1645 /// if any. Otherwise [implementation] points to the member itself. |
| 1650 Member get implementation; | 1646 Member get implementation; |
| 1651 } | 1647 } |
| 1652 | 1648 |
| OLD | NEW |