Chromium Code Reviews| 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 import '../common.dart'; | 7 import '../common.dart'; |
| 8 import '../common/resolution.dart' show Resolution; | 8 import '../common/resolution.dart' show Resolution; |
| 9 import '../compiler.dart' show Compiler; | 9 import '../compiler.dart' show Compiler; |
| 10 import '../constants/constructors.dart'; | 10 import '../constants/constructors.dart'; |
| (...skipping 1082 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1093 * looking at code like "foo.x", we don't have to look for both a | 1093 * looking at code like "foo.x", we don't have to look for both a |
| 1094 * field named "x", a getter named "x", and a setter named "x=". | 1094 * field named "x", a getter named "x", and a setter named "x=". |
| 1095 */ | 1095 */ |
| 1096 abstract class AbstractFieldElement extends Element { | 1096 abstract class AbstractFieldElement extends Element { |
| 1097 GetterElement get getter; | 1097 GetterElement get getter; |
| 1098 SetterElement get setter; | 1098 SetterElement get setter; |
| 1099 } | 1099 } |
| 1100 | 1100 |
| 1101 abstract class FunctionSignature { | 1101 abstract class FunctionSignature { |
| 1102 FunctionType get type; | 1102 FunctionType get type; |
| 1103 List<DartType> get typeVariables; | |
| 1103 List<FormalElement> get requiredParameters; | 1104 List<FormalElement> get requiredParameters; |
| 1104 List<FormalElement> get optionalParameters; | 1105 List<FormalElement> get optionalParameters; |
| 1105 | 1106 |
| 1106 int get requiredParameterCount; | 1107 int get requiredParameterCount; |
| 1107 int get optionalParameterCount; | 1108 int get optionalParameterCount; |
| 1108 bool get optionalParametersAreNamed; | 1109 bool get optionalParametersAreNamed; |
| 1109 bool get hasOptionalParameters; | 1110 bool get hasOptionalParameters; |
| 1110 | 1111 |
| 1111 int get parameterCount; | 1112 int get parameterCount; |
| 1112 List<FormalElement> get orderedOptionalParameters; | 1113 List<FormalElement> get orderedOptionalParameters; |
| 1113 | 1114 |
| 1114 void forEachParameter(void function(FormalElement parameter)); | 1115 void forEachParameter(void function(FormalElement parameter)); |
| 1115 void forEachRequiredParameter(void function(FormalElement parameter)); | 1116 void forEachRequiredParameter(void function(FormalElement parameter)); |
| 1116 void forEachOptionalParameter(void function(FormalElement parameter)); | 1117 void forEachOptionalParameter(void function(FormalElement parameter)); |
| 1117 | 1118 |
| 1118 void orderedForEachParameter(void function(FormalElement parameter)); | 1119 void orderedForEachParameter(void function(FormalElement parameter)); |
| 1119 | 1120 |
| 1120 bool isCompatibleWith(FunctionSignature constructorSignature); | 1121 bool isCompatibleWith(FunctionSignature constructorSignature); |
| 1121 } | 1122 } |
| 1122 | 1123 |
| 1123 /// A top level, static or instance method, constructor, local function, or | 1124 /// A top level, static or instance method, constructor, local function, or |
| 1124 /// closure (anonymous local function). | 1125 /// closure (anonymous local function). |
| 1125 abstract class FunctionElement extends Element | 1126 abstract class FunctionElement extends Element |
| 1126 implements | 1127 implements |
| 1127 AstElement, | 1128 AstElement, |
| 1128 TypedElement, | 1129 TypedElement, |
| 1129 FunctionTypedElement, | 1130 FunctionTypedElement, |
| 1130 ExecutableElement { | 1131 ExecutableElement, |
| 1132 GenericElement { | |
| 1131 FunctionExpression get node; | 1133 FunctionExpression get node; |
| 1132 | 1134 |
| 1133 FunctionElement get patch; | 1135 FunctionElement get patch; |
| 1134 FunctionElement get origin; | 1136 FunctionElement get origin; |
| 1135 | 1137 |
| 1136 bool get hasFunctionSignature; | 1138 bool get hasFunctionSignature; |
| 1137 | 1139 |
| 1138 /// The parameters of this functions. | 1140 /// The parameters of this function. |
| 1139 List<ParameterElement> get parameters; | 1141 List<ParameterElement> get parameters; |
| 1140 | 1142 |
| 1141 /// The type of this function. | 1143 /// The type of this function. |
| 1142 FunctionType get type; | 1144 FunctionType get type; |
| 1143 | 1145 |
| 1144 /// The synchronous/asynchronous marker on this function. | 1146 /// The synchronous/asynchronous marker on this function. |
| 1145 AsyncMarker get asyncMarker; | 1147 AsyncMarker get asyncMarker; |
| 1146 | 1148 |
| 1147 /// `true` if this function is external. | 1149 /// `true` if this function is external. |
| 1148 bool get isExternal; | 1150 bool get isExternal; |
| (...skipping 159 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1308 @deprecated | 1310 @deprecated |
| 1309 get enclosingElement; | 1311 get enclosingElement; |
| 1310 } | 1312 } |
| 1311 | 1313 |
| 1312 /// JavaScript backend specific element for the body of constructor. | 1314 /// JavaScript backend specific element for the body of constructor. |
| 1313 // TODO(johnniwinther): Remove this class from the element model. | 1315 // TODO(johnniwinther): Remove this class from the element model. |
| 1314 abstract class ConstructorBodyElement extends MethodElement { | 1316 abstract class ConstructorBodyElement extends MethodElement { |
| 1315 FunctionElement get constructor; | 1317 FunctionElement get constructor; |
| 1316 } | 1318 } |
| 1317 | 1319 |
| 1320 /// [GenericElement] defines the common interface for generic functions and | |
| 1321 /// [TypeDeclarationElement]. | |
| 1322 abstract class GenericElement extends Element implements AstElement { | |
| 1323 /** | |
| 1324 * The type variables declared on this declaration. The type variables are not | |
| 1325 * available until the type of the element has been computed through | |
| 1326 * [computeType]. | |
| 1327 */ | |
| 1328 List<DartType> get typeVariables; | |
| 1329 } | |
| 1330 | |
| 1318 /// [TypeDeclarationElement] defines the common interface for class/interface | 1331 /// [TypeDeclarationElement] defines the common interface for class/interface |
| 1319 /// declarations and typedefs. | 1332 /// declarations and typedefs. |
| 1320 abstract class TypeDeclarationElement extends Element implements AstElement { | 1333 abstract class TypeDeclarationElement extends GenericElement { |
| 1321 /// The name of this type declaration, taking privacy into account. | 1334 /// The name of this type declaration, taking privacy into account. |
| 1322 Name get memberName; | 1335 Name get memberName; |
| 1323 | 1336 |
| 1324 /// Do not use [computeType] outside of the resolver; instead retrieve the | 1337 /// Do not use [computeType] outside of the resolver; instead retrieve the |
| 1325 /// type from the [thisType] or [rawType], depending on the use case. | 1338 /// type from the [thisType] or [rawType], depending on the use case. |
| 1326 /// | 1339 /// |
| 1327 /// Trying to access a type that has not been computed in resolution is an | 1340 /// Trying to access a type that has not been computed in resolution is an |
| 1328 /// error and calling [computeType] covers that error. | 1341 /// error and calling [computeType] covers that error. |
| 1329 /// This method will go away! | 1342 /// This method will go away! |
| 1330 @deprecated | 1343 @deprecated |
| (...skipping 21 matching lines...) Expand all Loading... | |
| 1352 * The [rawType] field is a canonicalization of the raw type and should be | 1365 * The [rawType] field is a canonicalization of the raw type and should be |
| 1353 * used to distinguish explicit and implicit uses of the [dynamic] | 1366 * used to distinguish explicit and implicit uses of the [dynamic] |
| 1354 * type arguments. For instance should [:List:] be the [rawType] of the | 1367 * type arguments. For instance should [:List:] be the [rawType] of the |
| 1355 * [:List:] class element whereas [:List<dynamic>:] should be its own | 1368 * [:List:] class element whereas [:List<dynamic>:] should be its own |
| 1356 * instantiation of [InterfaceType] with [:dynamic:] as type argument. Using | 1369 * instantiation of [InterfaceType] with [:dynamic:] as type argument. Using |
| 1357 * this distinction, we can print the raw type with type arguments only when | 1370 * this distinction, we can print the raw type with type arguments only when |
| 1358 * the input source has used explicit type arguments. | 1371 * the input source has used explicit type arguments. |
| 1359 */ | 1372 */ |
| 1360 GenericType get rawType; | 1373 GenericType get rawType; |
| 1361 | 1374 |
| 1362 /** | |
| 1363 * The type variables declared on this declaration. The type variables are not | |
| 1364 * available until the type of the element has been computed through | |
| 1365 * [computeType]. | |
| 1366 */ | |
| 1367 List<DartType> get typeVariables; | |
| 1368 | |
| 1369 bool get isResolved; | 1375 bool get isResolved; |
| 1370 | 1376 |
| 1371 void ensureResolved(Resolution resolution); | 1377 void ensureResolved(Resolution resolution); |
| 1372 } | 1378 } |
| 1373 | 1379 |
| 1374 abstract class ClassElement extends TypeDeclarationElement | 1380 abstract class ClassElement extends TypeDeclarationElement |
| 1375 implements ScopeContainerElement { | 1381 implements ScopeContainerElement { |
| 1376 /// The length of the longest inheritance path from [:Object:]. | 1382 /// The length of the longest inheritance path from [:Object:]. |
| 1377 int get hierarchyDepth; | 1383 int get hierarchyDepth; |
| 1378 | 1384 |
| (...skipping 176 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1555 /// The [Element] for a type variable declaration on a generic class or typedef. | 1561 /// The [Element] for a type variable declaration on a generic class or typedef. |
| 1556 abstract class TypeVariableElement extends Element | 1562 abstract class TypeVariableElement extends Element |
| 1557 implements AstElement, TypedElement { | 1563 implements AstElement, TypedElement { |
| 1558 /// The name of this type variable, taking privacy into account. | 1564 /// The name of this type variable, taking privacy into account. |
| 1559 Name get memberName; | 1565 Name get memberName; |
| 1560 | 1566 |
| 1561 /// Use [typeDeclaration] instead. | 1567 /// Use [typeDeclaration] instead. |
| 1562 @deprecated | 1568 @deprecated |
| 1563 get enclosingElement; | 1569 get enclosingElement; |
| 1564 | 1570 |
| 1565 /// The class or typedef on which this type variable is defined. | 1571 /// The class, typedef, function, or method on which this type variable is |
|
Johnni Winther
2016/04/29 07:21:06
or function typed parameter
eernst
2016/04/29 13:24:50
Done.
| |
| 1566 TypeDeclarationElement get typeDeclaration; | 1572 /// defined. |
| 1573 GenericElement get typeDeclaration; | |
| 1567 | 1574 |
| 1568 /// The index of this type variable within its type declaration. | 1575 /// The index of this type variable within its type declaration. |
| 1569 int get index; | 1576 int get index; |
| 1570 | 1577 |
| 1571 /// The [type] defined by the type variable. | 1578 /// The [type] defined by the type variable. |
| 1572 TypeVariableType get type; | 1579 TypeVariableType get type; |
| 1573 | 1580 |
| 1574 /// The upper bound on the type variable. If not explicitly declared, this is | 1581 /// The upper bound on the type variable. If not explicitly declared, this is |
| 1575 /// `Object`. | 1582 /// `Object`. |
| 1576 DartType get bound; | 1583 DartType get bound; |
| (...skipping 21 matching lines...) Expand all Loading... | |
| 1598 /// Trying to access a type that has not been computed in resolution is an | 1605 /// Trying to access a type that has not been computed in resolution is an |
| 1599 /// error and calling [computeType] covers that error. | 1606 /// error and calling [computeType] covers that error. |
| 1600 /// This method will go away! | 1607 /// This method will go away! |
| 1601 @deprecated | 1608 @deprecated |
| 1602 DartType computeType(Resolution resolution); | 1609 DartType computeType(Resolution resolution); |
| 1603 | 1610 |
| 1604 DartType get type; | 1611 DartType get type; |
| 1605 } | 1612 } |
| 1606 | 1613 |
| 1607 /// An [Element] that can define a function type. | 1614 /// An [Element] that can define a function type. |
| 1608 abstract class FunctionTypedElement extends Element { | 1615 abstract class FunctionTypedElement extends Element implements GenericElement { |
| 1609 /// The function signature for the function type defined by this element, | 1616 /// The function signature for the function type defined by this element, |
| 1610 /// if any. | 1617 /// if any. |
| 1611 FunctionSignature get functionSignature; | 1618 FunctionSignature get functionSignature; |
| 1612 } | 1619 } |
| 1613 | 1620 |
| 1614 /// An [Element] that holds a [TreeElements] mapping. | 1621 /// An [Element] that holds a [TreeElements] mapping. |
| 1615 abstract class AnalyzableElement extends Element { | 1622 abstract class AnalyzableElement extends Element { |
| 1616 /// Return `true` if [treeElements] have been (partially) computed for this | 1623 /// Return `true` if [treeElements] have been (partially) computed for this |
| 1617 /// element. | 1624 /// element. |
| 1618 bool get hasTreeElements; | 1625 bool get hasTreeElements; |
| (...skipping 175 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1794 /// by a field. | 1801 /// by a field. |
| 1795 bool get isDeclaredByField; | 1802 bool get isDeclaredByField; |
| 1796 | 1803 |
| 1797 /// Returns `true` if this member is abstract. | 1804 /// Returns `true` if this member is abstract. |
| 1798 bool get isAbstract; | 1805 bool get isAbstract; |
| 1799 | 1806 |
| 1800 /// If abstract, [implementation] points to the overridden concrete member, | 1807 /// If abstract, [implementation] points to the overridden concrete member, |
| 1801 /// if any. Otherwise [implementation] points to the member itself. | 1808 /// if any. Otherwise [implementation] points to the member itself. |
| 1802 Member get implementation; | 1809 Member get implementation; |
| 1803 } | 1810 } |
| OLD | NEW |