OLD | NEW |
1 // This code was auto-generated, is not intended to be edited, and is subject to | 1 // This code was auto-generated, is not intended to be edited, and is subject to |
2 // significant change. Please see the README file for more information. | 2 // significant change. Please see the README file for more information. |
3 library engine.element; | 3 library engine.element; |
4 import 'dart:collection'; | 4 import 'dart:collection'; |
5 import 'java_core.dart'; | 5 import 'java_core.dart'; |
6 import 'java_engine.dart'; | 6 import 'java_engine.dart'; |
7 import 'source.dart'; | 7 import 'source.dart'; |
8 import 'scanner.dart' show Keyword; | 8 import 'scanner.dart' show Keyword; |
9 import 'ast.dart' show Identifier, LibraryIdentifier; | 9 import 'ast.dart' show Identifier, LibraryIdentifier; |
10 import 'sdk.dart' show DartSdk; | 10 import 'sdk.dart' show DartSdk; |
11 import 'html.dart' show XmlTagNode; | 11 import 'html.dart' show XmlTagNode; |
12 import 'engine.dart' show AnalysisContext; | 12 import 'engine.dart' show AnalysisContext; |
13 import 'constant.dart' show EvaluationResultImpl; | 13 import 'constant.dart' show EvaluationResultImpl; |
14 import 'utilities_dart.dart'; | 14 import 'utilities_dart.dart'; |
15 /** | 15 /** |
16 * The interface `ClassElement` defines the behavior of elements that represent
a class. | 16 * The interface `ClassElement` defines the behavior of elements that represent
a class. |
| 17 * |
17 * @coverage dart.engine.element | 18 * @coverage dart.engine.element |
18 */ | 19 */ |
19 abstract class ClassElement implements Element { | 20 abstract class ClassElement implements Element { |
20 | 21 |
21 /** | 22 /** |
22 * Return an array containing all of the accessors (getters and setters) decla
red in this class. | 23 * Return an array containing all of the accessors (getters and setters) decla
red in this class. |
| 24 * |
23 * @return the accessors declared in this class | 25 * @return the accessors declared in this class |
24 */ | 26 */ |
25 List<PropertyAccessorElement> get accessors; | 27 List<PropertyAccessorElement> get accessors; |
26 | 28 |
27 /** | 29 /** |
28 * Return an array containing all the supertypes defined for this class and it
s supertypes. This | 30 * Return an array containing all the supertypes defined for this class and it
s supertypes. This |
29 * includes superclasses, mixins and interfaces. | 31 * includes superclasses, mixins and interfaces. |
| 32 * |
30 * @return all the supertypes of this class, including mixins | 33 * @return all the supertypes of this class, including mixins |
31 */ | 34 */ |
32 List<InterfaceType> get allSupertypes; | 35 List<InterfaceType> get allSupertypes; |
33 | 36 |
34 /** | 37 /** |
35 * Return an array containing all of the constructors declared in this class. | 38 * Return an array containing all of the constructors declared in this class. |
| 39 * |
36 * @return the constructors declared in this class | 40 * @return the constructors declared in this class |
37 */ | 41 */ |
38 List<ConstructorElement> get constructors; | 42 List<ConstructorElement> get constructors; |
39 | 43 |
40 /** | 44 /** |
41 * Return an array containing all of the fields declared in this class. | 45 * Return an array containing all of the fields declared in this class. |
| 46 * |
42 * @return the fields declared in this class | 47 * @return the fields declared in this class |
43 */ | 48 */ |
44 List<FieldElement> get fields; | 49 List<FieldElement> get fields; |
45 | 50 |
46 /** | 51 /** |
47 * Return the element representing the getter with the given name that is decl
ared in this class, | 52 * Return the element representing the getter with the given name that is decl
ared in this class, |
48 * or `null` if this class does not declare a getter with the given name. | 53 * or `null` if this class does not declare a getter with the given name. |
| 54 * |
49 * @param getterName the name of the getter to be returned | 55 * @param getterName the name of the getter to be returned |
50 * @return the getter declared in this class with the given name | 56 * @return the getter declared in this class with the given name |
51 */ | 57 */ |
52 PropertyAccessorElement getGetter(String getterName); | 58 PropertyAccessorElement getGetter(String getterName); |
53 | 59 |
54 /** | 60 /** |
55 * Return an array containing all of the interfaces that are implemented by th
is class. | 61 * Return an array containing all of the interfaces that are implemented by th
is class. |
56 * | 62 * |
57 * <b>Note:</b> Because the element model represents the state of the code, it
is possible for it | 63 * <b>Note:</b> Because the element model represents the state of the code, it
is possible for it |
58 * to be semantically invalid. In particular, it is not safe to assume that th
e inheritance | 64 * to be semantically invalid. In particular, it is not safe to assume that th
e inheritance |
59 * structure of a class does not contain a cycle. Clients that traverse the in
heritance structure | 65 * structure of a class does not contain a cycle. Clients that traverse the in
heritance structure |
60 * must explicitly guard against infinite loops. | 66 * must explicitly guard against infinite loops. |
| 67 * |
61 * @return the interfaces that are implemented by this class | 68 * @return the interfaces that are implemented by this class |
62 */ | 69 */ |
63 List<InterfaceType> get interfaces; | 70 List<InterfaceType> get interfaces; |
64 | 71 |
65 /** | 72 /** |
66 * Return the element representing the method with the given name that is decl
ared in this class, | 73 * Return the element representing the method with the given name that is decl
ared in this class, |
67 * or `null` if this class does not declare a method with the given name. | 74 * or `null` if this class does not declare a method with the given name. |
| 75 * |
68 * @param methodName the name of the method to be returned | 76 * @param methodName the name of the method to be returned |
69 * @return the method declared in this class with the given name | 77 * @return the method declared in this class with the given name |
70 */ | 78 */ |
71 MethodElement getMethod(String methodName); | 79 MethodElement getMethod(String methodName); |
72 | 80 |
73 /** | 81 /** |
74 * Return an array containing all of the methods declared in this class. | 82 * Return an array containing all of the methods declared in this class. |
| 83 * |
75 * @return the methods declared in this class | 84 * @return the methods declared in this class |
76 */ | 85 */ |
77 List<MethodElement> get methods; | 86 List<MethodElement> get methods; |
78 | 87 |
79 /** | 88 /** |
80 * Return an array containing all of the mixins that are applied to the class
being extended in | 89 * Return an array containing all of the mixins that are applied to the class
being extended in |
81 * order to derive the superclass of this class. | 90 * order to derive the superclass of this class. |
82 * | 91 * |
83 * <b>Note:</b> Because the element model represents the state of the code, it
is possible for it | 92 * <b>Note:</b> Because the element model represents the state of the code, it
is possible for it |
84 * to be semantically invalid. In particular, it is not safe to assume that th
e inheritance | 93 * to be semantically invalid. In particular, it is not safe to assume that th
e inheritance |
85 * structure of a class does not contain a cycle. Clients that traverse the in
heritance structure | 94 * structure of a class does not contain a cycle. Clients that traverse the in
heritance structure |
86 * must explicitly guard against infinite loops. | 95 * must explicitly guard against infinite loops. |
| 96 * |
87 * @return the mixins that are applied to derive the superclass of this class | 97 * @return the mixins that are applied to derive the superclass of this class |
88 */ | 98 */ |
89 List<InterfaceType> get mixins; | 99 List<InterfaceType> get mixins; |
90 | 100 |
91 /** | 101 /** |
92 * Return the named constructor declared in this class with the given name, or
`null` if | 102 * Return the named constructor declared in this class with the given name, or
`null` if |
93 * this class does not declare a named constructor with the given name. | 103 * this class does not declare a named constructor with the given name. |
| 104 * |
94 * @param name the name of the constructor to be returned | 105 * @param name the name of the constructor to be returned |
95 * @return the element representing the specified constructor | 106 * @return the element representing the specified constructor |
96 */ | 107 */ |
97 ConstructorElement getNamedConstructor(String name); | 108 ConstructorElement getNamedConstructor(String name); |
98 | 109 |
99 /** | 110 /** |
100 * Return the element representing the setter with the given name that is decl
ared in this class, | 111 * Return the element representing the setter with the given name that is decl
ared in this class, |
101 * or `null` if this class does not declare a setter with the given name. | 112 * or `null` if this class does not declare a setter with the given name. |
| 113 * |
102 * @param setterName the name of the getter to be returned | 114 * @param setterName the name of the getter to be returned |
103 * @return the setter declared in this class with the given name | 115 * @return the setter declared in this class with the given name |
104 */ | 116 */ |
105 PropertyAccessorElement getSetter(String setterName); | 117 PropertyAccessorElement getSetter(String setterName); |
106 | 118 |
107 /** | 119 /** |
108 * Return the superclass of this class, or `null` if the class represents the
class | 120 * Return the superclass of this class, or `null` if the class represents the
class |
109 * 'Object'. All other classes will have a non-`null` superclass. If the super
class was not | 121 * 'Object'. All other classes will have a non-`null` superclass. If the super
class was not |
110 * explicitly declared then the implicit superclass 'Object' will be returned. | 122 * explicitly declared then the implicit superclass 'Object' will be returned. |
111 * | 123 * |
112 * <b>Note:</b> Because the element model represents the state of the code, it
is possible for it | 124 * <b>Note:</b> Because the element model represents the state of the code, it
is possible for it |
113 * to be semantically invalid. In particular, it is not safe to assume that th
e inheritance | 125 * to be semantically invalid. In particular, it is not safe to assume that th
e inheritance |
114 * structure of a class does not contain a cycle. Clients that traverse the in
heritance structure | 126 * structure of a class does not contain a cycle. Clients that traverse the in
heritance structure |
115 * must explicitly guard against infinite loops. | 127 * must explicitly guard against infinite loops. |
| 128 * |
116 * @return the superclass of this class | 129 * @return the superclass of this class |
117 */ | 130 */ |
118 InterfaceType get supertype; | 131 InterfaceType get supertype; |
119 | 132 |
120 /** | 133 /** |
121 * Return the type defined by the class. | 134 * Return the type defined by the class. |
| 135 * |
122 * @return the type defined by the class | 136 * @return the type defined by the class |
123 */ | 137 */ |
124 InterfaceType get type; | 138 InterfaceType get type; |
125 | 139 |
126 /** | 140 /** |
127 * Return an array containing all of the type variables declared for this clas
s. | 141 * Return an array containing all of the type variables declared for this clas
s. |
| 142 * |
128 * @return the type variables declared for this class | 143 * @return the type variables declared for this class |
129 */ | 144 */ |
130 List<TypeVariableElement> get typeVariables; | 145 List<TypeVariableElement> get typeVariables; |
131 | 146 |
132 /** | 147 /** |
133 * Return the unnamed constructor declared in this class, or `null` if this cl
ass does not | 148 * Return the unnamed constructor declared in this class, or `null` if this cl
ass does not |
134 * declare an unnamed constructor but does declare named constructors. The ret
urned constructor | 149 * declare an unnamed constructor but does declare named constructors. The ret
urned constructor |
135 * will be synthetic if this class does not declare any constructors, in which
case it will | 150 * will be synthetic if this class does not declare any constructors, in which
case it will |
136 * represent the default constructor for the class. | 151 * represent the default constructor for the class. |
| 152 * |
137 * @return the unnamed constructor defined in this class | 153 * @return the unnamed constructor defined in this class |
138 */ | 154 */ |
139 ConstructorElement get unnamedConstructor; | 155 ConstructorElement get unnamedConstructor; |
140 | 156 |
141 /** | 157 /** |
142 * Return `true` if this class has (implicit or explicit) default constructor. | |
143 * @return `true` if this class has (implicit or explicit) default constructor | |
144 */ | |
145 bool hasDefaultConstructor(); | |
146 | |
147 /** | |
148 * Return `true` if this class or its superclass declares a non-final instance
field. | 158 * Return `true` if this class or its superclass declares a non-final instance
field. |
| 159 * |
149 * @return `true` if this class or its superclass declares a non-final instanc
e field | 160 * @return `true` if this class or its superclass declares a non-final instanc
e field |
150 */ | 161 */ |
151 bool hasNonFinalField(); | 162 bool hasNonFinalField(); |
152 | 163 |
153 /** | 164 /** |
154 * Return `true` if this class has reference to super (so, for example, cannot
be used as a | 165 * Return `true` if this class has reference to super (so, for example, cannot
be used as a |
155 * mixin). | 166 * mixin). |
| 167 * |
156 * @return `true` if this class has reference to super | 168 * @return `true` if this class has reference to super |
157 */ | 169 */ |
158 bool hasReferenceToSuper(); | 170 bool hasReferenceToSuper(); |
159 | 171 |
160 /** | 172 /** |
161 * Return `true` if this class is abstract. A class is abstract if it has an e
xplicit`abstract` modifier. Note, that this definition of <i>abstract</i> is dif
ferent from | 173 * Return `true` if this class is abstract. A class is abstract if it has an e
xplicit |
| 174 * `abstract` modifier. Note, that this definition of <i>abstract</i> is diffe
rent from |
162 * <i>has unimplemented members</i>. | 175 * <i>has unimplemented members</i>. |
| 176 * |
163 * @return `true` if this class is abstract | 177 * @return `true` if this class is abstract |
164 */ | 178 */ |
165 bool get isAbstract; | 179 bool get isAbstract; |
166 | 180 |
167 /** | 181 /** |
168 * Return `true` if this class is defined by a typedef construct. | 182 * Return `true` if this class is defined by a typedef construct. |
| 183 * |
169 * @return `true` if this class is defined by a typedef construct | 184 * @return `true` if this class is defined by a typedef construct |
170 */ | 185 */ |
171 bool get isTypedef; | 186 bool get isTypedef; |
172 | 187 |
173 /** | 188 /** |
174 * Return `true` if this class can validly be used as a mixin when defining an
other class. | 189 * Return `true` if this class can validly be used as a mixin when defining an
other class. |
175 * The behavior of this method is defined by the Dart Language Specification i
n section 9: | 190 * The behavior of this method is defined by the Dart Language Specification i
n section 9: |
176 * <blockquote>It is a compile-time error if a declared or derived mixin refer
s to super. It is a | 191 * <blockquote>It is a compile-time error if a declared or derived mixin refer
s to super. It is a |
177 * compile-time error if a declared or derived mixin explicitly declares a con
structor. It is a | 192 * compile-time error if a declared or derived mixin explicitly declares a con
structor. It is a |
178 * compile-time error if a mixin is derived from a class whose superclass is n
ot | 193 * compile-time error if a mixin is derived from a class whose superclass is n
ot |
179 * Object.</blockquote> | 194 * Object.</blockquote> |
| 195 * |
180 * @return `true` if this class can validly be used as a mixin | 196 * @return `true` if this class can validly be used as a mixin |
181 */ | 197 */ |
182 bool get isValidMixin; | 198 bool get isValidMixin; |
183 | 199 |
184 /** | 200 /** |
185 * Return the element representing the getter that results from looking up the
given getter in | 201 * Return the element representing the getter that results from looking up the
given getter in |
186 * this class with respect to the given library, or `null` if the look up fail
s. The | 202 * this class with respect to the given library, or `null` if the look up fail
s. The |
187 * behavior of this method is defined by the Dart Language Specification in se
ction 12.15.1: | 203 * behavior of this method is defined by the Dart Language Specification in se
ction 12.15.1: |
188 * <blockquote>The result of looking up getter (respectively setter) <i>m</i>
in class <i>C</i> | 204 * <blockquote>The result of looking up getter (respectively setter) <i>m</i>
in class <i>C</i> |
189 * with respect to library <i>L</i> is: | 205 * with respect to library <i>L</i> is: |
190 * | 206 * |
191 * * If <i>C</i> declares an instance getter (respectively setter) named <i>m<
/i> that is | 207 * * If <i>C</i> declares an instance getter (respectively setter) named <i>m<
/i> that is |
192 * accessible to <i>L</i>, then that getter (respectively setter) is the resul
t of the lookup. | 208 * accessible to <i>L</i>, then that getter (respectively setter) is the resul
t of the lookup. |
193 * Otherwise, if <i>C</i> has a superclass <i>S</i>, then the result of the lo
okup is the result | 209 * Otherwise, if <i>C</i> has a superclass <i>S</i>, then the result of the lo
okup is the result |
194 * of looking up getter (respectively setter) <i>m</i> in <i>S</i> with respec
t to <i>L</i>. | 210 * of looking up getter (respectively setter) <i>m</i> in <i>S</i> with respec
t to <i>L</i>. |
195 * Otherwise, we say that the lookup has failed. | 211 * Otherwise, we say that the lookup has failed. |
196 * | 212 * |
197 * </blockquote> | 213 * </blockquote> |
| 214 * |
198 * @param getterName the name of the getter being looked up | 215 * @param getterName the name of the getter being looked up |
199 * @param library the library with respect to which the lookup is being perfor
med | 216 * @param library the library with respect to which the lookup is being perfor
med |
200 * @return the result of looking up the given getter in this class with respec
t to the given | 217 * @return the result of looking up the given getter in this class with respec
t to the given |
201 * library | 218 * library |
202 */ | 219 */ |
203 PropertyAccessorElement lookUpGetter(String getterName, LibraryElement library
); | 220 PropertyAccessorElement lookUpGetter(String getterName, LibraryElement library
); |
204 | 221 |
205 /** | 222 /** |
206 * Return the element representing the method that results from looking up the
given method in | 223 * Return the element representing the method that results from looking up the
given method in |
207 * this class with respect to the given library, or `null` if the look up fail
s. The | 224 * this class with respect to the given library, or `null` if the look up fail
s. The |
208 * behavior of this method is defined by the Dart Language Specification in se
ction 12.15.1: | 225 * behavior of this method is defined by the Dart Language Specification in se
ction 12.15.1: |
209 * <blockquote> The result of looking up method <i>m</i> in class <i>C</i> wit
h respect to library | 226 * <blockquote> The result of looking up method <i>m</i> in class <i>C</i> wit
h respect to library |
210 * <i>L</i> is: | 227 * <i>L</i> is: |
211 * | 228 * |
212 * * If <i>C</i> declares an instance method named <i>m</i> that is accessible
to <i>L</i>, then | 229 * * If <i>C</i> declares an instance method named <i>m</i> that is accessible
to <i>L</i>, then |
213 * that method is the result of the lookup. Otherwise, if <i>C</i> has a super
class <i>S</i>, then | 230 * that method is the result of the lookup. Otherwise, if <i>C</i> has a super
class <i>S</i>, then |
214 * the result of the lookup is the result of looking up method <i>m</i> in <i>
S</i> with respect | 231 * the result of the lookup is the result of looking up method <i>m</i> in <i>
S</i> with respect |
215 * to <i>L</i>. Otherwise, we say that the lookup has failed. | 232 * to <i>L</i>. Otherwise, we say that the lookup has failed. |
216 * | 233 * |
217 * </blockquote> | 234 * </blockquote> |
| 235 * |
218 * @param methodName the name of the method being looked up | 236 * @param methodName the name of the method being looked up |
219 * @param library the library with respect to which the lookup is being perfor
med | 237 * @param library the library with respect to which the lookup is being perfor
med |
220 * @return the result of looking up the given method in this class with respec
t to the given | 238 * @return the result of looking up the given method in this class with respec
t to the given |
221 * library | 239 * library |
222 */ | 240 */ |
223 MethodElement lookUpMethod(String methodName, LibraryElement library); | 241 MethodElement lookUpMethod(String methodName, LibraryElement library); |
224 | 242 |
225 /** | 243 /** |
226 * Return the element representing the setter that results from looking up the
given setter in | 244 * Return the element representing the setter that results from looking up the
given setter in |
227 * this class with respect to the given library, or `null` if the look up fail
s. The | 245 * this class with respect to the given library, or `null` if the look up fail
s. The |
228 * behavior of this method is defined by the Dart Language Specification in se
ction 12.16: | 246 * behavior of this method is defined by the Dart Language Specification in se
ction 12.16: |
229 * <blockquote> The result of looking up getter (respectively setter) <i>m</i>
in class <i>C</i> | 247 * <blockquote> The result of looking up getter (respectively setter) <i>m</i>
in class <i>C</i> |
230 * with respect to library <i>L</i> is: | 248 * with respect to library <i>L</i> is: |
231 * | 249 * |
232 * * If <i>C</i> declares an instance getter (respectively setter) named <i>m<
/i> that is | 250 * * If <i>C</i> declares an instance getter (respectively setter) named <i>m<
/i> that is |
233 * accessible to <i>L</i>, then that getter (respectively setter) is the resul
t of the lookup. | 251 * accessible to <i>L</i>, then that getter (respectively setter) is the resul
t of the lookup. |
234 * Otherwise, if <i>C</i> has a superclass <i>S</i>, then the result of the lo
okup is the result | 252 * Otherwise, if <i>C</i> has a superclass <i>S</i>, then the result of the lo
okup is the result |
235 * of looking up getter (respectively setter) <i>m</i> in <i>S</i> with respec
t to <i>L</i>. | 253 * of looking up getter (respectively setter) <i>m</i> in <i>S</i> with respec
t to <i>L</i>. |
236 * Otherwise, we say that the lookup has failed. | 254 * Otherwise, we say that the lookup has failed. |
237 * | 255 * |
238 * </blockquote> | 256 * </blockquote> |
| 257 * |
239 * @param setterName the name of the setter being looked up | 258 * @param setterName the name of the setter being looked up |
240 * @param library the library with respect to which the lookup is being perfor
med | 259 * @param library the library with respect to which the lookup is being perfor
med |
241 * @return the result of looking up the given setter in this class with respec
t to the given | 260 * @return the result of looking up the given setter in this class with respec
t to the given |
242 * library | 261 * library |
243 */ | 262 */ |
244 PropertyAccessorElement lookUpSetter(String setterName, LibraryElement library
); | 263 PropertyAccessorElement lookUpSetter(String setterName, LibraryElement library
); |
245 } | 264 } |
246 /** | 265 /** |
247 * The interface `ClassMemberElement` defines the behavior of elements that are
contained | 266 * The interface `ClassMemberElement` defines the behavior of elements that are
contained |
248 * within a [ClassElement]. | 267 * within a [ClassElement]. |
249 */ | 268 */ |
250 abstract class ClassMemberElement implements Element { | 269 abstract class ClassMemberElement implements Element { |
251 | 270 |
252 /** | 271 /** |
253 * Return the type in which this member is defined. | 272 * Return the type in which this member is defined. |
| 273 * |
254 * @return the type in which this member is defined | 274 * @return the type in which this member is defined |
255 */ | 275 */ |
256 ClassElement get enclosingElement; | 276 ClassElement get enclosingElement; |
257 } | 277 } |
258 /** | 278 /** |
259 * The interface `CompilationUnitElement` defines the behavior of elements repre
senting a | 279 * The interface `CompilationUnitElement` defines the behavior of elements repre
senting a |
260 * compilation unit. | 280 * compilation unit. |
| 281 * |
261 * @coverage dart.engine.element | 282 * @coverage dart.engine.element |
262 */ | 283 */ |
263 abstract class CompilationUnitElement implements Element, UriReferencedElement { | 284 abstract class CompilationUnitElement implements Element, UriReferencedElement { |
264 | 285 |
265 /** | 286 /** |
266 * Return an array containing all of the top-level accessors (getters and sett
ers) contained in | 287 * Return an array containing all of the top-level accessors (getters and sett
ers) contained in |
267 * this compilation unit. | 288 * this compilation unit. |
| 289 * |
268 * @return the top-level accessors contained in this compilation unit | 290 * @return the top-level accessors contained in this compilation unit |
269 */ | 291 */ |
270 List<PropertyAccessorElement> get accessors; | 292 List<PropertyAccessorElement> get accessors; |
271 | 293 |
272 /** | 294 /** |
273 * Return the library in which this compilation unit is defined. | 295 * Return the library in which this compilation unit is defined. |
| 296 * |
274 * @return the library in which this compilation unit is defined | 297 * @return the library in which this compilation unit is defined |
275 */ | 298 */ |
276 LibraryElement get enclosingElement; | 299 LibraryElement get enclosingElement; |
277 | 300 |
278 /** | 301 /** |
279 * Return an array containing all of the top-level functions contained in this
compilation unit. | 302 * Return an array containing all of the top-level functions contained in this
compilation unit. |
| 303 * |
280 * @return the top-level functions contained in this compilation unit | 304 * @return the top-level functions contained in this compilation unit |
281 */ | 305 */ |
282 List<FunctionElement> get functions; | 306 List<FunctionElement> get functions; |
283 | 307 |
284 /** | 308 /** |
285 * Return an array containing all of the function type aliases contained in th
is compilation unit. | 309 * Return an array containing all of the function type aliases contained in th
is compilation unit. |
| 310 * |
286 * @return the function type aliases contained in this compilation unit | 311 * @return the function type aliases contained in this compilation unit |
287 */ | 312 */ |
288 List<FunctionTypeAliasElement> get functionTypeAliases; | 313 List<FunctionTypeAliasElement> get functionTypeAliases; |
289 | 314 |
290 /** | 315 /** |
291 * Return an array containing all of the top-level variables contained in this
compilation unit. | 316 * Return an array containing all of the top-level variables contained in this
compilation unit. |
| 317 * |
292 * @return the top-level variables contained in this compilation unit | 318 * @return the top-level variables contained in this compilation unit |
293 */ | 319 */ |
294 List<TopLevelVariableElement> get topLevelVariables; | 320 List<TopLevelVariableElement> get topLevelVariables; |
295 | 321 |
296 /** | 322 /** |
297 * Return the class defined in this compilation unit that has the given name,
or `null` if | 323 * Return the class defined in this compilation unit that has the given name,
or `null` if |
298 * this compilation unit does not define a class with the given name. | 324 * this compilation unit does not define a class with the given name. |
| 325 * |
299 * @param className the name of the class to be returned | 326 * @param className the name of the class to be returned |
300 * @return the class with the given name that is defined in this compilation u
nit | 327 * @return the class with the given name that is defined in this compilation u
nit |
301 */ | 328 */ |
302 ClassElement getType(String className); | 329 ClassElement getType(String className); |
303 | 330 |
304 /** | 331 /** |
305 * Return an array containing all of the classes contained in this compilation
unit. | 332 * Return an array containing all of the classes contained in this compilation
unit. |
| 333 * |
306 * @return the classes contained in this compilation unit | 334 * @return the classes contained in this compilation unit |
307 */ | 335 */ |
308 List<ClassElement> get types; | 336 List<ClassElement> get types; |
309 } | 337 } |
310 /** | 338 /** |
311 * The interface `ConstructorElement` defines the behavior of elements represent
ing a | 339 * The interface `ConstructorElement` defines the behavior of elements represent
ing a |
312 * constructor or a factory method defined within a type. | 340 * constructor or a factory method defined within a type. |
| 341 * |
313 * @coverage dart.engine.element | 342 * @coverage dart.engine.element |
314 */ | 343 */ |
315 abstract class ConstructorElement implements ClassMemberElement, ExecutableEleme
nt { | 344 abstract class ConstructorElement implements ClassMemberElement, ExecutableEleme
nt { |
316 | 345 |
317 /** | 346 /** |
318 * Return the constructor to which this constructor is redirecting. | 347 * Return the constructor to which this constructor is redirecting. |
| 348 * |
319 * @return the constructor to which this constructor is redirecting | 349 * @return the constructor to which this constructor is redirecting |
320 */ | 350 */ |
321 ConstructorElement get redirectedConstructor; | 351 ConstructorElement get redirectedConstructor; |
322 | 352 |
323 /** | 353 /** |
324 * Return `true` if this constructor is a const constructor. | 354 * Return `true` if this constructor is a const constructor. |
| 355 * |
325 * @return `true` if this constructor is a const constructor | 356 * @return `true` if this constructor is a const constructor |
326 */ | 357 */ |
327 bool get isConst; | 358 bool get isConst; |
328 | 359 |
329 /** | 360 /** |
330 * Return `true` if this constructor can be used as a default constructor - un
named and has | 361 * Return `true` if this constructor can be used as a default constructor - un
named and has |
331 * no required parameters. | 362 * no required parameters. |
| 363 * |
332 * @return `true` if this constructor can be used as a default constructor. | 364 * @return `true` if this constructor can be used as a default constructor. |
333 */ | 365 */ |
334 bool get isDefaultConstructor; | 366 bool get isDefaultConstructor; |
335 | 367 |
336 /** | 368 /** |
337 * Return `true` if this constructor represents a factory constructor. | 369 * Return `true` if this constructor represents a factory constructor. |
| 370 * |
338 * @return `true` if this constructor represents a factory constructor | 371 * @return `true` if this constructor represents a factory constructor |
339 */ | 372 */ |
340 bool get isFactory; | 373 bool get isFactory; |
341 } | 374 } |
342 /** | 375 /** |
343 * The interface `Element` defines the behavior common to all of the elements in
the element | 376 * The interface `Element` defines the behavior common to all of the elements in
the element |
344 * model. Generally speaking, the element model is a semantic model of the progr
am that represents | 377 * model. Generally speaking, the element model is a semantic model of the progr
am that represents |
345 * things that are declared with a name and hence can be referenced elsewhere in
the code. | 378 * things that are declared with a name and hence can be referenced elsewhere in
the code. |
346 * | 379 * |
347 * There are two exceptions to the general case. First, there are elements in th
e element model that | 380 * There are two exceptions to the general case. First, there are elements in th
e element model that |
348 * are created for the convenience of various kinds of analysis but that do not
have any | 381 * are created for the convenience of various kinds of analysis but that do not
have any |
349 * corresponding declaration within the source code. Such elements are marked as
being | 382 * corresponding declaration within the source code. Such elements are marked as
being |
350 * <i>synthetic</i>. Examples of synthetic elements include | 383 * <i>synthetic</i>. Examples of synthetic elements include |
351 * | 384 * |
352 * * default constructors in classes that do not define any explicit constructor
s, | 385 * * default constructors in classes that do not define any explicit constructor
s, |
353 * * getters and setters that are induced by explicit field declarations, | 386 * * getters and setters that are induced by explicit field declarations, |
354 * * fields that are induced by explicit declarations of getters and setters, an
d | 387 * * fields that are induced by explicit declarations of getters and setters, an
d |
355 * * functions representing the initialization expression for a variable. | 388 * * functions representing the initialization expression for a variable. |
356 * | 389 * |
357 * | 390 * |
358 * Second, there are elements in the element model that do not have a name. Thes
e correspond to | 391 * Second, there are elements in the element model that do not have a name. Thes
e correspond to |
359 * unnamed functions and exist in order to more accurately represent the semanti
c structure of the | 392 * unnamed functions and exist in order to more accurately represent the semanti
c structure of the |
360 * program. | 393 * program. |
| 394 * |
361 * @coverage dart.engine.element | 395 * @coverage dart.engine.element |
362 */ | 396 */ |
363 abstract class Element { | 397 abstract class Element { |
364 | 398 |
365 /** | 399 /** |
366 * A comparator that can be used to sort elements by their name offset. Elemen
ts with a smaller | 400 * A comparator that can be used to sort elements by their name offset. Elemen
ts with a smaller |
367 * offset will be sorted to be before elements with a larger name offset. | 401 * offset will be sorted to be before elements with a larger name offset. |
368 */ | 402 */ |
369 static final Comparator<Element> SORT_BY_OFFSET = (Element firstElement, Eleme
nt secondElement) => firstElement.nameOffset - secondElement.nameOffset; | 403 static final Comparator<Element> SORT_BY_OFFSET = (Element firstElement, Eleme
nt secondElement) => firstElement.nameOffset - secondElement.nameOffset; |
370 | 404 |
371 /** | 405 /** |
372 * Use the given visitor to visit this element. | 406 * Use the given visitor to visit this element. |
| 407 * |
373 * @param visitor the visitor that will visit this element | 408 * @param visitor the visitor that will visit this element |
374 * @return the value returned by the visitor as a result of visiting this elem
ent | 409 * @return the value returned by the visitor as a result of visiting this elem
ent |
375 */ | 410 */ |
376 accept(ElementVisitor visitor); | 411 accept(ElementVisitor visitor); |
377 | 412 |
378 /** | 413 /** |
379 * Return the documentation comment for this element as it appears in the orig
inal source | 414 * Return the documentation comment for this element as it appears in the orig
inal source |
380 * (complete with the beginning and ending delimiters), or `null` if this elem
ent does not | 415 * (complete with the beginning and ending delimiters), or `null` if this elem
ent does not |
381 * have a documentation comment associated with it. This can be a long-running
operation if the | 416 * have a documentation comment associated with it. This can be a long-running
operation if the |
382 * information needed to access the comment is not cached. | 417 * information needed to access the comment is not cached. |
| 418 * |
383 * @return this element's documentation comment | 419 * @return this element's documentation comment |
384 * @throws AnalysisException if the documentation comment could not be determi
ned because the | 420 * @throws AnalysisException if the documentation comment could not be determi
ned because the |
385 * analysis could not be performed | 421 * analysis could not be performed |
386 */ | 422 */ |
387 String computeDocumentationComment(); | 423 String computeDocumentationComment(); |
388 | 424 |
389 /** | 425 /** |
390 * Return the element of the given class that most immediately encloses this e
lement, or`null` if there is no enclosing element of the given class. | 426 * Return the element of the given class that most immediately encloses this e
lement, or |
| 427 * `null` if there is no enclosing element of the given class. |
| 428 * |
391 * @param elementClass the class of the element to be returned | 429 * @param elementClass the class of the element to be returned |
392 * @return the element that encloses this element | 430 * @return the element that encloses this element |
393 */ | 431 */ |
394 Element getAncestor(Type elementClass); | 432 Element getAncestor(Type elementClass); |
395 | 433 |
396 /** | 434 /** |
397 * Return the analysis context in which this element is defined. | 435 * Return the analysis context in which this element is defined. |
| 436 * |
398 * @return the analysis context in which this element is defined | 437 * @return the analysis context in which this element is defined |
399 */ | 438 */ |
400 AnalysisContext get context; | 439 AnalysisContext get context; |
401 | 440 |
402 /** | 441 /** |
403 * Return the display name of this element, or `null` if this element does not
have a name. | 442 * Return the display name of this element, or `null` if this element does not
have a name. |
404 * | 443 * |
405 * In most cases the name and the display name are the same. Differences thoug
h are cases such as | 444 * In most cases the name and the display name are the same. Differences thoug
h are cases such as |
406 * setters where the name of some setter `set f(x)` is `f=`, instead of `f`. | 445 * setters where the name of some setter `set f(x)` is `f=`, instead of `f`. |
| 446 * |
407 * @return the display name of this element | 447 * @return the display name of this element |
408 */ | 448 */ |
409 String get displayName; | 449 String get displayName; |
410 | 450 |
411 /** | 451 /** |
412 * Return the element that either physically or logically encloses this elemen
t. This will be`null` if this element is a library because libraries are the top
-level elements in the | 452 * Return the element that either physically or logically encloses this elemen
t. This will be |
| 453 * `null` if this element is a library because libraries are the top-level ele
ments in the |
413 * model. | 454 * model. |
| 455 * |
414 * @return the element that encloses this element | 456 * @return the element that encloses this element |
415 */ | 457 */ |
416 Element get enclosingElement; | 458 Element get enclosingElement; |
417 | 459 |
418 /** | 460 /** |
419 * Return the kind of element that this is. | 461 * Return the kind of element that this is. |
| 462 * |
420 * @return the kind of this element | 463 * @return the kind of this element |
421 */ | 464 */ |
422 ElementKind get kind; | 465 ElementKind get kind; |
423 | 466 |
424 /** | 467 /** |
425 * Return the library that contains this element. This will be the element its
elf if it is a | 468 * Return the library that contains this element. This will be the element its
elf if it is a |
426 * library element. This will be `null` if this element is an HTML file becaus
e HTML files | 469 * library element. This will be `null` if this element is an HTML file becaus
e HTML files |
427 * are not contained in libraries. | 470 * are not contained in libraries. |
| 471 * |
428 * @return the library that contains this element | 472 * @return the library that contains this element |
429 */ | 473 */ |
430 LibraryElement get library; | 474 LibraryElement get library; |
431 | 475 |
432 /** | 476 /** |
433 * Return an object representing the location of this element in the element m
odel. The object can | 477 * Return an object representing the location of this element in the element m
odel. The object can |
434 * be used to locate this element at a later time. | 478 * be used to locate this element at a later time. |
| 479 * |
435 * @return the location of this element in the element model | 480 * @return the location of this element in the element model |
436 */ | 481 */ |
437 ElementLocation get location; | 482 ElementLocation get location; |
438 | 483 |
439 /** | 484 /** |
440 * Return an array containing all of the metadata associated with this element
. | 485 * Return an array containing all of the metadata associated with this element
. |
| 486 * |
441 * @return the metadata associated with this element | 487 * @return the metadata associated with this element |
442 */ | 488 */ |
443 List<ElementAnnotation> get metadata; | 489 List<ElementAnnotation> get metadata; |
444 | 490 |
445 /** | 491 /** |
446 * Return the name of this element, or `null` if this element does not have a
name. | 492 * Return the name of this element, or `null` if this element does not have a
name. |
| 493 * |
447 * @return the name of this element | 494 * @return the name of this element |
448 */ | 495 */ |
449 String get name; | 496 String get name; |
450 | 497 |
451 /** | 498 /** |
452 * Return the offset of the name of this element in the file that contains the
declaration of this | 499 * Return the offset of the name of this element in the file that contains the
declaration of this |
453 * element, or `-1` if this element is synthetic, does not have a name, or oth
erwise does | 500 * element, or `-1` if this element is synthetic, does not have a name, or oth
erwise does |
454 * not have an offset. | 501 * not have an offset. |
| 502 * |
455 * @return the offset of the name of this element | 503 * @return the offset of the name of this element |
456 */ | 504 */ |
457 int get nameOffset; | 505 int get nameOffset; |
458 | 506 |
459 /** | 507 /** |
460 * Return the source that contains this element, or `null` if this element is
not contained | 508 * Return the source that contains this element, or `null` if this element is
not contained |
461 * in a source. | 509 * in a source. |
| 510 * |
462 * @return the source that contains this element | 511 * @return the source that contains this element |
463 */ | 512 */ |
464 Source get source; | 513 Source get source; |
465 | 514 |
466 /** | 515 /** |
467 * Return `true` if this element, assuming that it is within scope, is accessi
ble to code in | 516 * Return `true` if this element, assuming that it is within scope, is accessi
ble to code in |
468 * the given library. This is defined by the Dart Language Specification in se
ction 3.2: | 517 * the given library. This is defined by the Dart Language Specification in se
ction 3.2: |
469 * <blockquote> A declaration <i>m</i> is accessible to library <i>L</i> if <i
>m</i> is declared | 518 * <blockquote> A declaration <i>m</i> is accessible to library <i>L</i> if <i
>m</i> is declared |
470 * in <i>L</i> or if <i>m</i> is public. </blockquote> | 519 * in <i>L</i> or if <i>m</i> is public. </blockquote> |
| 520 * |
471 * @param library the library in which a possible reference to this element wo
uld occur | 521 * @param library the library in which a possible reference to this element wo
uld occur |
472 * @return `true` if this element is accessible to code in the given library | 522 * @return `true` if this element is accessible to code in the given library |
473 */ | 523 */ |
474 bool isAccessibleIn(LibraryElement library); | 524 bool isAccessibleIn(LibraryElement library); |
475 | 525 |
476 /** | 526 /** |
477 * Return `true` if this element is synthetic. A synthetic element is an eleme
nt that is not | 527 * Return `true` if this element is synthetic. A synthetic element is an eleme
nt that is not |
478 * represented in the source code explicitly, but is implied by the source cod
e, such as the | 528 * represented in the source code explicitly, but is implied by the source cod
e, such as the |
479 * default constructor for a class that does not explicitly define any constru
ctors. | 529 * default constructor for a class that does not explicitly define any constru
ctors. |
| 530 * |
480 * @return `true` if this element is synthetic | 531 * @return `true` if this element is synthetic |
481 */ | 532 */ |
482 bool get isSynthetic; | 533 bool get isSynthetic; |
483 | 534 |
484 /** | 535 /** |
485 * Use the given visitor to visit all of the children of this element. There i
s no guarantee of | 536 * Use the given visitor to visit all of the children of this element. There i
s no guarantee of |
486 * the order in which the children will be visited. | 537 * the order in which the children will be visited. |
| 538 * |
487 * @param visitor the visitor that will be used to visit the children of this
element | 539 * @param visitor the visitor that will be used to visit the children of this
element |
488 */ | 540 */ |
489 void visitChildren(ElementVisitor<Object> visitor); | 541 void visitChildren(ElementVisitor<Object> visitor); |
490 } | 542 } |
491 /** | 543 /** |
492 * The interface `ElementAnnotation` defines the behavior of objects representin
g a single | 544 * The interface `ElementAnnotation` defines the behavior of objects representin
g a single |
493 * annotation associated with an element. | 545 * annotation associated with an element. |
| 546 * |
494 * @coverage dart.engine.element | 547 * @coverage dart.engine.element |
495 */ | 548 */ |
496 abstract class ElementAnnotation { | 549 abstract class ElementAnnotation { |
497 | 550 |
498 /** | 551 /** |
499 * Return the element representing the field, variable, or const constructor b
eing used as an | 552 * Return the element representing the field, variable, or const constructor b
eing used as an |
500 * annotation. | 553 * annotation. |
| 554 * |
501 * @return the field, variable, or constructor being used as an annotation | 555 * @return the field, variable, or constructor being used as an annotation |
502 */ | 556 */ |
503 Element get element; | 557 Element get element; |
504 } | 558 } |
505 /** | 559 /** |
506 * The enumeration `ElementKind` defines the various kinds of elements in the el
ement model. | 560 * The enumeration `ElementKind` defines the various kinds of elements in the el
ement model. |
| 561 * |
507 * @coverage dart.engine.element | 562 * @coverage dart.engine.element |
508 */ | 563 */ |
509 class ElementKind implements Comparable<ElementKind> { | 564 class ElementKind implements Comparable<ElementKind> { |
510 static final ElementKind CLASS = new ElementKind('CLASS', 0, "class"); | 565 static final ElementKind CLASS = new ElementKind('CLASS', 0, "class"); |
511 static final ElementKind COMPILATION_UNIT = new ElementKind('COMPILATION_UNIT'
, 1, "compilation unit"); | 566 static final ElementKind COMPILATION_UNIT = new ElementKind('COMPILATION_UNIT'
, 1, "compilation unit"); |
512 static final ElementKind CONSTRUCTOR = new ElementKind('CONSTRUCTOR', 2, "cons
tructor"); | 567 static final ElementKind CONSTRUCTOR = new ElementKind('CONSTRUCTOR', 2, "cons
tructor"); |
513 static final ElementKind DYNAMIC = new ElementKind('DYNAMIC', 3, "<dynamic>"); | 568 static final ElementKind DYNAMIC = new ElementKind('DYNAMIC', 3, "<dynamic>"); |
514 static final ElementKind EMBEDDED_HTML_SCRIPT = new ElementKind('EMBEDDED_HTML
_SCRIPT', 4, "embedded html script"); | 569 static final ElementKind EMBEDDED_HTML_SCRIPT = new ElementKind('EMBEDDED_HTML
_SCRIPT', 4, "embedded html script"); |
515 static final ElementKind ERROR = new ElementKind('ERROR', 5, "<error>"); | 570 static final ElementKind ERROR = new ElementKind('ERROR', 5, "<error>"); |
516 static final ElementKind EXPORT = new ElementKind('EXPORT', 6, "export directi
ve"); | 571 static final ElementKind EXPORT = new ElementKind('EXPORT', 6, "export directi
ve"); |
(...skipping 19 matching lines...) Expand all Loading... |
536 | 591 |
537 /// The name of this enum constant, as declared in the enum declaration. | 592 /// The name of this enum constant, as declared in the enum declaration. |
538 final String name; | 593 final String name; |
539 | 594 |
540 /// The position in the enum declaration. | 595 /// The position in the enum declaration. |
541 final int ordinal; | 596 final int ordinal; |
542 | 597 |
543 /** | 598 /** |
544 * Return the kind of the given element, or [ERROR] if the element is `null`.
This is | 599 * Return the kind of the given element, or [ERROR] if the element is `null`.
This is |
545 * a utility method that can reduce the need for null checks in other places. | 600 * a utility method that can reduce the need for null checks in other places. |
| 601 * |
546 * @param element the element whose kind is to be returned | 602 * @param element the element whose kind is to be returned |
547 * @return the kind of the given element | 603 * @return the kind of the given element |
548 */ | 604 */ |
549 static ElementKind of(Element element) { | 605 static ElementKind of(Element element) { |
550 if (element == null) { | 606 if (element == null) { |
551 return ERROR; | 607 return ERROR; |
552 } | 608 } |
553 return element.kind; | 609 return element.kind; |
554 } | 610 } |
555 | 611 |
556 /** | 612 /** |
557 * The name displayed in the UI for this kind of element. | 613 * The name displayed in the UI for this kind of element. |
558 */ | 614 */ |
559 String _displayName; | 615 String _displayName; |
560 | 616 |
561 /** | 617 /** |
562 * Initialize a newly created element kind to have the given display name. | 618 * Initialize a newly created element kind to have the given display name. |
| 619 * |
563 * @param displayName the name displayed in the UI for this kind of element | 620 * @param displayName the name displayed in the UI for this kind of element |
564 */ | 621 */ |
565 ElementKind(this.name, this.ordinal, String displayName) { | 622 ElementKind(this.name, this.ordinal, String displayName) { |
566 this._displayName = displayName; | 623 this._displayName = displayName; |
567 } | 624 } |
568 | 625 |
569 /** | 626 /** |
570 * Return the name displayed in the UI for this kind of element. | 627 * Return the name displayed in the UI for this kind of element. |
| 628 * |
571 * @return the name of this [ElementKind] to display in UI. | 629 * @return the name of this [ElementKind] to display in UI. |
572 */ | 630 */ |
573 String get displayName => _displayName; | 631 String get displayName => _displayName; |
574 int compareTo(ElementKind other) => ordinal - other.ordinal; | 632 int compareTo(ElementKind other) => ordinal - other.ordinal; |
575 int get hashCode => ordinal; | 633 int get hashCode => ordinal; |
576 String toString() => name; | 634 String toString() => name; |
577 } | 635 } |
578 /** | 636 /** |
579 * The interface `ElementLocation` defines the behavior of objects that represen
t the location | 637 * The interface `ElementLocation` defines the behavior of objects that represen
t the location |
580 * of an element within the element model. | 638 * of an element within the element model. |
| 639 * |
581 * @coverage dart.engine.element | 640 * @coverage dart.engine.element |
582 */ | 641 */ |
583 abstract class ElementLocation { | 642 abstract class ElementLocation { |
584 | 643 |
585 /** | 644 /** |
586 * Return an encoded representation of this location that can be used to creat
e a location that is | 645 * Return an encoded representation of this location that can be used to creat
e a location that is |
587 * equal to this location. | 646 * equal to this location. |
| 647 * |
588 * @return an encoded representation of this location | 648 * @return an encoded representation of this location |
589 */ | 649 */ |
590 String get encoding; | 650 String get encoding; |
591 } | 651 } |
592 /** | 652 /** |
593 * The interface `ElementVisitor` defines the behavior of objects that can be us
ed to visit an | 653 * The interface `ElementVisitor` defines the behavior of objects that can be us
ed to visit an |
594 * element structure. | 654 * element structure. |
| 655 * |
595 * @coverage dart.engine.element | 656 * @coverage dart.engine.element |
596 */ | 657 */ |
597 abstract class ElementVisitor<R> { | 658 abstract class ElementVisitor<R> { |
598 R visitClassElement(ClassElement element); | 659 R visitClassElement(ClassElement element); |
599 R visitCompilationUnitElement(CompilationUnitElement element); | 660 R visitCompilationUnitElement(CompilationUnitElement element); |
600 R visitConstructorElement(ConstructorElement element); | 661 R visitConstructorElement(ConstructorElement element); |
601 R visitEmbeddedHtmlScriptElement(EmbeddedHtmlScriptElement element); | 662 R visitEmbeddedHtmlScriptElement(EmbeddedHtmlScriptElement element); |
602 R visitExportElement(ExportElement element); | 663 R visitExportElement(ExportElement element); |
603 R visitExternalHtmlScriptElement(ExternalHtmlScriptElement element); | 664 R visitExternalHtmlScriptElement(ExternalHtmlScriptElement element); |
604 R visitFieldElement(FieldElement element); | 665 R visitFieldElement(FieldElement element); |
605 R visitFieldFormalParameterElement(FieldFormalParameterElement element); | 666 R visitFieldFormalParameterElement(FieldFormalParameterElement element); |
606 R visitFunctionElement(FunctionElement element); | 667 R visitFunctionElement(FunctionElement element); |
607 R visitFunctionTypeAliasElement(FunctionTypeAliasElement element); | 668 R visitFunctionTypeAliasElement(FunctionTypeAliasElement element); |
608 R visitHtmlElement(HtmlElement element); | 669 R visitHtmlElement(HtmlElement element); |
609 R visitImportElement(ImportElement element); | 670 R visitImportElement(ImportElement element); |
610 R visitLabelElement(LabelElement element); | 671 R visitLabelElement(LabelElement element); |
611 R visitLibraryElement(LibraryElement element); | 672 R visitLibraryElement(LibraryElement element); |
612 R visitLocalVariableElement(LocalVariableElement element); | 673 R visitLocalVariableElement(LocalVariableElement element); |
613 R visitMethodElement(MethodElement element); | 674 R visitMethodElement(MethodElement element); |
614 R visitMultiplyDefinedElement(MultiplyDefinedElement element); | 675 R visitMultiplyDefinedElement(MultiplyDefinedElement element); |
615 R visitParameterElement(ParameterElement element); | 676 R visitParameterElement(ParameterElement element); |
616 R visitPrefixElement(PrefixElement element); | 677 R visitPrefixElement(PrefixElement element); |
617 R visitPropertyAccessorElement(PropertyAccessorElement element); | 678 R visitPropertyAccessorElement(PropertyAccessorElement element); |
618 R visitTopLevelVariableElement(TopLevelVariableElement element); | 679 R visitTopLevelVariableElement(TopLevelVariableElement element); |
619 R visitTypeVariableElement(TypeVariableElement element); | 680 R visitTypeVariableElement(TypeVariableElement element); |
620 } | 681 } |
621 /** | 682 /** |
622 * The interface `EmbeddedHtmlScriptElement` defines the behavior of elements re
presenting a | 683 * The interface `EmbeddedHtmlScriptElement` defines the behavior of elements re
presenting a |
623 * script tag in an HTML file having content that defines a Dart library. | 684 * script tag in an HTML file having content that defines a Dart library. |
| 685 * |
624 * @coverage dart.engine.element | 686 * @coverage dart.engine.element |
625 */ | 687 */ |
626 abstract class EmbeddedHtmlScriptElement implements HtmlScriptElement { | 688 abstract class EmbeddedHtmlScriptElement implements HtmlScriptElement { |
627 | 689 |
628 /** | 690 /** |
629 * Return the library element defined by the content of the script tag. | 691 * Return the library element defined by the content of the script tag. |
| 692 * |
630 * @return the library element (not `null`) | 693 * @return the library element (not `null`) |
631 */ | 694 */ |
632 LibraryElement get scriptLibrary; | 695 LibraryElement get scriptLibrary; |
633 } | 696 } |
634 /** | 697 /** |
635 * The interface `ExecutableElement` defines the behavior of elements representi
ng an | 698 * The interface `ExecutableElement` defines the behavior of elements representi
ng an |
636 * executable object, including functions, methods, constructors, getters, and s
etters. | 699 * executable object, including functions, methods, constructors, getters, and s
etters. |
| 700 * |
637 * @coverage dart.engine.element | 701 * @coverage dart.engine.element |
638 */ | 702 */ |
639 abstract class ExecutableElement implements Element { | 703 abstract class ExecutableElement implements Element { |
640 | 704 |
641 /** | 705 /** |
642 * Return an array containing all of the functions defined within this executa
ble element. | 706 * Return an array containing all of the functions defined within this executa
ble element. |
| 707 * |
643 * @return the functions defined within this executable element | 708 * @return the functions defined within this executable element |
644 */ | 709 */ |
645 List<FunctionElement> get functions; | 710 List<FunctionElement> get functions; |
646 | 711 |
647 /** | 712 /** |
648 * Return an array containing all of the labels defined within this executable
element. | 713 * Return an array containing all of the labels defined within this executable
element. |
| 714 * |
649 * @return the labels defined within this executable element | 715 * @return the labels defined within this executable element |
650 */ | 716 */ |
651 List<LabelElement> get labels; | 717 List<LabelElement> get labels; |
652 | 718 |
653 /** | 719 /** |
654 * Return an array containing all of the local variables defined within this e
xecutable element. | 720 * Return an array containing all of the local variables defined within this e
xecutable element. |
| 721 * |
655 * @return the local variables defined within this executable element | 722 * @return the local variables defined within this executable element |
656 */ | 723 */ |
657 List<LocalVariableElement> get localVariables; | 724 List<LocalVariableElement> get localVariables; |
658 | 725 |
659 /** | 726 /** |
660 * Return an array containing all of the parameters defined by this executable
element. | 727 * Return an array containing all of the parameters defined by this executable
element. |
| 728 * |
661 * @return the parameters defined by this executable element | 729 * @return the parameters defined by this executable element |
662 */ | 730 */ |
663 List<ParameterElement> get parameters; | 731 List<ParameterElement> get parameters; |
664 | 732 |
665 /** | 733 /** |
666 * Return the return type defined by this executable element. | 734 * Return the return type defined by this executable element. |
| 735 * |
667 * @return the return type defined by this executable element | 736 * @return the return type defined by this executable element |
668 */ | 737 */ |
669 Type2 get returnType; | 738 Type2 get returnType; |
670 | 739 |
671 /** | 740 /** |
672 * Return the type of function defined by this executable element. | 741 * Return the type of function defined by this executable element. |
| 742 * |
673 * @return the type of function defined by this executable element | 743 * @return the type of function defined by this executable element |
674 */ | 744 */ |
675 FunctionType get type; | 745 FunctionType get type; |
676 | 746 |
677 /** | 747 /** |
678 * Return `true` if this executable element is an operator. The test may be ba
sed on the | 748 * Return `true` if this executable element is an operator. The test may be ba
sed on the |
679 * name of the executable element, in which case the result will be correct wh
en the name is | 749 * name of the executable element, in which case the result will be correct wh
en the name is |
680 * legal. | 750 * legal. |
| 751 * |
681 * @return `true` if this executable element is an operator | 752 * @return `true` if this executable element is an operator |
682 */ | 753 */ |
683 bool get isOperator; | 754 bool get isOperator; |
684 | 755 |
685 /** | 756 /** |
686 * Return `true` if this element is a static element. A static element is an e
lement that is | 757 * Return `true` if this element is a static element. A static element is an e
lement that is |
687 * not associated with a particular instance, but rather with an entire librar
y or class. | 758 * not associated with a particular instance, but rather with an entire librar
y or class. |
| 759 * |
688 * @return `true` if this executable element is a static element | 760 * @return `true` if this executable element is a static element |
689 */ | 761 */ |
690 bool get isStatic; | 762 bool get isStatic; |
691 } | 763 } |
692 /** | 764 /** |
693 * The interface `ExportElement` defines the behavior of objects representing in
formation | 765 * The interface `ExportElement` defines the behavior of objects representing in
formation |
694 * about a single export directive within a library. | 766 * about a single export directive within a library. |
| 767 * |
695 * @coverage dart.engine.element | 768 * @coverage dart.engine.element |
696 */ | 769 */ |
697 abstract class ExportElement implements Element, UriReferencedElement { | 770 abstract class ExportElement implements Element, UriReferencedElement { |
698 | 771 |
699 /** | 772 /** |
700 * An empty array of export elements. | 773 * An empty array of export elements. |
701 */ | 774 */ |
702 static final List<ExportElement> EMPTY_ARRAY = new List<ExportElement>(0); | 775 static final List<ExportElement> EMPTY_ARRAY = new List<ExportElement>(0); |
703 | 776 |
704 /** | 777 /** |
705 * Return an array containing the combinators that were specified as part of t
he export directive | 778 * Return an array containing the combinators that were specified as part of t
he export directive |
706 * in the order in which they were specified. | 779 * in the order in which they were specified. |
| 780 * |
707 * @return the combinators specified in the export directive | 781 * @return the combinators specified in the export directive |
708 */ | 782 */ |
709 List<NamespaceCombinator> get combinators; | 783 List<NamespaceCombinator> get combinators; |
710 | 784 |
711 /** | 785 /** |
712 * Return the library that is exported from this library by this export direct
ive. | 786 * Return the library that is exported from this library by this export direct
ive. |
| 787 * |
713 * @return the library that is exported from this library | 788 * @return the library that is exported from this library |
714 */ | 789 */ |
715 LibraryElement get exportedLibrary; | 790 LibraryElement get exportedLibrary; |
716 } | 791 } |
717 /** | 792 /** |
718 * The interface `ExternalHtmlScriptElement` defines the behavior of elements re
presenting a | 793 * The interface `ExternalHtmlScriptElement` defines the behavior of elements re
presenting a |
719 * script tag in an HTML file having a `source` attribute that references a Dart
library | 794 * script tag in an HTML file having a `source` attribute that references a Dart
library |
720 * source file. | 795 * source file. |
| 796 * |
721 * @coverage dart.engine.element | 797 * @coverage dart.engine.element |
722 */ | 798 */ |
723 abstract class ExternalHtmlScriptElement implements HtmlScriptElement { | 799 abstract class ExternalHtmlScriptElement implements HtmlScriptElement { |
724 | 800 |
725 /** | 801 /** |
726 * Return the source referenced by this element, or `null` if this element doe
s not | 802 * Return the source referenced by this element, or `null` if this element doe
s not |
727 * reference a Dart library source file. | 803 * reference a Dart library source file. |
| 804 * |
728 * @return the source for the external Dart library | 805 * @return the source for the external Dart library |
729 */ | 806 */ |
730 Source get scriptSource; | 807 Source get scriptSource; |
731 } | 808 } |
732 /** | 809 /** |
733 * The interface `FieldElement` defines the behavior of elements representing a
field defined | 810 * The interface `FieldElement` defines the behavior of elements representing a
field defined |
734 * within a type. | 811 * within a type. |
| 812 * |
735 * @coverage dart.engine.element | 813 * @coverage dart.engine.element |
736 */ | 814 */ |
737 abstract class FieldElement implements ClassMemberElement, PropertyInducingEleme
nt { | 815 abstract class FieldElement implements ClassMemberElement, PropertyInducingEleme
nt { |
738 } | 816 } |
739 /** | 817 /** |
740 * The interface `FieldFormalParameterElement` defines the behavior of elements
representing a | 818 * The interface `FieldFormalParameterElement` defines the behavior of elements
representing a |
741 * field formal parameter defined within a constructor element. | 819 * field formal parameter defined within a constructor element. |
742 */ | 820 */ |
743 abstract class FieldFormalParameterElement implements ParameterElement { | 821 abstract class FieldFormalParameterElement implements ParameterElement { |
744 | 822 |
745 /** | 823 /** |
746 * Return the field element associated with this field formal parameter, or `n
ull` if the | 824 * Return the field element associated with this field formal parameter, or `n
ull` if the |
747 * parameter references a field that doesn't exist. | 825 * parameter references a field that doesn't exist. |
| 826 * |
748 * @return the field element associated with this field formal parameter | 827 * @return the field element associated with this field formal parameter |
749 */ | 828 */ |
750 FieldElement get field; | 829 FieldElement get field; |
751 } | 830 } |
752 /** | 831 /** |
753 * The interface `FunctionElement` defines the behavior of elements representing
a function. | 832 * The interface `FunctionElement` defines the behavior of elements representing
a function. |
| 833 * |
754 * @coverage dart.engine.element | 834 * @coverage dart.engine.element |
755 */ | 835 */ |
756 abstract class FunctionElement implements ExecutableElement, LocalElement { | 836 abstract class FunctionElement implements ExecutableElement, LocalElement { |
757 } | 837 } |
758 /** | 838 /** |
759 * The interface `FunctionTypeAliasElement` defines the behavior of elements rep
resenting a | 839 * The interface `FunctionTypeAliasElement` defines the behavior of elements rep
resenting a |
760 * function type alias (`typedef`). | 840 * function type alias (`typedef`). |
| 841 * |
761 * @coverage dart.engine.element | 842 * @coverage dart.engine.element |
762 */ | 843 */ |
763 abstract class FunctionTypeAliasElement implements Element { | 844 abstract class FunctionTypeAliasElement implements Element { |
764 | 845 |
765 /** | 846 /** |
766 * Return the compilation unit in which this type alias is defined. | 847 * Return the compilation unit in which this type alias is defined. |
| 848 * |
767 * @return the compilation unit in which this type alias is defined | 849 * @return the compilation unit in which this type alias is defined |
768 */ | 850 */ |
769 CompilationUnitElement get enclosingElement; | 851 CompilationUnitElement get enclosingElement; |
770 | 852 |
771 /** | 853 /** |
772 * Return an array containing all of the parameters defined by this type alias
. | 854 * Return an array containing all of the parameters defined by this type alias
. |
| 855 * |
773 * @return the parameters defined by this type alias | 856 * @return the parameters defined by this type alias |
774 */ | 857 */ |
775 List<ParameterElement> get parameters; | 858 List<ParameterElement> get parameters; |
776 | 859 |
777 /** | 860 /** |
778 * Return the return type defined by this type alias. | 861 * Return the return type defined by this type alias. |
| 862 * |
779 * @return the return type defined by this type alias | 863 * @return the return type defined by this type alias |
780 */ | 864 */ |
781 Type2 get returnType; | 865 Type2 get returnType; |
782 | 866 |
783 /** | 867 /** |
784 * Return the type of function defined by this type alias. | 868 * Return the type of function defined by this type alias. |
| 869 * |
785 * @return the type of function defined by this type alias | 870 * @return the type of function defined by this type alias |
786 */ | 871 */ |
787 FunctionType get type; | 872 FunctionType get type; |
788 | 873 |
789 /** | 874 /** |
790 * Return an array containing all of the type variables defined for this type. | 875 * Return an array containing all of the type variables defined for this type. |
| 876 * |
791 * @return the type variables defined for this type | 877 * @return the type variables defined for this type |
792 */ | 878 */ |
793 List<TypeVariableElement> get typeVariables; | 879 List<TypeVariableElement> get typeVariables; |
794 } | 880 } |
795 /** | 881 /** |
796 * The interface `HideElementCombinator` defines the behavior of combinators tha
t cause some | 882 * The interface `HideElementCombinator` defines the behavior of combinators tha
t cause some |
797 * of the names in a namespace to be hidden when being imported. | 883 * of the names in a namespace to be hidden when being imported. |
| 884 * |
798 * @coverage dart.engine.element | 885 * @coverage dart.engine.element |
799 */ | 886 */ |
800 abstract class HideElementCombinator implements NamespaceCombinator { | 887 abstract class HideElementCombinator implements NamespaceCombinator { |
801 | 888 |
802 /** | 889 /** |
803 * Return an array containing the names that are not to be made visible in the
importing library | 890 * Return an array containing the names that are not to be made visible in the
importing library |
804 * even if they are defined in the imported library. | 891 * even if they are defined in the imported library. |
| 892 * |
805 * @return the names from the imported library that are hidden from the import
ing library | 893 * @return the names from the imported library that are hidden from the import
ing library |
806 */ | 894 */ |
807 List<String> get hiddenNames; | 895 List<String> get hiddenNames; |
808 } | 896 } |
809 /** | 897 /** |
810 * The interface `HtmlElement` defines the behavior of elements representing an
HTML file. | 898 * The interface `HtmlElement` defines the behavior of elements representing an
HTML file. |
| 899 * |
811 * @coverage dart.engine.element | 900 * @coverage dart.engine.element |
812 */ | 901 */ |
813 abstract class HtmlElement implements Element { | 902 abstract class HtmlElement implements Element { |
814 | 903 |
815 /** | 904 /** |
816 * Return an array containing all of the script elements contained in the HTML
file. This includes | 905 * Return an array containing all of the script elements contained in the HTML
file. This includes |
817 * scripts with libraries that are defined by the content of a script tag as w
ell as libraries | 906 * scripts with libraries that are defined by the content of a script tag as w
ell as libraries |
818 * that are referenced in the {@core source} attribute of a script tag. | 907 * that are referenced in the {@core source} attribute of a script tag. |
| 908 * |
819 * @return the script elements in the HTML file (not `null`, contains no `null
`s) | 909 * @return the script elements in the HTML file (not `null`, contains no `null
`s) |
820 */ | 910 */ |
821 List<HtmlScriptElement> get scripts; | 911 List<HtmlScriptElement> get scripts; |
822 } | 912 } |
823 /** | 913 /** |
824 * The interface `HtmlScriptElement` defines the behavior of elements representi
ng a script | 914 * The interface `HtmlScriptElement` defines the behavior of elements representi
ng a script |
825 * tag in an HTML file. | 915 * tag in an HTML file. |
| 916 * |
826 * @see EmbeddedHtmlScriptElement | 917 * @see EmbeddedHtmlScriptElement |
827 * @see ExternalHtmlScriptElement | 918 * @see ExternalHtmlScriptElement |
828 * @coverage dart.engine.element | 919 * @coverage dart.engine.element |
829 */ | 920 */ |
830 abstract class HtmlScriptElement implements Element { | 921 abstract class HtmlScriptElement implements Element { |
831 } | 922 } |
832 /** | 923 /** |
833 * The interface `ImportElement` defines the behavior of objects representing in
formation | 924 * The interface `ImportElement` defines the behavior of objects representing in
formation |
834 * about a single import directive within a library. | 925 * about a single import directive within a library. |
| 926 * |
835 * @coverage dart.engine.element | 927 * @coverage dart.engine.element |
836 */ | 928 */ |
837 abstract class ImportElement implements Element, UriReferencedElement { | 929 abstract class ImportElement implements Element, UriReferencedElement { |
838 | 930 |
839 /** | 931 /** |
840 * An empty array of import elements. | 932 * An empty array of import elements. |
841 */ | 933 */ |
842 static final List<ImportElement> EMPTY_ARRAY = new List<ImportElement>(0); | 934 static final List<ImportElement> EMPTY_ARRAY = new List<ImportElement>(0); |
843 | 935 |
844 /** | 936 /** |
845 * Return an array containing the combinators that were specified as part of t
he import directive | 937 * Return an array containing the combinators that were specified as part of t
he import directive |
846 * in the order in which they were specified. | 938 * in the order in which they were specified. |
| 939 * |
847 * @return the combinators specified in the import directive | 940 * @return the combinators specified in the import directive |
848 */ | 941 */ |
849 List<NamespaceCombinator> get combinators; | 942 List<NamespaceCombinator> get combinators; |
850 | 943 |
851 /** | 944 /** |
852 * Return the library that is imported into this library by this import direct
ive. | 945 * Return the library that is imported into this library by this import direct
ive. |
| 946 * |
853 * @return the library that is imported into this library | 947 * @return the library that is imported into this library |
854 */ | 948 */ |
855 LibraryElement get importedLibrary; | 949 LibraryElement get importedLibrary; |
856 | 950 |
857 /** | 951 /** |
858 * Return the prefix that was specified as part of the import directive, or `n
ull` if there | 952 * Return the prefix that was specified as part of the import directive, or `n
ull` if there |
859 * was no prefix specified. | 953 * was no prefix specified. |
| 954 * |
860 * @return the prefix that was specified as part of the import directive | 955 * @return the prefix that was specified as part of the import directive |
861 */ | 956 */ |
862 PrefixElement get prefix; | 957 PrefixElement get prefix; |
863 } | 958 } |
864 /** | 959 /** |
865 * The interface `LabelElement` defines the behavior of elements representing a
label | 960 * The interface `LabelElement` defines the behavior of elements representing a
label |
866 * associated with a statement. | 961 * associated with a statement. |
| 962 * |
867 * @coverage dart.engine.element | 963 * @coverage dart.engine.element |
868 */ | 964 */ |
869 abstract class LabelElement implements Element { | 965 abstract class LabelElement implements Element { |
870 | 966 |
871 /** | 967 /** |
872 * Return the executable element in which this label is defined. | 968 * Return the executable element in which this label is defined. |
| 969 * |
873 * @return the executable element in which this label is defined | 970 * @return the executable element in which this label is defined |
874 */ | 971 */ |
875 ExecutableElement get enclosingElement; | 972 ExecutableElement get enclosingElement; |
876 } | 973 } |
877 /** | 974 /** |
878 * The interface `LibraryElement` defines the behavior of elements representing
a library. | 975 * The interface `LibraryElement` defines the behavior of elements representing
a library. |
| 976 * |
879 * @coverage dart.engine.element | 977 * @coverage dart.engine.element |
880 */ | 978 */ |
881 abstract class LibraryElement implements Element { | 979 abstract class LibraryElement implements Element { |
882 | 980 |
883 /** | 981 /** |
884 * Return the compilation unit that defines this library. | 982 * Return the compilation unit that defines this library. |
| 983 * |
885 * @return the compilation unit that defines this library | 984 * @return the compilation unit that defines this library |
886 */ | 985 */ |
887 CompilationUnitElement get definingCompilationUnit; | 986 CompilationUnitElement get definingCompilationUnit; |
888 | 987 |
889 /** | 988 /** |
890 * Return the entry point for this library, or `null` if this library does not
have an entry | 989 * Return the entry point for this library, or `null` if this library does not
have an entry |
891 * point. The entry point is defined to be a zero argument top-level function
whose name is`main`. | 990 * point. The entry point is defined to be a zero argument top-level function
whose name is |
| 991 * `main`. |
| 992 * |
892 * @return the entry point for this library | 993 * @return the entry point for this library |
893 */ | 994 */ |
894 FunctionElement get entryPoint; | 995 FunctionElement get entryPoint; |
895 | 996 |
896 /** | 997 /** |
897 * Return an array containing all of the libraries that are exported from this
library. | 998 * Return an array containing all of the libraries that are exported from this
library. |
| 999 * |
898 * @return an array containing all of the libraries that are exported from thi
s library | 1000 * @return an array containing all of the libraries that are exported from thi
s library |
899 */ | 1001 */ |
900 List<LibraryElement> get exportedLibraries; | 1002 List<LibraryElement> get exportedLibraries; |
901 | 1003 |
902 /** | 1004 /** |
903 * Return an array containing all of the exports defined in this library. | 1005 * Return an array containing all of the exports defined in this library. |
| 1006 * |
904 * @return the exports defined in this library | 1007 * @return the exports defined in this library |
905 */ | 1008 */ |
906 List<ExportElement> get exports; | 1009 List<ExportElement> get exports; |
907 | 1010 |
908 /** | 1011 /** |
909 * Return an array containing all of the libraries that are imported into this
library. This | 1012 * Return an array containing all of the libraries that are imported into this
library. This |
910 * includes all of the libraries that are imported using a prefix (also availa
ble through the | 1013 * includes all of the libraries that are imported using a prefix (also availa
ble through the |
911 * prefixes returned by [getPrefixes]) and those that are imported without a p
refix. | 1014 * prefixes returned by [getPrefixes]) and those that are imported without a p
refix. |
| 1015 * |
912 * @return an array containing all of the libraries that are imported into thi
s library | 1016 * @return an array containing all of the libraries that are imported into thi
s library |
913 */ | 1017 */ |
914 List<LibraryElement> get importedLibraries; | 1018 List<LibraryElement> get importedLibraries; |
915 | 1019 |
916 /** | 1020 /** |
917 * Return an array containing all of the imports defined in this library. | 1021 * Return an array containing all of the imports defined in this library. |
| 1022 * |
918 * @return the imports defined in this library | 1023 * @return the imports defined in this library |
919 */ | 1024 */ |
920 List<ImportElement> get imports; | 1025 List<ImportElement> get imports; |
921 | 1026 |
922 /** | 1027 /** |
923 * Return an array containing all of the compilation units that are included i
n this library using | 1028 * Return an array containing all of the compilation units that are included i
n this library using |
924 * a `part` directive. This does not include the defining compilation unit tha
t contains the`part` directives. | 1029 * a `part` directive. This does not include the defining compilation unit tha
t contains the |
| 1030 * `part` directives. |
| 1031 * |
925 * @return the compilation units that are included in this library | 1032 * @return the compilation units that are included in this library |
926 */ | 1033 */ |
927 List<CompilationUnitElement> get parts; | 1034 List<CompilationUnitElement> get parts; |
928 | 1035 |
929 /** | 1036 /** |
930 * Return an array containing elements for each of the prefixes used to `impor
t` libraries | 1037 * Return an array containing elements for each of the prefixes used to `impor
t` libraries |
931 * into this library. Each prefix can be used in more than one `import` direct
ive. | 1038 * into this library. Each prefix can be used in more than one `import` direct
ive. |
| 1039 * |
932 * @return the prefixes used to `import` libraries into this library | 1040 * @return the prefixes used to `import` libraries into this library |
933 */ | 1041 */ |
934 List<PrefixElement> get prefixes; | 1042 List<PrefixElement> get prefixes; |
935 | 1043 |
936 /** | 1044 /** |
937 * Return the class defined in this library that has the given name, or `null`
if this | 1045 * Return the class defined in this library that has the given name, or `null`
if this |
938 * library does not define a class with the given name. | 1046 * library does not define a class with the given name. |
| 1047 * |
939 * @param className the name of the class to be returned | 1048 * @param className the name of the class to be returned |
940 * @return the class with the given name that is defined in this library | 1049 * @return the class with the given name that is defined in this library |
941 */ | 1050 */ |
942 ClassElement getType(String className); | 1051 ClassElement getType(String className); |
943 | 1052 |
944 /** | 1053 /** |
945 * Answer `true` if this library is an application that can be run in the brow
ser. | 1054 * Answer `true` if this library is an application that can be run in the brow
ser. |
| 1055 * |
946 * @return `true` if this library is an application that can be run in the bro
wser | 1056 * @return `true` if this library is an application that can be run in the bro
wser |
947 */ | 1057 */ |
948 bool get isBrowserApplication; | 1058 bool get isBrowserApplication; |
949 | 1059 |
950 /** | 1060 /** |
951 * Return `true` if this library is the dart:core library. | 1061 * Return `true` if this library is the dart:core library. |
| 1062 * |
952 * @return `true` if this library is the dart:core library | 1063 * @return `true` if this library is the dart:core library |
953 */ | 1064 */ |
954 bool get isDartCore; | 1065 bool get isDartCore; |
955 | 1066 |
956 /** | 1067 /** |
957 * Return `true` if this library is up to date with respect to the given time
stamp. If any | 1068 * Return `true` if this library is up to date with respect to the given time
stamp. If any |
958 * transitively referenced Source is newer than the time stamp, this method re
turns false. | 1069 * transitively referenced Source is newer than the time stamp, this method re
turns false. |
| 1070 * |
959 * @param timeStamp the time stamp to compare against | 1071 * @param timeStamp the time stamp to compare against |
960 * @return `true` if this library is up to date with respect to the given time
stamp | 1072 * @return `true` if this library is up to date with respect to the given time
stamp |
961 */ | 1073 */ |
962 bool isUpToDate2(int timeStamp); | 1074 bool isUpToDate2(int timeStamp); |
963 } | 1075 } |
964 /** | 1076 /** |
965 * The interface `LocalElement` defines the behavior of elements that can be (bu
t are not | 1077 * The interface `LocalElement` defines the behavior of elements that can be (bu
t are not |
966 * required to be) defined within a method or function (an [ExecutableElement]). | 1078 * required to be) defined within a method or function (an [ExecutableElement]). |
| 1079 * |
967 * @coverage dart.engine.element | 1080 * @coverage dart.engine.element |
968 */ | 1081 */ |
969 abstract class LocalElement implements Element { | 1082 abstract class LocalElement implements Element { |
970 | 1083 |
971 /** | 1084 /** |
972 * Return a source range that covers the approximate portion of the source in
which the name of | 1085 * Return a source range that covers the approximate portion of the source in
which the name of |
973 * this element is visible, or `null` if there is no single range of character
s within which | 1086 * this element is visible, or `null` if there is no single range of character
s within which |
974 * the element name is visible. | 1087 * the element name is visible. |
975 * | 1088 * |
976 * * For a local variable, this includes everything from the end of the variab
le's initializer | 1089 * * For a local variable, this includes everything from the end of the variab
le's initializer |
977 * to the end of the block that encloses the variable declaration. | 1090 * to the end of the block that encloses the variable declaration. |
978 * * For a parameter, this includes the body of the method or function that de
clares the | 1091 * * For a parameter, this includes the body of the method or function that de
clares the |
979 * parameter. | 1092 * parameter. |
980 * * For a local function, this includes everything from the beginning of the
function's body to | 1093 * * For a local function, this includes everything from the beginning of the
function's body to |
981 * the end of the block that encloses the function declaration. | 1094 * the end of the block that encloses the function declaration. |
982 * * For top-level functions, `null` will be returned because they are potenti
ally visible | 1095 * * For top-level functions, `null` will be returned because they are potenti
ally visible |
983 * in multiple sources. | 1096 * in multiple sources. |
984 * | 1097 * |
| 1098 * |
985 * @return the range of characters in which the name of this element is visibl
e | 1099 * @return the range of characters in which the name of this element is visibl
e |
986 */ | 1100 */ |
987 SourceRange get visibleRange; | 1101 SourceRange get visibleRange; |
988 } | 1102 } |
989 /** | 1103 /** |
990 * The interface `LocalVariableElement` defines the behavior common to elements
that represent | 1104 * The interface `LocalVariableElement` defines the behavior common to elements
that represent |
991 * a local variable. | 1105 * a local variable. |
| 1106 * |
992 * @coverage dart.engine.element | 1107 * @coverage dart.engine.element |
993 */ | 1108 */ |
994 abstract class LocalVariableElement implements LocalElement, VariableElement { | 1109 abstract class LocalVariableElement implements LocalElement, VariableElement { |
995 } | 1110 } |
996 /** | 1111 /** |
997 * The interface `MethodElement` defines the behavior of elements that represent
a method | 1112 * The interface `MethodElement` defines the behavior of elements that represent
a method |
998 * defined within a type. | 1113 * defined within a type. |
| 1114 * |
999 * @coverage dart.engine.element | 1115 * @coverage dart.engine.element |
1000 */ | 1116 */ |
1001 abstract class MethodElement implements ClassMemberElement, ExecutableElement { | 1117 abstract class MethodElement implements ClassMemberElement, ExecutableElement { |
1002 | 1118 |
1003 /** | 1119 /** |
1004 * Return `true` if this method is abstract. Methods are abstract if they are
not external | 1120 * Return `true` if this method is abstract. Methods are abstract if they are
not external |
1005 * and have no body. | 1121 * and have no body. |
| 1122 * |
1006 * @return `true` if this method is abstract | 1123 * @return `true` if this method is abstract |
1007 */ | 1124 */ |
1008 bool get isAbstract; | 1125 bool get isAbstract; |
1009 } | 1126 } |
1010 /** | 1127 /** |
1011 * The interface `MultiplyDefinedElement` defines the behavior of pseudo-element
s that | 1128 * The interface `MultiplyDefinedElement` defines the behavior of pseudo-element
s that |
1012 * represent multiple elements defined within a single scope that have the same
name. This situation | 1129 * represent multiple elements defined within a single scope that have the same
name. This situation |
1013 * is not allowed by the language, so objects implementing this interface always
represent an error. | 1130 * is not allowed by the language, so objects implementing this interface always
represent an error. |
1014 * As a result, most of the normal operations on elements do not make sense and
will return useless | 1131 * As a result, most of the normal operations on elements do not make sense and
will return useless |
1015 * results. | 1132 * results. |
| 1133 * |
1016 * @coverage dart.engine.element | 1134 * @coverage dart.engine.element |
1017 */ | 1135 */ |
1018 abstract class MultiplyDefinedElement implements Element { | 1136 abstract class MultiplyDefinedElement implements Element { |
1019 | 1137 |
1020 /** | 1138 /** |
1021 * Return an array containing all of the elements that were defined within the
scope to have the | 1139 * Return an array containing all of the elements that were defined within the
scope to have the |
1022 * same name. | 1140 * same name. |
| 1141 * |
1023 * @return the elements that were defined with the same name | 1142 * @return the elements that were defined with the same name |
1024 */ | 1143 */ |
1025 List<Element> get conflictingElements; | 1144 List<Element> get conflictingElements; |
1026 } | 1145 } |
1027 /** | 1146 /** |
1028 * The interface `NamespaceCombinator` defines the behavior common to objects th
at control how | 1147 * The interface `NamespaceCombinator` defines the behavior common to objects th
at control how |
1029 * namespaces are combined. | 1148 * namespaces are combined. |
| 1149 * |
1030 * @coverage dart.engine.element | 1150 * @coverage dart.engine.element |
1031 */ | 1151 */ |
1032 abstract class NamespaceCombinator { | 1152 abstract class NamespaceCombinator { |
1033 | 1153 |
1034 /** | 1154 /** |
1035 * An empty array of namespace combinators. | 1155 * An empty array of namespace combinators. |
1036 */ | 1156 */ |
1037 static final List<NamespaceCombinator> EMPTY_ARRAY = new List<NamespaceCombina
tor>(0); | 1157 static final List<NamespaceCombinator> EMPTY_ARRAY = new List<NamespaceCombina
tor>(0); |
1038 } | 1158 } |
1039 /** | 1159 /** |
1040 * The interface `ParameterElement` defines the behavior of elements representin
g a parameter | 1160 * The interface `ParameterElement` defines the behavior of elements representin
g a parameter |
1041 * defined within an executable element. | 1161 * defined within an executable element. |
| 1162 * |
1042 * @coverage dart.engine.element | 1163 * @coverage dart.engine.element |
1043 */ | 1164 */ |
1044 abstract class ParameterElement implements LocalElement, VariableElement { | 1165 abstract class ParameterElement implements LocalElement, VariableElement { |
1045 | 1166 |
1046 /** | 1167 /** |
1047 * Return a source range that covers the portion of the source in which the de
fault value for this | 1168 * Return a source range that covers the portion of the source in which the de
fault value for this |
1048 * parameter is specified, or `null` if there is no default value. | 1169 * parameter is specified, or `null` if there is no default value. |
| 1170 * |
1049 * @return the range of characters in which the default value of this paramete
r is specified | 1171 * @return the range of characters in which the default value of this paramete
r is specified |
1050 */ | 1172 */ |
1051 SourceRange get defaultValueRange; | 1173 SourceRange get defaultValueRange; |
1052 | 1174 |
1053 /** | 1175 /** |
1054 * Return the kind of this parameter. | 1176 * Return the kind of this parameter. |
| 1177 * |
1055 * @return the kind of this parameter | 1178 * @return the kind of this parameter |
1056 */ | 1179 */ |
1057 ParameterKind get parameterKind; | 1180 ParameterKind get parameterKind; |
1058 | 1181 |
1059 /** | 1182 /** |
1060 * Return an array containing all of the parameters defined by this parameter.
A parameter will | 1183 * Return an array containing all of the parameters defined by this parameter.
A parameter will |
1061 * only define other parameters if it is a function typed parameter. | 1184 * only define other parameters if it is a function typed parameter. |
| 1185 * |
1062 * @return the parameters defined by this parameter element | 1186 * @return the parameters defined by this parameter element |
1063 */ | 1187 */ |
1064 List<ParameterElement> get parameters; | 1188 List<ParameterElement> get parameters; |
1065 | 1189 |
1066 /** | 1190 /** |
1067 * Return `true` if this parameter is an initializing formal parameter. | 1191 * Return `true` if this parameter is an initializing formal parameter. |
| 1192 * |
1068 * @return `true` if this parameter is an initializing formal parameter | 1193 * @return `true` if this parameter is an initializing formal parameter |
1069 */ | 1194 */ |
1070 bool get isInitializingFormal; | 1195 bool get isInitializingFormal; |
1071 } | 1196 } |
1072 /** | 1197 /** |
1073 * The interface `PrefixElement` defines the behavior common to elements that re
present a | 1198 * The interface `PrefixElement` defines the behavior common to elements that re
present a |
1074 * prefix used to import one or more libraries into another library. | 1199 * prefix used to import one or more libraries into another library. |
| 1200 * |
1075 * @coverage dart.engine.element | 1201 * @coverage dart.engine.element |
1076 */ | 1202 */ |
1077 abstract class PrefixElement implements Element { | 1203 abstract class PrefixElement implements Element { |
1078 | 1204 |
1079 /** | 1205 /** |
1080 * Return the library into which other libraries are imported using this prefi
x. | 1206 * Return the library into which other libraries are imported using this prefi
x. |
| 1207 * |
1081 * @return the library into which other libraries are imported using this pref
ix | 1208 * @return the library into which other libraries are imported using this pref
ix |
1082 */ | 1209 */ |
1083 LibraryElement get enclosingElement; | 1210 LibraryElement get enclosingElement; |
1084 | 1211 |
1085 /** | 1212 /** |
1086 * Return an array containing all of the libraries that are imported using thi
s prefix. | 1213 * Return an array containing all of the libraries that are imported using thi
s prefix. |
| 1214 * |
1087 * @return the libraries that are imported using this prefix | 1215 * @return the libraries that are imported using this prefix |
1088 */ | 1216 */ |
1089 List<LibraryElement> get importedLibraries; | 1217 List<LibraryElement> get importedLibraries; |
1090 } | 1218 } |
1091 /** | 1219 /** |
1092 * The interface `PropertyAccessorElement` defines the behavior of elements repr
esenting a | 1220 * The interface `PropertyAccessorElement` defines the behavior of elements repr
esenting a |
1093 * getter or a setter. Note that explicitly defined property accessors implicitl
y define a synthetic | 1221 * getter or a setter. Note that explicitly defined property accessors implicitl
y define a synthetic |
1094 * field. Symmetrically, synthetic accessors are implicitly created for explicit
ly defined fields. | 1222 * field. Symmetrically, synthetic accessors are implicitly created for explicit
ly defined fields. |
1095 * The following rules apply: | 1223 * The following rules apply: |
1096 * | 1224 * |
1097 * * Every explicit field is represented by a non-synthetic [FieldElement]. | 1225 * * Every explicit field is represented by a non-synthetic [FieldElement]. |
1098 * * Every explicit field induces a getter and possibly a setter, both of which
are represented by | 1226 * * Every explicit field induces a getter and possibly a setter, both of which
are represented by |
1099 * synthetic [PropertyAccessorElement]s. | 1227 * synthetic [PropertyAccessorElement]s. |
1100 * * Every explicit getter or setter is represented by a non-synthetic[PropertyA
ccessorElement]. | 1228 * * Every explicit getter or setter is represented by a non-synthetic |
| 1229 * [PropertyAccessorElement]. |
1101 * * Every explicit getter or setter (or pair thereof if they have the same name
) induces a field | 1230 * * Every explicit getter or setter (or pair thereof if they have the same name
) induces a field |
1102 * that is represented by a synthetic [FieldElement]. | 1231 * that is represented by a synthetic [FieldElement]. |
1103 * | 1232 * |
| 1233 * |
1104 * @coverage dart.engine.element | 1234 * @coverage dart.engine.element |
1105 */ | 1235 */ |
1106 abstract class PropertyAccessorElement implements ExecutableElement { | 1236 abstract class PropertyAccessorElement implements ExecutableElement { |
1107 | 1237 |
1108 /** | 1238 /** |
1109 * Return the accessor representing the getter that corresponds to (has the sa
me name as) this | 1239 * Return the accessor representing the getter that corresponds to (has the sa
me name as) this |
1110 * setter, or `null` if this accessor is not a setter or if there is no corres
ponding | 1240 * setter, or `null` if this accessor is not a setter or if there is no corres
ponding |
1111 * getter. | 1241 * getter. |
| 1242 * |
1112 * @return the getter that corresponds to this setter | 1243 * @return the getter that corresponds to this setter |
1113 */ | 1244 */ |
1114 PropertyAccessorElement get correspondingGetter; | 1245 PropertyAccessorElement get correspondingGetter; |
1115 | 1246 |
1116 /** | 1247 /** |
1117 * Return the accessor representing the setter that corresponds to (has the sa
me name as) this | 1248 * Return the accessor representing the setter that corresponds to (has the sa
me name as) this |
1118 * getter, or `null` if this accessor is not a getter or if there is no corres
ponding | 1249 * getter, or `null` if this accessor is not a getter or if there is no corres
ponding |
1119 * setter. | 1250 * setter. |
| 1251 * |
1120 * @return the setter that corresponds to this getter | 1252 * @return the setter that corresponds to this getter |
1121 */ | 1253 */ |
1122 PropertyAccessorElement get correspondingSetter; | 1254 PropertyAccessorElement get correspondingSetter; |
1123 | 1255 |
1124 /** | 1256 /** |
1125 * Return the field or top-level variable associated with this accessor. If th
is accessor was | 1257 * Return the field or top-level variable associated with this accessor. If th
is accessor was |
1126 * explicitly defined (is not synthetic) then the variable associated with it
will be synthetic. | 1258 * explicitly defined (is not synthetic) then the variable associated with it
will be synthetic. |
| 1259 * |
1127 * @return the variable associated with this accessor | 1260 * @return the variable associated with this accessor |
1128 */ | 1261 */ |
1129 PropertyInducingElement get variable; | 1262 PropertyInducingElement get variable; |
1130 | 1263 |
1131 /** | 1264 /** |
1132 * Return `true` if this accessor is abstract. Accessors are abstract if they
are not | 1265 * Return `true` if this accessor is abstract. Accessors are abstract if they
are not |
1133 * external and have no body. | 1266 * external and have no body. |
| 1267 * |
1134 * @return `true` if this accessor is abstract | 1268 * @return `true` if this accessor is abstract |
1135 */ | 1269 */ |
1136 bool get isAbstract; | 1270 bool get isAbstract; |
1137 | 1271 |
1138 /** | 1272 /** |
1139 * Return `true` if this accessor represents a getter. | 1273 * Return `true` if this accessor represents a getter. |
| 1274 * |
1140 * @return `true` if this accessor represents a getter | 1275 * @return `true` if this accessor represents a getter |
1141 */ | 1276 */ |
1142 bool get isGetter; | 1277 bool get isGetter; |
1143 | 1278 |
1144 /** | 1279 /** |
1145 * Return `true` if this accessor represents a setter. | 1280 * Return `true` if this accessor represents a setter. |
| 1281 * |
1146 * @return `true` if this accessor represents a setter | 1282 * @return `true` if this accessor represents a setter |
1147 */ | 1283 */ |
1148 bool get isSetter; | 1284 bool get isSetter; |
1149 } | 1285 } |
1150 /** | 1286 /** |
1151 * The interface `PropertyInducingElement` defines the behavior of elements repr
esenting a | 1287 * The interface `PropertyInducingElement` defines the behavior of elements repr
esenting a |
1152 * variable that has an associated getter and possibly a setter. Note that expli
citly defined | 1288 * variable that has an associated getter and possibly a setter. Note that expli
citly defined |
1153 * variables implicitly define a synthetic getter and that non-`final` explicitl
y defined | 1289 * variables implicitly define a synthetic getter and that non-`final` explicitl
y defined |
1154 * variables implicitly define a synthetic setter. Symmetrically, synthetic fiel
ds are implicitly | 1290 * variables implicitly define a synthetic setter. Symmetrically, synthetic fiel
ds are implicitly |
1155 * created for explicitly defined getters and setters. The following rules apply
: | 1291 * created for explicitly defined getters and setters. The following rules apply
: |
1156 * | 1292 * |
1157 * * Every explicit variable is represented by a non-synthetic [PropertyInducing
Element]. | 1293 * * Every explicit variable is represented by a non-synthetic [PropertyInducing
Element]. |
1158 * * Every explicit variable induces a getter and possibly a setter, both of whi
ch are represented | 1294 * * Every explicit variable induces a getter and possibly a setter, both of whi
ch are represented |
1159 * by synthetic [PropertyAccessorElement]s. | 1295 * by synthetic [PropertyAccessorElement]s. |
1160 * * Every explicit getter or setter is represented by a non-synthetic[PropertyA
ccessorElement]. | 1296 * * Every explicit getter or setter is represented by a non-synthetic |
| 1297 * [PropertyAccessorElement]. |
1161 * * Every explicit getter or setter (or pair thereof if they have the same name
) induces a | 1298 * * Every explicit getter or setter (or pair thereof if they have the same name
) induces a |
1162 * variable that is represented by a synthetic [PropertyInducingElement]. | 1299 * variable that is represented by a synthetic [PropertyInducingElement]. |
1163 * | 1300 * |
| 1301 * |
1164 * @coverage dart.engine.element | 1302 * @coverage dart.engine.element |
1165 */ | 1303 */ |
1166 abstract class PropertyInducingElement implements VariableElement { | 1304 abstract class PropertyInducingElement implements VariableElement { |
1167 | 1305 |
1168 /** | 1306 /** |
1169 * Return the getter associated with this variable. If this variable was expli
citly defined (is | 1307 * Return the getter associated with this variable. If this variable was expli
citly defined (is |
1170 * not synthetic) then the getter associated with it will be synthetic. | 1308 * not synthetic) then the getter associated with it will be synthetic. |
| 1309 * |
1171 * @return the getter associated with this variable | 1310 * @return the getter associated with this variable |
1172 */ | 1311 */ |
1173 PropertyAccessorElement get getter; | 1312 PropertyAccessorElement get getter; |
1174 | 1313 |
1175 /** | 1314 /** |
1176 * Return the setter associated with this variable, or `null` if the variable
is effectively`final` and therefore does not have a setter associated with it. (
This can happen either | 1315 * Return the setter associated with this variable, or `null` if the variable
is effectively |
| 1316 * `final` and therefore does not have a setter associated with it. (This can
happen either |
1177 * because the variable is explicitly defined as being `final` or because the
variable is | 1317 * because the variable is explicitly defined as being `final` or because the
variable is |
1178 * induced by an explicit getter that does not have a corresponding setter.) I
f this variable was | 1318 * induced by an explicit getter that does not have a corresponding setter.) I
f this variable was |
1179 * explicitly defined (is not synthetic) then the setter associated with it wi
ll be synthetic. | 1319 * explicitly defined (is not synthetic) then the setter associated with it wi
ll be synthetic. |
| 1320 * |
1180 * @return the setter associated with this variable | 1321 * @return the setter associated with this variable |
1181 */ | 1322 */ |
1182 PropertyAccessorElement get setter; | 1323 PropertyAccessorElement get setter; |
1183 | 1324 |
1184 /** | 1325 /** |
1185 * Return `true` if this element is a static element. A static element is an e
lement that is | 1326 * Return `true` if this element is a static element. A static element is an e
lement that is |
1186 * not associated with a particular instance, but rather with an entire librar
y or class. | 1327 * not associated with a particular instance, but rather with an entire librar
y or class. |
| 1328 * |
1187 * @return `true` if this executable element is a static element | 1329 * @return `true` if this executable element is a static element |
1188 */ | 1330 */ |
1189 bool get isStatic; | 1331 bool get isStatic; |
1190 } | 1332 } |
1191 /** | 1333 /** |
1192 * The interface `ShowElementCombinator` defines the behavior of combinators tha
t cause some | 1334 * The interface `ShowElementCombinator` defines the behavior of combinators tha
t cause some |
1193 * of the names in a namespace to be visible (and the rest hidden) when being im
ported. | 1335 * of the names in a namespace to be visible (and the rest hidden) when being im
ported. |
| 1336 * |
1194 * @coverage dart.engine.element | 1337 * @coverage dart.engine.element |
1195 */ | 1338 */ |
1196 abstract class ShowElementCombinator implements NamespaceCombinator { | 1339 abstract class ShowElementCombinator implements NamespaceCombinator { |
1197 | 1340 |
1198 /** | 1341 /** |
1199 * Return an array containing the names that are to be made visible in the imp
orting library if | 1342 * Return an array containing the names that are to be made visible in the imp
orting library if |
1200 * they are defined in the imported library. | 1343 * they are defined in the imported library. |
| 1344 * |
1201 * @return the names from the imported library that are visible in the importi
ng library | 1345 * @return the names from the imported library that are visible in the importi
ng library |
1202 */ | 1346 */ |
1203 List<String> get shownNames; | 1347 List<String> get shownNames; |
1204 } | 1348 } |
1205 /** | 1349 /** |
1206 * The interface `TopLevelVariableElement` defines the behavior of elements repr
esenting a | 1350 * The interface `TopLevelVariableElement` defines the behavior of elements repr
esenting a |
1207 * top-level variable. | 1351 * top-level variable. |
| 1352 * |
1208 * @coverage dart.engine.element | 1353 * @coverage dart.engine.element |
1209 */ | 1354 */ |
1210 abstract class TopLevelVariableElement implements PropertyInducingElement { | 1355 abstract class TopLevelVariableElement implements PropertyInducingElement { |
1211 } | 1356 } |
1212 /** | 1357 /** |
1213 * The interface `TypeVariableElement` defines the behavior of elements represen
ting a type | 1358 * The interface `TypeVariableElement` defines the behavior of elements represen
ting a type |
1214 * variable. | 1359 * variable. |
| 1360 * |
1215 * @coverage dart.engine.element | 1361 * @coverage dart.engine.element |
1216 */ | 1362 */ |
1217 abstract class TypeVariableElement implements Element { | 1363 abstract class TypeVariableElement implements Element { |
1218 | 1364 |
1219 /** | 1365 /** |
1220 * Return the type representing the bound associated with this variable, or `n
ull` if this | 1366 * Return the type representing the bound associated with this variable, or `n
ull` if this |
1221 * variable does not have an explicit bound. | 1367 * variable does not have an explicit bound. |
| 1368 * |
1222 * @return the type representing the bound associated with this variable | 1369 * @return the type representing the bound associated with this variable |
1223 */ | 1370 */ |
1224 Type2 get bound; | 1371 Type2 get bound; |
1225 | 1372 |
1226 /** | 1373 /** |
1227 * Return the type defined by this type variable. | 1374 * Return the type defined by this type variable. |
| 1375 * |
1228 * @return the type defined by this type variable | 1376 * @return the type defined by this type variable |
1229 */ | 1377 */ |
1230 TypeVariableType get type; | 1378 TypeVariableType get type; |
1231 } | 1379 } |
1232 /** | 1380 /** |
1233 * The interface `UndefinedElement` defines the behavior of pseudo-elements that
represent | 1381 * The interface `UndefinedElement` defines the behavior of pseudo-elements that
represent |
1234 * names that are undefined. This situation is not allowed by the language, so o
bjects implementing | 1382 * names that are undefined. This situation is not allowed by the language, so o
bjects implementing |
1235 * this interface always represent an error. As a result, most of the normal ope
rations on elements | 1383 * this interface always represent an error. As a result, most of the normal ope
rations on elements |
1236 * do not make sense and will return useless results. | 1384 * do not make sense and will return useless results. |
| 1385 * |
1237 * @coverage dart.engine.element | 1386 * @coverage dart.engine.element |
1238 */ | 1387 */ |
1239 abstract class UndefinedElement implements Element { | 1388 abstract class UndefinedElement implements Element { |
1240 } | 1389 } |
1241 /** | 1390 /** |
1242 * The interface `UriReferencedElement` defines the behavior of objects included
into a | 1391 * The interface `UriReferencedElement` defines the behavior of objects included
into a |
1243 * library using some URI. | 1392 * library using some URI. |
| 1393 * |
1244 * @coverage dart.engine.element | 1394 * @coverage dart.engine.element |
1245 */ | 1395 */ |
1246 abstract class UriReferencedElement implements Element { | 1396 abstract class UriReferencedElement implements Element { |
1247 | 1397 |
1248 /** | 1398 /** |
1249 * Return the URI that is used to include this element into the enclosing libr
ary, or `null`if this is the defining compilation unit of a library. | 1399 * Return the URI that is used to include this element into the enclosing libr
ary, or `null` |
| 1400 * if this is the defining compilation unit of a library. |
| 1401 * |
1250 * @return the URI that is used to include this element into the enclosing lib
rary | 1402 * @return the URI that is used to include this element into the enclosing lib
rary |
1251 */ | 1403 */ |
1252 String get uri; | 1404 String get uri; |
1253 } | 1405 } |
1254 /** | 1406 /** |
1255 * The interface `VariableElement` defines the behavior common to elements that
represent a | 1407 * The interface `VariableElement` defines the behavior common to elements that
represent a |
1256 * variable. | 1408 * variable. |
| 1409 * |
1257 * @coverage dart.engine.element | 1410 * @coverage dart.engine.element |
1258 */ | 1411 */ |
1259 abstract class VariableElement implements Element { | 1412 abstract class VariableElement implements Element { |
1260 | 1413 |
1261 /** | 1414 /** |
1262 * Return a synthetic function representing this variable's initializer, or `n
ull` if this | 1415 * Return a synthetic function representing this variable's initializer, or `n
ull` if this |
1263 * variable does not have an initializer. The function will have no parameters
. The return type of | 1416 * variable does not have an initializer. The function will have no parameters
. The return type of |
1264 * the function will be the compile-time type of the initialization expression
. | 1417 * the function will be the compile-time type of the initialization expression
. |
| 1418 * |
1265 * @return a synthetic function representing this variable's initializer | 1419 * @return a synthetic function representing this variable's initializer |
1266 */ | 1420 */ |
1267 FunctionElement get initializer; | 1421 FunctionElement get initializer; |
1268 | 1422 |
1269 /** | 1423 /** |
1270 * Return the declared type of this variable, or `null` if the variable did no
t have a | 1424 * Return the declared type of this variable, or `null` if the variable did no
t have a |
1271 * declared type (such as if it was declared using the keyword 'var'). | 1425 * declared type (such as if it was declared using the keyword 'var'). |
| 1426 * |
1272 * @return the declared type of this variable | 1427 * @return the declared type of this variable |
1273 */ | 1428 */ |
1274 Type2 get type; | 1429 Type2 get type; |
1275 | 1430 |
1276 /** | 1431 /** |
1277 * Return `true` if this variable was declared with the 'const' modifier. | 1432 * Return `true` if this variable was declared with the 'const' modifier. |
| 1433 * |
1278 * @return `true` if this variable was declared with the 'const' modifier | 1434 * @return `true` if this variable was declared with the 'const' modifier |
1279 */ | 1435 */ |
1280 bool get isConst; | 1436 bool get isConst; |
1281 | 1437 |
1282 /** | 1438 /** |
1283 * Return `true` if this variable was declared with the 'final' modifier. Vari
ables that are | 1439 * Return `true` if this variable was declared with the 'final' modifier. Vari
ables that are |
1284 * declared with the 'const' modifier will return `false` even though they are
implicitly | 1440 * declared with the 'const' modifier will return `false` even though they are
implicitly |
1285 * final. | 1441 * final. |
| 1442 * |
1286 * @return `true` if this variable was declared with the 'final' modifier | 1443 * @return `true` if this variable was declared with the 'final' modifier |
1287 */ | 1444 */ |
1288 bool get isFinal; | 1445 bool get isFinal; |
1289 } | 1446 } |
1290 /** | 1447 /** |
1291 * Instances of the class `GeneralizingElementVisitor` implement an element visi
tor that will | 1448 * Instances of the class `GeneralizingElementVisitor` implement an element visi
tor that will |
1292 * recursively visit all of the elements in an element model (like instances of
the class[RecursiveElementVisitor]). In addition, when an element of a specific
type is visited not | 1449 * recursively visit all of the elements in an element model (like instances of
the class |
| 1450 * [RecursiveElementVisitor]). In addition, when an element of a specific type i
s visited not |
1293 * only will the visit method for that specific type of element be invoked, but
additional methods | 1451 * only will the visit method for that specific type of element be invoked, but
additional methods |
1294 * for the supertypes of that element will also be invoked. For example, using a
n instance of this | 1452 * for the supertypes of that element will also be invoked. For example, using a
n instance of this |
1295 * class to visit a [MethodElement] will cause the method[visitMethodElement] to
be invoked but will also cause the methods[visitExecutableElement] and [visitEl
ement] to be | 1453 * class to visit a [MethodElement] will cause the method |
| 1454 * [visitMethodElement] to be invoked but will also cause the methods |
| 1455 * [visitExecutableElement] and [visitElement] to be |
1296 * subsequently invoked. This allows visitors to be written that visit all execu
table elements | 1456 * subsequently invoked. This allows visitors to be written that visit all execu
table elements |
1297 * without needing to override the visit method for each of the specific subclas
ses of[ExecutableElement]. | 1457 * without needing to override the visit method for each of the specific subclas
ses of |
| 1458 * [ExecutableElement]. |
1298 * | 1459 * |
1299 * Note, however, that unlike many visitors, element visitors visit objects base
d on the interfaces | 1460 * Note, however, that unlike many visitors, element visitors visit objects base
d on the interfaces |
1300 * implemented by those elements. Because interfaces form a graph structure rath
er than a tree | 1461 * implemented by those elements. Because interfaces form a graph structure rath
er than a tree |
1301 * structure the way classes do, and because it is generally undesirable for an
object to be visited | 1462 * structure the way classes do, and because it is generally undesirable for an
object to be visited |
1302 * more than once, this class flattens the interface graph into a pseudo-tree. I
n particular, this | 1463 * more than once, this class flattens the interface graph into a pseudo-tree. I
n particular, this |
1303 * class treats elements as if the element types were structured in the followin
g way: | 1464 * class treats elements as if the element types were structured in the followin
g way: |
1304 * | 1465 * |
| 1466 * |
1305 * <pre> | 1467 * <pre> |
1306 * Element | 1468 * Element |
1307 * ClassElement | 1469 * ClassElement |
1308 * CompilationUnitElement | 1470 * CompilationUnitElement |
1309 * ExecutableElement | 1471 * ExecutableElement |
1310 * ConstructorElement | 1472 * ConstructorElement |
1311 * LocalElement | 1473 * LocalElement |
1312 * FunctionElement | 1474 * FunctionElement |
1313 * MethodElement | 1475 * MethodElement |
1314 * PropertyAccessorElement | 1476 * PropertyAccessorElement |
1315 * ExportElement | 1477 * ExportElement |
1316 * HtmlElement | 1478 * HtmlElement |
1317 * ImportElement | 1479 * ImportElement |
1318 * LabelElement | 1480 * LabelElement |
1319 * LibraryElement | 1481 * LibraryElement |
1320 * MultiplyDefinedElement | 1482 * MultiplyDefinedElement |
1321 * PrefixElement | 1483 * PrefixElement |
1322 * TypeAliasElement | 1484 * TypeAliasElement |
1323 * TypeVariableElement | 1485 * TypeVariableElement |
1324 * UndefinedElement | 1486 * UndefinedElement |
1325 * VariableElement | 1487 * VariableElement |
1326 * PropertyInducingElement | 1488 * PropertyInducingElement |
1327 * FieldElement | 1489 * FieldElement |
1328 * TopLevelVariableElement | 1490 * TopLevelVariableElement |
1329 * LocalElement | 1491 * LocalElement |
1330 * LocalVariableElement | 1492 * LocalVariableElement |
1331 * ParameterElement | 1493 * ParameterElement |
1332 * FieldFormalParameterElement | 1494 * FieldFormalParameterElement |
1333 * </pre> | 1495 * </pre> |
1334 * | 1496 * |
1335 * Subclasses that override a visit method must either invoke the overridden vis
it method or | 1497 * Subclasses that override a visit method must either invoke the overridden vis
it method or |
1336 * explicitly invoke the more general visit method. Failure to do so will cause
the visit methods | 1498 * explicitly invoke the more general visit method. Failure to do so will cause
the visit methods |
1337 * for superclasses of the element to not be invoked and will cause the children
of the visited node | 1499 * for superclasses of the element to not be invoked and will cause the children
of the visited node |
1338 * to not be visited. | 1500 * to not be visited. |
| 1501 * |
1339 * @coverage dart.engine.element | 1502 * @coverage dart.engine.element |
1340 */ | 1503 */ |
1341 class GeneralizingElementVisitor<R> implements ElementVisitor<R> { | 1504 class GeneralizingElementVisitor<R> implements ElementVisitor<R> { |
1342 R visitClassElement(ClassElement element) => visitElement(element); | 1505 R visitClassElement(ClassElement element) => visitElement(element); |
1343 R visitCompilationUnitElement(CompilationUnitElement element) => visitElement(
element); | 1506 R visitCompilationUnitElement(CompilationUnitElement element) => visitElement(
element); |
1344 R visitConstructorElement(ConstructorElement element) => visitExecutableElemen
t(element); | 1507 R visitConstructorElement(ConstructorElement element) => visitExecutableElemen
t(element); |
1345 R visitElement(Element element) { | 1508 R visitElement(Element element) { |
1346 element.visitChildren(this); | 1509 element.visitChildren(this); |
1347 return null; | 1510 return null; |
1348 } | 1511 } |
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1382 } | 1545 } |
1383 /** | 1546 /** |
1384 * Instances of the class `RecursiveElementVisitor` implement an element visitor
that will | 1547 * Instances of the class `RecursiveElementVisitor` implement an element visitor
that will |
1385 * recursively visit all of the element in an element model. For example, using
an instance of this | 1548 * recursively visit all of the element in an element model. For example, using
an instance of this |
1386 * class to visit a [CompilationUnitElement] will also cause all of the types in
the | 1549 * class to visit a [CompilationUnitElement] will also cause all of the types in
the |
1387 * compilation unit to be visited. | 1550 * compilation unit to be visited. |
1388 * | 1551 * |
1389 * Subclasses that override a visit method must either invoke the overridden vis
it method or must | 1552 * Subclasses that override a visit method must either invoke the overridden vis
it method or must |
1390 * explicitly ask the visited element to visit its children. Failure to do so wi
ll cause the | 1553 * explicitly ask the visited element to visit its children. Failure to do so wi
ll cause the |
1391 * children of the visited element to not be visited. | 1554 * children of the visited element to not be visited. |
| 1555 * |
1392 * @coverage dart.engine.element | 1556 * @coverage dart.engine.element |
1393 */ | 1557 */ |
1394 class RecursiveElementVisitor<R> implements ElementVisitor<R> { | 1558 class RecursiveElementVisitor<R> implements ElementVisitor<R> { |
1395 R visitClassElement(ClassElement element) { | 1559 R visitClassElement(ClassElement element) { |
1396 element.visitChildren(this); | 1560 element.visitChildren(this); |
1397 return null; | 1561 return null; |
1398 } | 1562 } |
1399 R visitCompilationUnitElement(CompilationUnitElement element) { | 1563 R visitCompilationUnitElement(CompilationUnitElement element) { |
1400 element.visitChildren(this); | 1564 element.visitChildren(this); |
1401 return null; | 1565 return null; |
(...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1479 R visitTypeVariableElement(TypeVariableElement element) { | 1643 R visitTypeVariableElement(TypeVariableElement element) { |
1480 element.visitChildren(this); | 1644 element.visitChildren(this); |
1481 return null; | 1645 return null; |
1482 } | 1646 } |
1483 } | 1647 } |
1484 /** | 1648 /** |
1485 * Instances of the class `SimpleElementVisitor` implement an element visitor th
at will do | 1649 * Instances of the class `SimpleElementVisitor` implement an element visitor th
at will do |
1486 * nothing when visiting an element. It is intended to be a superclass for class
es that use the | 1650 * nothing when visiting an element. It is intended to be a superclass for class
es that use the |
1487 * visitor pattern primarily as a dispatch mechanism (and hence don't need to re
cursively visit a | 1651 * visitor pattern primarily as a dispatch mechanism (and hence don't need to re
cursively visit a |
1488 * whole structure) and that only need to visit a small number of element types. | 1652 * whole structure) and that only need to visit a small number of element types. |
| 1653 * |
1489 * @coverage dart.engine.element | 1654 * @coverage dart.engine.element |
1490 */ | 1655 */ |
1491 class SimpleElementVisitor<R> implements ElementVisitor<R> { | 1656 class SimpleElementVisitor<R> implements ElementVisitor<R> { |
1492 R visitClassElement(ClassElement element) => null; | 1657 R visitClassElement(ClassElement element) => null; |
1493 R visitCompilationUnitElement(CompilationUnitElement element) => null; | 1658 R visitCompilationUnitElement(CompilationUnitElement element) => null; |
1494 R visitConstructorElement(ConstructorElement element) => null; | 1659 R visitConstructorElement(ConstructorElement element) => null; |
1495 R visitEmbeddedHtmlScriptElement(EmbeddedHtmlScriptElement element) => null; | 1660 R visitEmbeddedHtmlScriptElement(EmbeddedHtmlScriptElement element) => null; |
1496 R visitExportElement(ExportElement element) => null; | 1661 R visitExportElement(ExportElement element) => null; |
1497 R visitExternalHtmlScriptElement(ExternalHtmlScriptElement element) => null; | 1662 R visitExternalHtmlScriptElement(ExternalHtmlScriptElement element) => null; |
1498 R visitFieldElement(FieldElement element) => null; | 1663 R visitFieldElement(FieldElement element) => null; |
1499 R visitFieldFormalParameterElement(FieldFormalParameterElement element) => nul
l; | 1664 R visitFieldFormalParameterElement(FieldFormalParameterElement element) => nul
l; |
1500 R visitFunctionElement(FunctionElement element) => null; | 1665 R visitFunctionElement(FunctionElement element) => null; |
1501 R visitFunctionTypeAliasElement(FunctionTypeAliasElement element) => null; | 1666 R visitFunctionTypeAliasElement(FunctionTypeAliasElement element) => null; |
1502 R visitHtmlElement(HtmlElement element) => null; | 1667 R visitHtmlElement(HtmlElement element) => null; |
1503 R visitImportElement(ImportElement element) => null; | 1668 R visitImportElement(ImportElement element) => null; |
1504 R visitLabelElement(LabelElement element) => null; | 1669 R visitLabelElement(LabelElement element) => null; |
1505 R visitLibraryElement(LibraryElement element) => null; | 1670 R visitLibraryElement(LibraryElement element) => null; |
1506 R visitLocalVariableElement(LocalVariableElement element) => null; | 1671 R visitLocalVariableElement(LocalVariableElement element) => null; |
1507 R visitMethodElement(MethodElement element) => null; | 1672 R visitMethodElement(MethodElement element) => null; |
1508 R visitMultiplyDefinedElement(MultiplyDefinedElement element) => null; | 1673 R visitMultiplyDefinedElement(MultiplyDefinedElement element) => null; |
1509 R visitParameterElement(ParameterElement element) => null; | 1674 R visitParameterElement(ParameterElement element) => null; |
1510 R visitPrefixElement(PrefixElement element) => null; | 1675 R visitPrefixElement(PrefixElement element) => null; |
1511 R visitPropertyAccessorElement(PropertyAccessorElement element) => null; | 1676 R visitPropertyAccessorElement(PropertyAccessorElement element) => null; |
1512 R visitTopLevelVariableElement(TopLevelVariableElement element) => null; | 1677 R visitTopLevelVariableElement(TopLevelVariableElement element) => null; |
1513 R visitTypeVariableElement(TypeVariableElement element) => null; | 1678 R visitTypeVariableElement(TypeVariableElement element) => null; |
1514 } | 1679 } |
1515 /** | 1680 /** |
1516 * Instances of the class `ClassElementImpl` implement a `ClassElement`. | 1681 * Instances of the class `ClassElementImpl` implement a `ClassElement`. |
| 1682 * |
1517 * @coverage dart.engine.element | 1683 * @coverage dart.engine.element |
1518 */ | 1684 */ |
1519 class ClassElementImpl extends ElementImpl implements ClassElement { | 1685 class ClassElementImpl extends ElementImpl implements ClassElement { |
1520 | 1686 |
1521 /** | 1687 /** |
1522 * An array containing all of the accessors (getters and setters) contained in
this class. | 1688 * An array containing all of the accessors (getters and setters) contained in
this class. |
1523 */ | 1689 */ |
1524 List<PropertyAccessorElement> _accessors = PropertyAccessorElementImpl.EMPTY_A
RRAY; | 1690 List<PropertyAccessorElement> _accessors = PropertyAccessorElementImpl.EMPTY_A
RRAY; |
1525 | 1691 |
1526 /** | 1692 /** |
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1564 */ | 1730 */ |
1565 List<TypeVariableElement> _typeVariables = TypeVariableElementImpl.EMPTY_ARRAY
; | 1731 List<TypeVariableElement> _typeVariables = TypeVariableElementImpl.EMPTY_ARRAY
; |
1566 | 1732 |
1567 /** | 1733 /** |
1568 * An empty array of type elements. | 1734 * An empty array of type elements. |
1569 */ | 1735 */ |
1570 static List<ClassElement> EMPTY_ARRAY = new List<ClassElement>(0); | 1736 static List<ClassElement> EMPTY_ARRAY = new List<ClassElement>(0); |
1571 | 1737 |
1572 /** | 1738 /** |
1573 * Initialize a newly created class element to have the given name. | 1739 * Initialize a newly created class element to have the given name. |
| 1740 * |
1574 * @param name the name of this element | 1741 * @param name the name of this element |
1575 */ | 1742 */ |
1576 ClassElementImpl(Identifier name) : super.con1(name) { | 1743 ClassElementImpl(Identifier name) : super.con1(name) { |
1577 } | 1744 } |
1578 accept(ElementVisitor visitor) => visitor.visitClassElement(this); | 1745 accept(ElementVisitor visitor) => visitor.visitClassElement(this); |
1579 List<PropertyAccessorElement> get accessors => _accessors; | 1746 List<PropertyAccessorElement> get accessors => _accessors; |
1580 List<InterfaceType> get allSupertypes { | 1747 List<InterfaceType> get allSupertypes { |
1581 List<InterfaceType> list = new List<InterfaceType>(); | 1748 List<InterfaceType> list = new List<InterfaceType>(); |
1582 collectAllSupertypes(list); | 1749 collectAllSupertypes(list); |
1583 return new List.from(list); | 1750 return new List.from(list); |
(...skipping 24 matching lines...) Expand all Loading... |
1608 return typeVariable as TypeVariableElementImpl; | 1775 return typeVariable as TypeVariableElementImpl; |
1609 } | 1776 } |
1610 } | 1777 } |
1611 return null; | 1778 return null; |
1612 } | 1779 } |
1613 List<ConstructorElement> get constructors => _constructors; | 1780 List<ConstructorElement> get constructors => _constructors; |
1614 | 1781 |
1615 /** | 1782 /** |
1616 * Given some name, this returns the [FieldElement] with the matching name, if
there is no | 1783 * Given some name, this returns the [FieldElement] with the matching name, if
there is no |
1617 * such field, then `null` is returned. | 1784 * such field, then `null` is returned. |
| 1785 * |
1618 * @param name some name to lookup a field element with | 1786 * @param name some name to lookup a field element with |
1619 * @return the matching field element, or `null` if no such element was found | 1787 * @return the matching field element, or `null` if no such element was found |
1620 */ | 1788 */ |
1621 FieldElement getField(String name2) { | 1789 FieldElement getField(String name2) { |
1622 for (FieldElement fieldElement in _fields) { | 1790 for (FieldElement fieldElement in _fields) { |
1623 if (name2 == fieldElement.name) { | 1791 if (name2 == fieldElement.name) { |
1624 return fieldElement; | 1792 return fieldElement; |
1625 } | 1793 } |
1626 } | 1794 } |
1627 return null; | 1795 return null; |
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1672 List<TypeVariableElement> get typeVariables => _typeVariables; | 1840 List<TypeVariableElement> get typeVariables => _typeVariables; |
1673 ConstructorElement get unnamedConstructor { | 1841 ConstructorElement get unnamedConstructor { |
1674 for (ConstructorElement element in constructors) { | 1842 for (ConstructorElement element in constructors) { |
1675 String name = element.displayName; | 1843 String name = element.displayName; |
1676 if (name == null || name.isEmpty) { | 1844 if (name == null || name.isEmpty) { |
1677 return element; | 1845 return element; |
1678 } | 1846 } |
1679 } | 1847 } |
1680 return null; | 1848 return null; |
1681 } | 1849 } |
1682 bool hasDefaultConstructor() { | |
1683 for (ConstructorElement constructor in constructors) { | |
1684 if (constructor.isDefaultConstructor) { | |
1685 return true; | |
1686 } | |
1687 } | |
1688 return false; | |
1689 } | |
1690 bool hasNonFinalField() { | 1850 bool hasNonFinalField() { |
1691 List<ClassElement> classesToVisit = new List<ClassElement>(); | 1851 List<ClassElement> classesToVisit = new List<ClassElement>(); |
1692 Set<ClassElement> visitedClasses = new Set<ClassElement>(); | 1852 Set<ClassElement> visitedClasses = new Set<ClassElement>(); |
1693 classesToVisit.add(this); | 1853 classesToVisit.add(this); |
1694 while (!classesToVisit.isEmpty) { | 1854 while (!classesToVisit.isEmpty) { |
1695 ClassElement currentElement = classesToVisit.removeAt(0); | 1855 ClassElement currentElement = classesToVisit.removeAt(0); |
1696 if (javaSetAdd(visitedClasses, currentElement)) { | 1856 if (javaSetAdd(visitedClasses, currentElement)) { |
1697 for (FieldElement field in currentElement.fields) { | 1857 for (FieldElement field in currentElement.fields) { |
1698 if (!field.isFinal && !field.isConst && !field.isStatic && !field.isSy
nthetic) { | 1858 if (!field.isFinal && !field.isConst && !field.isStatic && !field.isSy
nthetic) { |
1699 return true; | 1859 return true; |
(...skipping 92 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1792 if (supertype == null) { | 1952 if (supertype == null) { |
1793 return null; | 1953 return null; |
1794 } | 1954 } |
1795 currentElement = supertype.element; | 1955 currentElement = supertype.element; |
1796 } | 1956 } |
1797 return null; | 1957 return null; |
1798 } | 1958 } |
1799 | 1959 |
1800 /** | 1960 /** |
1801 * Set whether this class is abstract to correspond to the given value. | 1961 * Set whether this class is abstract to correspond to the given value. |
| 1962 * |
1802 * @param isAbstract `true` if the class is abstract | 1963 * @param isAbstract `true` if the class is abstract |
1803 */ | 1964 */ |
1804 void set abstract(bool isAbstract) { | 1965 void set abstract(bool isAbstract) { |
1805 setModifier(Modifier.ABSTRACT, isAbstract); | 1966 setModifier(Modifier.ABSTRACT, isAbstract); |
1806 } | 1967 } |
1807 | 1968 |
1808 /** | 1969 /** |
1809 * Set the accessors contained in this class to the given accessors. | 1970 * Set the accessors contained in this class to the given accessors. |
| 1971 * |
1810 * @param accessors the accessors contained in this class | 1972 * @param accessors the accessors contained in this class |
1811 */ | 1973 */ |
1812 void set accessors(List<PropertyAccessorElement> accessors2) { | 1974 void set accessors(List<PropertyAccessorElement> accessors2) { |
1813 for (PropertyAccessorElement accessor in accessors2) { | 1975 for (PropertyAccessorElement accessor in accessors2) { |
1814 ((accessor as PropertyAccessorElementImpl)).enclosingElement = this; | 1976 ((accessor as PropertyAccessorElementImpl)).enclosingElement = this; |
1815 } | 1977 } |
1816 this._accessors = accessors2; | 1978 this._accessors = accessors2; |
1817 } | 1979 } |
1818 | 1980 |
1819 /** | 1981 /** |
1820 * Set the constructors contained in this class to the given constructors. | 1982 * Set the constructors contained in this class to the given constructors. |
| 1983 * |
1821 * @param constructors the constructors contained in this class | 1984 * @param constructors the constructors contained in this class |
1822 */ | 1985 */ |
1823 void set constructors(List<ConstructorElement> constructors2) { | 1986 void set constructors(List<ConstructorElement> constructors2) { |
1824 for (ConstructorElement constructor in constructors2) { | 1987 for (ConstructorElement constructor in constructors2) { |
1825 ((constructor as ConstructorElementImpl)).enclosingElement = this; | 1988 ((constructor as ConstructorElementImpl)).enclosingElement = this; |
1826 } | 1989 } |
1827 this._constructors = constructors2; | 1990 this._constructors = constructors2; |
1828 } | 1991 } |
1829 | 1992 |
1830 /** | 1993 /** |
1831 * Set the fields contained in this class to the given fields. | 1994 * Set the fields contained in this class to the given fields. |
| 1995 * |
1832 * @param fields the fields contained in this class | 1996 * @param fields the fields contained in this class |
1833 */ | 1997 */ |
1834 void set fields(List<FieldElement> fields2) { | 1998 void set fields(List<FieldElement> fields2) { |
1835 for (FieldElement field in fields2) { | 1999 for (FieldElement field in fields2) { |
1836 ((field as FieldElementImpl)).enclosingElement = this; | 2000 ((field as FieldElementImpl)).enclosingElement = this; |
1837 } | 2001 } |
1838 this._fields = fields2; | 2002 this._fields = fields2; |
1839 } | 2003 } |
1840 | 2004 |
1841 /** | 2005 /** |
1842 * Set whether this class references 'super' to the given value. | 2006 * Set whether this class references 'super' to the given value. |
| 2007 * |
1843 * @param isReferencedSuper `true` references 'super' | 2008 * @param isReferencedSuper `true` references 'super' |
1844 */ | 2009 */ |
1845 void set hasReferenceToSuper2(bool isReferencedSuper) { | 2010 void set hasReferenceToSuper2(bool isReferencedSuper) { |
1846 setModifier(Modifier.REFERENCES_SUPER, isReferencedSuper); | 2011 setModifier(Modifier.REFERENCES_SUPER, isReferencedSuper); |
1847 } | 2012 } |
1848 | 2013 |
1849 /** | 2014 /** |
1850 * Set the interfaces that are implemented by this class to the given types. | 2015 * Set the interfaces that are implemented by this class to the given types. |
| 2016 * |
1851 * @param the interfaces that are implemented by this class | 2017 * @param the interfaces that are implemented by this class |
1852 */ | 2018 */ |
1853 void set interfaces(List<InterfaceType> interfaces2) { | 2019 void set interfaces(List<InterfaceType> interfaces2) { |
1854 this._interfaces = interfaces2; | 2020 this._interfaces = interfaces2; |
1855 } | 2021 } |
1856 | 2022 |
1857 /** | 2023 /** |
1858 * Set the methods contained in this class to the given methods. | 2024 * Set the methods contained in this class to the given methods. |
| 2025 * |
1859 * @param methods the methods contained in this class | 2026 * @param methods the methods contained in this class |
1860 */ | 2027 */ |
1861 void set methods(List<MethodElement> methods2) { | 2028 void set methods(List<MethodElement> methods2) { |
1862 for (MethodElement method in methods2) { | 2029 for (MethodElement method in methods2) { |
1863 ((method as MethodElementImpl)).enclosingElement = this; | 2030 ((method as MethodElementImpl)).enclosingElement = this; |
1864 } | 2031 } |
1865 this._methods = methods2; | 2032 this._methods = methods2; |
1866 } | 2033 } |
1867 | 2034 |
1868 /** | 2035 /** |
1869 * Set the mixins that are applied to the class being extended in order to der
ive the superclass | 2036 * Set the mixins that are applied to the class being extended in order to der
ive the superclass |
1870 * of this class to the given types. | 2037 * of this class to the given types. |
| 2038 * |
1871 * @param mixins the mixins that are applied to derive the superclass of this
class | 2039 * @param mixins the mixins that are applied to derive the superclass of this
class |
1872 */ | 2040 */ |
1873 void set mixins(List<InterfaceType> mixins2) { | 2041 void set mixins(List<InterfaceType> mixins2) { |
1874 this._mixins = mixins2; | 2042 this._mixins = mixins2; |
1875 } | 2043 } |
1876 | 2044 |
1877 /** | 2045 /** |
1878 * Set the superclass of the class to the given type. | 2046 * Set the superclass of the class to the given type. |
| 2047 * |
1879 * @param supertype the superclass of the class | 2048 * @param supertype the superclass of the class |
1880 */ | 2049 */ |
1881 void set supertype(InterfaceType supertype2) { | 2050 void set supertype(InterfaceType supertype2) { |
1882 this._supertype = supertype2; | 2051 this._supertype = supertype2; |
1883 } | 2052 } |
1884 | 2053 |
1885 /** | 2054 /** |
1886 * Set the type defined by the class to the given type. | 2055 * Set the type defined by the class to the given type. |
| 2056 * |
1887 * @param type the type defined by the class | 2057 * @param type the type defined by the class |
1888 */ | 2058 */ |
1889 void set type(InterfaceType type2) { | 2059 void set type(InterfaceType type2) { |
1890 this._type = type2; | 2060 this._type = type2; |
1891 } | 2061 } |
1892 | 2062 |
1893 /** | 2063 /** |
1894 * Set whether this class is defined by a typedef construct to correspond to t
he given value. | 2064 * Set whether this class is defined by a typedef construct to correspond to t
he given value. |
| 2065 * |
1895 * @param isTypedef `true` if the class is defined by a typedef construct | 2066 * @param isTypedef `true` if the class is defined by a typedef construct |
1896 */ | 2067 */ |
1897 void set typedef(bool isTypedef) { | 2068 void set typedef(bool isTypedef) { |
1898 setModifier(Modifier.TYPEDEF, isTypedef); | 2069 setModifier(Modifier.TYPEDEF, isTypedef); |
1899 } | 2070 } |
1900 | 2071 |
1901 /** | 2072 /** |
1902 * Set the type variables defined for this class to the given type variables. | 2073 * Set the type variables defined for this class to the given type variables. |
| 2074 * |
1903 * @param typeVariables the type variables defined for this class | 2075 * @param typeVariables the type variables defined for this class |
1904 */ | 2076 */ |
1905 void set typeVariables(List<TypeVariableElement> typeVariables2) { | 2077 void set typeVariables(List<TypeVariableElement> typeVariables2) { |
1906 for (TypeVariableElement typeVariable in typeVariables2) { | 2078 for (TypeVariableElement typeVariable in typeVariables2) { |
1907 ((typeVariable as TypeVariableElementImpl)).enclosingElement = this; | 2079 ((typeVariable as TypeVariableElementImpl)).enclosingElement = this; |
1908 } | 2080 } |
1909 this._typeVariables = typeVariables2; | 2081 this._typeVariables = typeVariables2; |
1910 } | 2082 } |
1911 | 2083 |
1912 /** | 2084 /** |
1913 * Set whether this class is a valid mixin to correspond to the given value. | 2085 * Set whether this class is a valid mixin to correspond to the given value. |
| 2086 * |
1914 * @param isValidMixin `true` if this class can be used as a mixin | 2087 * @param isValidMixin `true` if this class can be used as a mixin |
1915 */ | 2088 */ |
1916 void set validMixin(bool isValidMixin) { | 2089 void set validMixin(bool isValidMixin) { |
1917 setModifier(Modifier.MIXIN, isValidMixin); | 2090 setModifier(Modifier.MIXIN, isValidMixin); |
1918 } | 2091 } |
1919 void visitChildren(ElementVisitor<Object> visitor) { | 2092 void visitChildren(ElementVisitor<Object> visitor) { |
1920 super.visitChildren(visitor); | 2093 super.visitChildren(visitor); |
1921 safelyVisitChildren(_accessors, visitor); | 2094 safelyVisitChildren(_accessors, visitor); |
1922 safelyVisitChildren(_constructors, visitor); | 2095 safelyVisitChildren(_constructors, visitor); |
1923 safelyVisitChildren(_fields, visitor); | 2096 safelyVisitChildren(_fields, visitor); |
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1966 ClassElement element = type.element; | 2139 ClassElement element = type.element; |
1967 if (!visitedClasses.contains(element)) { | 2140 if (!visitedClasses.contains(element)) { |
1968 supertypes.add(type); | 2141 supertypes.add(type); |
1969 } | 2142 } |
1970 } | 2143 } |
1971 } | 2144 } |
1972 } | 2145 } |
1973 } | 2146 } |
1974 } | 2147 } |
1975 /** | 2148 /** |
1976 * Instances of the class `CompilationUnitElementImpl` implement a[CompilationUn
itElement]. | 2149 * Instances of the class `CompilationUnitElementImpl` implement a |
| 2150 * [CompilationUnitElement]. |
| 2151 * |
1977 * @coverage dart.engine.element | 2152 * @coverage dart.engine.element |
1978 */ | 2153 */ |
1979 class CompilationUnitElementImpl extends ElementImpl implements CompilationUnitE
lement { | 2154 class CompilationUnitElementImpl extends ElementImpl implements CompilationUnitE
lement { |
1980 | 2155 |
1981 /** | 2156 /** |
1982 * An empty array of compilation unit elements. | 2157 * An empty array of compilation unit elements. |
1983 */ | 2158 */ |
1984 static List<CompilationUnitElement> EMPTY_ARRAY = new List<CompilationUnitElem
ent>(0); | 2159 static List<CompilationUnitElement> EMPTY_ARRAY = new List<CompilationUnitElem
ent>(0); |
1985 | 2160 |
1986 /** | 2161 /** |
(...skipping 28 matching lines...) Expand all Loading... |
2015 List<ClassElement> _types = ClassElementImpl.EMPTY_ARRAY; | 2190 List<ClassElement> _types = ClassElementImpl.EMPTY_ARRAY; |
2016 | 2191 |
2017 /** | 2192 /** |
2018 * The URI that is specified by the "part" directive in the enclosing library,
or `null` if | 2193 * The URI that is specified by the "part" directive in the enclosing library,
or `null` if |
2019 * this is the defining compilation unit of a library. | 2194 * this is the defining compilation unit of a library. |
2020 */ | 2195 */ |
2021 String _uri; | 2196 String _uri; |
2022 | 2197 |
2023 /** | 2198 /** |
2024 * Initialize a newly created compilation unit element to have the given name. | 2199 * Initialize a newly created compilation unit element to have the given name. |
| 2200 * |
2025 * @param name the name of this element | 2201 * @param name the name of this element |
2026 */ | 2202 */ |
2027 CompilationUnitElementImpl(String name) : super.con2(name, -1) { | 2203 CompilationUnitElementImpl(String name) : super.con2(name, -1) { |
2028 } | 2204 } |
2029 accept(ElementVisitor visitor) => visitor.visitCompilationUnitElement(this); | 2205 accept(ElementVisitor visitor) => visitor.visitCompilationUnitElement(this); |
2030 bool operator ==(Object object) => object != null && runtimeType == object.run
timeType && _source == ((object as CompilationUnitElementImpl)).source; | 2206 bool operator ==(Object object) => object != null && runtimeType == object.run
timeType && _source == ((object as CompilationUnitElementImpl)).source; |
2031 List<PropertyAccessorElement> get accessors => _accessors; | 2207 List<PropertyAccessorElement> get accessors => _accessors; |
2032 ElementImpl getChild(String identifier2) { | 2208 ElementImpl getChild(String identifier2) { |
2033 for (PropertyAccessorElement accessor in _accessors) { | 2209 for (PropertyAccessorElement accessor in _accessors) { |
2034 if (((accessor as PropertyAccessorElementImpl)).identifier == identifier2)
{ | 2210 if (((accessor as PropertyAccessorElementImpl)).identifier == identifier2)
{ |
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2072 } | 2248 } |
2073 return null; | 2249 return null; |
2074 } | 2250 } |
2075 List<ClassElement> get types => _types; | 2251 List<ClassElement> get types => _types; |
2076 String get uri => _uri; | 2252 String get uri => _uri; |
2077 int get hashCode => _source.hashCode; | 2253 int get hashCode => _source.hashCode; |
2078 | 2254 |
2079 /** | 2255 /** |
2080 * Set the top-level accessors (getters and setters) contained in this compila
tion unit to the | 2256 * Set the top-level accessors (getters and setters) contained in this compila
tion unit to the |
2081 * given accessors. | 2257 * given accessors. |
| 2258 * |
2082 * @param the top-level accessors (getters and setters) contained in this comp
ilation unit | 2259 * @param the top-level accessors (getters and setters) contained in this comp
ilation unit |
2083 */ | 2260 */ |
2084 void set accessors(List<PropertyAccessorElement> accessors2) { | 2261 void set accessors(List<PropertyAccessorElement> accessors2) { |
2085 for (PropertyAccessorElement accessor in accessors2) { | 2262 for (PropertyAccessorElement accessor in accessors2) { |
2086 ((accessor as PropertyAccessorElementImpl)).enclosingElement = this; | 2263 ((accessor as PropertyAccessorElementImpl)).enclosingElement = this; |
2087 } | 2264 } |
2088 this._accessors = accessors2; | 2265 this._accessors = accessors2; |
2089 } | 2266 } |
2090 | 2267 |
2091 /** | 2268 /** |
2092 * Set the top-level functions contained in this compilation unit to the given
functions. | 2269 * Set the top-level functions contained in this compilation unit to the given
functions. |
| 2270 * |
2093 * @param functions the top-level functions contained in this compilation unit | 2271 * @param functions the top-level functions contained in this compilation unit |
2094 */ | 2272 */ |
2095 void set functions(List<FunctionElement> functions2) { | 2273 void set functions(List<FunctionElement> functions2) { |
2096 for (FunctionElement function in functions2) { | 2274 for (FunctionElement function in functions2) { |
2097 ((function as FunctionElementImpl)).enclosingElement = this; | 2275 ((function as FunctionElementImpl)).enclosingElement = this; |
2098 } | 2276 } |
2099 this._functions = functions2; | 2277 this._functions = functions2; |
2100 } | 2278 } |
2101 | 2279 |
2102 /** | 2280 /** |
2103 * Set the source that corresponds to this compilation unit to the given sourc
e. | 2281 * Set the source that corresponds to this compilation unit to the given sourc
e. |
| 2282 * |
2104 * @param source the source that corresponds to this compilation unit | 2283 * @param source the source that corresponds to this compilation unit |
2105 */ | 2284 */ |
2106 void set source(Source source2) { | 2285 void set source(Source source2) { |
2107 this._source = source2; | 2286 this._source = source2; |
2108 } | 2287 } |
2109 | 2288 |
2110 /** | 2289 /** |
2111 * Set the top-level variables contained in this compilation unit to the given
variables. | 2290 * Set the top-level variables contained in this compilation unit to the given
variables. |
| 2291 * |
2112 * @param variables the top-level variables contained in this compilation unit | 2292 * @param variables the top-level variables contained in this compilation unit |
2113 */ | 2293 */ |
2114 void set topLevelVariables(List<TopLevelVariableElement> variables2) { | 2294 void set topLevelVariables(List<TopLevelVariableElement> variables2) { |
2115 for (TopLevelVariableElement field in variables2) { | 2295 for (TopLevelVariableElement field in variables2) { |
2116 ((field as TopLevelVariableElementImpl)).enclosingElement = this; | 2296 ((field as TopLevelVariableElementImpl)).enclosingElement = this; |
2117 } | 2297 } |
2118 this._variables = variables2; | 2298 this._variables = variables2; |
2119 } | 2299 } |
2120 | 2300 |
2121 /** | 2301 /** |
2122 * Set the function type aliases contained in this compilation unit to the giv
en type aliases. | 2302 * Set the function type aliases contained in this compilation unit to the giv
en type aliases. |
| 2303 * |
2123 * @param typeAliases the function type aliases contained in this compilation
unit | 2304 * @param typeAliases the function type aliases contained in this compilation
unit |
2124 */ | 2305 */ |
2125 void set typeAliases(List<FunctionTypeAliasElement> typeAliases2) { | 2306 void set typeAliases(List<FunctionTypeAliasElement> typeAliases2) { |
2126 for (FunctionTypeAliasElement typeAlias in typeAliases2) { | 2307 for (FunctionTypeAliasElement typeAlias in typeAliases2) { |
2127 ((typeAlias as FunctionTypeAliasElementImpl)).enclosingElement = this; | 2308 ((typeAlias as FunctionTypeAliasElementImpl)).enclosingElement = this; |
2128 } | 2309 } |
2129 this._typeAliases = typeAliases2; | 2310 this._typeAliases = typeAliases2; |
2130 } | 2311 } |
2131 | 2312 |
2132 /** | 2313 /** |
2133 * Set the types contained in this compilation unit to the given types. | 2314 * Set the types contained in this compilation unit to the given types. |
| 2315 * |
2134 * @param types types contained in this compilation unit | 2316 * @param types types contained in this compilation unit |
2135 */ | 2317 */ |
2136 void set types(List<ClassElement> types2) { | 2318 void set types(List<ClassElement> types2) { |
2137 for (ClassElement type in types2) { | 2319 for (ClassElement type in types2) { |
2138 ((type as ClassElementImpl)).enclosingElement = this; | 2320 ((type as ClassElementImpl)).enclosingElement = this; |
2139 } | 2321 } |
2140 this._types = types2; | 2322 this._types = types2; |
2141 } | 2323 } |
2142 | 2324 |
2143 /** | 2325 /** |
2144 * Set the URI that is specified by the "part" directive in the enclosing libr
ary. | 2326 * Set the URI that is specified by the "part" directive in the enclosing libr
ary. |
| 2327 * |
2145 * @param uri the URI that is specified by the "part" directive in the enclosi
ng library. | 2328 * @param uri the URI that is specified by the "part" directive in the enclosi
ng library. |
2146 */ | 2329 */ |
2147 void set uri(String uri2) { | 2330 void set uri(String uri2) { |
2148 this._uri = uri2; | 2331 this._uri = uri2; |
2149 } | 2332 } |
2150 void visitChildren(ElementVisitor<Object> visitor) { | 2333 void visitChildren(ElementVisitor<Object> visitor) { |
2151 super.visitChildren(visitor); | 2334 super.visitChildren(visitor); |
2152 safelyVisitChildren(_accessors, visitor); | 2335 safelyVisitChildren(_accessors, visitor); |
2153 safelyVisitChildren(_functions, visitor); | 2336 safelyVisitChildren(_functions, visitor); |
2154 safelyVisitChildren(_typeAliases, visitor); | 2337 safelyVisitChildren(_typeAliases, visitor); |
(...skipping 14 matching lines...) Expand all Loading... |
2169 */ | 2352 */ |
2170 class ConstFieldElementImpl extends FieldElementImpl { | 2353 class ConstFieldElementImpl extends FieldElementImpl { |
2171 | 2354 |
2172 /** | 2355 /** |
2173 * The result of evaluating this variable's initializer. | 2356 * The result of evaluating this variable's initializer. |
2174 */ | 2357 */ |
2175 EvaluationResultImpl _result; | 2358 EvaluationResultImpl _result; |
2176 | 2359 |
2177 /** | 2360 /** |
2178 * Initialize a newly created field element to have the given name. | 2361 * Initialize a newly created field element to have the given name. |
| 2362 * |
2179 * @param name the name of this element | 2363 * @param name the name of this element |
2180 */ | 2364 */ |
2181 ConstFieldElementImpl(Identifier name) : super.con1(name) { | 2365 ConstFieldElementImpl(Identifier name) : super.con1(name) { |
2182 } | 2366 } |
2183 EvaluationResultImpl get evaluationResult => _result; | 2367 EvaluationResultImpl get evaluationResult => _result; |
2184 void set evaluationResult(EvaluationResultImpl result2) { | 2368 void set evaluationResult(EvaluationResultImpl result2) { |
2185 this._result = result2; | 2369 this._result = result2; |
2186 } | 2370 } |
2187 } | 2371 } |
2188 /** | 2372 /** |
2189 * Instances of the class `ConstLocalVariableElementImpl` implement a`LocalVaria
bleElement` for a local 'const' variable that has an initializer. | 2373 * Instances of the class `ConstLocalVariableElementImpl` implement a |
| 2374 * `LocalVariableElement` for a local 'const' variable that has an initializer. |
| 2375 * |
2190 * @coverage dart.engine.element | 2376 * @coverage dart.engine.element |
2191 */ | 2377 */ |
2192 class ConstLocalVariableElementImpl extends LocalVariableElementImpl { | 2378 class ConstLocalVariableElementImpl extends LocalVariableElementImpl { |
2193 | 2379 |
2194 /** | 2380 /** |
2195 * The result of evaluating this variable's initializer. | 2381 * The result of evaluating this variable's initializer. |
2196 */ | 2382 */ |
2197 EvaluationResultImpl _result; | 2383 EvaluationResultImpl _result; |
2198 | 2384 |
2199 /** | 2385 /** |
2200 * Initialize a newly created local variable element to have the given name. | 2386 * Initialize a newly created local variable element to have the given name. |
| 2387 * |
2201 * @param name the name of this element | 2388 * @param name the name of this element |
2202 */ | 2389 */ |
2203 ConstLocalVariableElementImpl(Identifier name) : super(name) { | 2390 ConstLocalVariableElementImpl(Identifier name) : super(name) { |
2204 } | 2391 } |
2205 EvaluationResultImpl get evaluationResult => _result; | 2392 EvaluationResultImpl get evaluationResult => _result; |
2206 void set evaluationResult(EvaluationResultImpl result2) { | 2393 void set evaluationResult(EvaluationResultImpl result2) { |
2207 this._result = result2; | 2394 this._result = result2; |
2208 } | 2395 } |
2209 } | 2396 } |
2210 /** | 2397 /** |
2211 * Instances of the class `ConstTopLevelVariableElementImpl` implement a`TopLeve
lVariableElement` for a top-level 'const' variable that has an initializer. | 2398 * Instances of the class `ConstTopLevelVariableElementImpl` implement a |
| 2399 * `TopLevelVariableElement` for a top-level 'const' variable that has an initia
lizer. |
2212 */ | 2400 */ |
2213 class ConstTopLevelVariableElementImpl extends TopLevelVariableElementImpl { | 2401 class ConstTopLevelVariableElementImpl extends TopLevelVariableElementImpl { |
2214 | 2402 |
2215 /** | 2403 /** |
2216 * The result of evaluating this variable's initializer. | 2404 * The result of evaluating this variable's initializer. |
2217 */ | 2405 */ |
2218 EvaluationResultImpl _result; | 2406 EvaluationResultImpl _result; |
2219 | 2407 |
2220 /** | 2408 /** |
2221 * Initialize a newly created top-level variable element to have the given nam
e. | 2409 * Initialize a newly created top-level variable element to have the given nam
e. |
| 2410 * |
2222 * @param name the name of this element | 2411 * @param name the name of this element |
2223 */ | 2412 */ |
2224 ConstTopLevelVariableElementImpl(Identifier name) : super.con1(name) { | 2413 ConstTopLevelVariableElementImpl(Identifier name) : super.con1(name) { |
2225 } | 2414 } |
2226 EvaluationResultImpl get evaluationResult => _result; | 2415 EvaluationResultImpl get evaluationResult => _result; |
2227 void set evaluationResult(EvaluationResultImpl result2) { | 2416 void set evaluationResult(EvaluationResultImpl result2) { |
2228 this._result = result2; | 2417 this._result = result2; |
2229 } | 2418 } |
2230 } | 2419 } |
2231 /** | 2420 /** |
2232 * Instances of the class `ConstructorElementImpl` implement a `ConstructorEleme
nt`. | 2421 * Instances of the class `ConstructorElementImpl` implement a `ConstructorEleme
nt`. |
| 2422 * |
2233 * @coverage dart.engine.element | 2423 * @coverage dart.engine.element |
2234 */ | 2424 */ |
2235 class ConstructorElementImpl extends ExecutableElementImpl implements Constructo
rElement { | 2425 class ConstructorElementImpl extends ExecutableElementImpl implements Constructo
rElement { |
2236 | 2426 |
2237 /** | 2427 /** |
2238 * An empty array of constructor elements. | 2428 * An empty array of constructor elements. |
2239 */ | 2429 */ |
2240 static List<ConstructorElement> EMPTY_ARRAY = new List<ConstructorElement>(0); | 2430 static List<ConstructorElement> EMPTY_ARRAY = new List<ConstructorElement>(0); |
2241 | 2431 |
2242 /** | 2432 /** |
2243 * The constructor to which this constructor is redirecting. | 2433 * The constructor to which this constructor is redirecting. |
2244 */ | 2434 */ |
2245 ConstructorElement _redirectedConstructor; | 2435 ConstructorElement _redirectedConstructor; |
2246 | 2436 |
2247 /** | 2437 /** |
2248 * Initialize a newly created constructor element to have the given name. | 2438 * Initialize a newly created constructor element to have the given name. |
| 2439 * |
2249 * @param name the name of this element | 2440 * @param name the name of this element |
2250 */ | 2441 */ |
2251 ConstructorElementImpl(Identifier name) : super.con1(name) { | 2442 ConstructorElementImpl(Identifier name) : super.con1(name) { |
2252 } | 2443 } |
2253 accept(ElementVisitor visitor) => visitor.visitConstructorElement(this); | 2444 accept(ElementVisitor visitor) => visitor.visitConstructorElement(this); |
2254 ClassElement get enclosingElement => super.enclosingElement as ClassElement; | 2445 ClassElement get enclosingElement => super.enclosingElement as ClassElement; |
2255 ElementKind get kind => ElementKind.CONSTRUCTOR; | 2446 ElementKind get kind => ElementKind.CONSTRUCTOR; |
2256 ConstructorElement get redirectedConstructor => _redirectedConstructor; | 2447 ConstructorElement get redirectedConstructor => _redirectedConstructor; |
2257 bool get isConst => hasModifier(Modifier.CONST); | 2448 bool get isConst => hasModifier(Modifier.CONST); |
2258 bool get isDefaultConstructor { | 2449 bool get isDefaultConstructor { |
2259 String name = this.name; | 2450 String name = this.name; |
2260 if (name != null && name.length != 0) { | 2451 if (name != null && name.length != 0) { |
2261 return false; | 2452 return false; |
2262 } | 2453 } |
2263 for (ParameterElement parameter in parameters) { | 2454 for (ParameterElement parameter in parameters) { |
2264 if (identical(parameter.parameterKind, ParameterKind.REQUIRED)) { | 2455 if (identical(parameter.parameterKind, ParameterKind.REQUIRED)) { |
2265 return false; | 2456 return false; |
2266 } | 2457 } |
2267 } | 2458 } |
2268 return true; | 2459 return true; |
2269 } | 2460 } |
2270 bool get isFactory => hasModifier(Modifier.FACTORY); | 2461 bool get isFactory => hasModifier(Modifier.FACTORY); |
2271 bool get isStatic => false; | 2462 bool get isStatic => false; |
2272 | 2463 |
2273 /** | 2464 /** |
2274 * Set whether this constructor represents a 'const' constructor to the given
value. | 2465 * Set whether this constructor represents a 'const' constructor to the given
value. |
| 2466 * |
2275 * @param isConst `true` if this constructor represents a 'const' constructor | 2467 * @param isConst `true` if this constructor represents a 'const' constructor |
2276 */ | 2468 */ |
2277 void set const2(bool isConst) { | 2469 void set const2(bool isConst) { |
2278 setModifier(Modifier.CONST, isConst); | 2470 setModifier(Modifier.CONST, isConst); |
2279 } | 2471 } |
2280 | 2472 |
2281 /** | 2473 /** |
2282 * Set whether this constructor represents a factory method to the given value
. | 2474 * Set whether this constructor represents a factory method to the given value
. |
| 2475 * |
2283 * @param isFactory `true` if this constructor represents a factory method | 2476 * @param isFactory `true` if this constructor represents a factory method |
2284 */ | 2477 */ |
2285 void set factory(bool isFactory) { | 2478 void set factory(bool isFactory) { |
2286 setModifier(Modifier.FACTORY, isFactory); | 2479 setModifier(Modifier.FACTORY, isFactory); |
2287 } | 2480 } |
2288 | 2481 |
2289 /** | 2482 /** |
2290 * Sets the constructor to which this constructor is redirecting. | 2483 * Sets the constructor to which this constructor is redirecting. |
| 2484 * |
2291 * @param redirectedConstructor the constructor to which this constructor is r
edirecting | 2485 * @param redirectedConstructor the constructor to which this constructor is r
edirecting |
2292 */ | 2486 */ |
2293 void set redirectedConstructor(ConstructorElement redirectedConstructor2) { | 2487 void set redirectedConstructor(ConstructorElement redirectedConstructor2) { |
2294 this._redirectedConstructor = redirectedConstructor2; | 2488 this._redirectedConstructor = redirectedConstructor2; |
2295 } | 2489 } |
2296 void appendTo(JavaStringBuilder builder) { | 2490 void appendTo(JavaStringBuilder builder) { |
2297 builder.append(enclosingElement.displayName); | 2491 builder.append(enclosingElement.displayName); |
2298 String name = displayName; | 2492 String name = displayName; |
2299 if (name != null && !name.isEmpty) { | 2493 if (name != null && !name.isEmpty) { |
2300 builder.append("."); | 2494 builder.append("."); |
2301 builder.append(name); | 2495 builder.append(name); |
2302 } | 2496 } |
2303 super.appendTo(builder); | 2497 super.appendTo(builder); |
2304 } | 2498 } |
2305 } | 2499 } |
2306 /** | 2500 /** |
2307 * Instances of the class `DefaultFieldFormalParameterElementImpl` implement a`F
ieldFormalParameterElementImpl` for parameters that have an initializer. | 2501 * Instances of the class `DefaultFieldFormalParameterElementImpl` implement a |
| 2502 * `FieldFormalParameterElementImpl` for parameters that have an initializer. |
| 2503 * |
2308 * @coverage dart.engine.element | 2504 * @coverage dart.engine.element |
2309 */ | 2505 */ |
2310 class DefaultFieldFormalParameterElementImpl extends FieldFormalParameterElement
Impl { | 2506 class DefaultFieldFormalParameterElementImpl extends FieldFormalParameterElement
Impl { |
2311 | 2507 |
2312 /** | 2508 /** |
2313 * The result of evaluating this variable's initializer. | 2509 * The result of evaluating this variable's initializer. |
2314 */ | 2510 */ |
2315 EvaluationResultImpl _result; | 2511 EvaluationResultImpl _result; |
2316 | 2512 |
2317 /** | 2513 /** |
2318 * Initialize a newly created parameter element to have the given name. | 2514 * Initialize a newly created parameter element to have the given name. |
| 2515 * |
2319 * @param name the name of this element | 2516 * @param name the name of this element |
2320 */ | 2517 */ |
2321 DefaultFieldFormalParameterElementImpl(Identifier name) : super(name) { | 2518 DefaultFieldFormalParameterElementImpl(Identifier name) : super(name) { |
2322 } | 2519 } |
2323 EvaluationResultImpl get evaluationResult => _result; | 2520 EvaluationResultImpl get evaluationResult => _result; |
2324 void set evaluationResult(EvaluationResultImpl result2) { | 2521 void set evaluationResult(EvaluationResultImpl result2) { |
2325 this._result = result2; | 2522 this._result = result2; |
2326 } | 2523 } |
2327 } | 2524 } |
2328 /** | 2525 /** |
2329 * Instances of the class `DefaultParameterElementImpl` implement a `ParameterEl
ement`for parameters that have an initializer. | 2526 * Instances of the class `DefaultParameterElementImpl` implement a `ParameterEl
ement` |
| 2527 * for parameters that have an initializer. |
| 2528 * |
2330 * @coverage dart.engine.element | 2529 * @coverage dart.engine.element |
2331 */ | 2530 */ |
2332 class DefaultParameterElementImpl extends ParameterElementImpl { | 2531 class DefaultParameterElementImpl extends ParameterElementImpl { |
2333 | 2532 |
2334 /** | 2533 /** |
2335 * The result of evaluating this variable's initializer. | 2534 * The result of evaluating this variable's initializer. |
2336 */ | 2535 */ |
2337 EvaluationResultImpl _result; | 2536 EvaluationResultImpl _result; |
2338 | 2537 |
2339 /** | 2538 /** |
2340 * Initialize a newly created parameter element to have the given name. | 2539 * Initialize a newly created parameter element to have the given name. |
| 2540 * |
2341 * @param name the name of this element | 2541 * @param name the name of this element |
2342 */ | 2542 */ |
2343 DefaultParameterElementImpl(Identifier name) : super(name) { | 2543 DefaultParameterElementImpl(Identifier name) : super(name) { |
2344 } | 2544 } |
2345 EvaluationResultImpl get evaluationResult => _result; | 2545 EvaluationResultImpl get evaluationResult => _result; |
2346 void set evaluationResult(EvaluationResultImpl result2) { | 2546 void set evaluationResult(EvaluationResultImpl result2) { |
2347 this._result = result2; | 2547 this._result = result2; |
2348 } | 2548 } |
2349 } | 2549 } |
2350 /** | 2550 /** |
2351 * Instances of the class `DynamicElementImpl` represent the synthetic element r
epresenting | 2551 * Instances of the class `DynamicElementImpl` represent the synthetic element r
epresenting |
2352 * the declaration of the type `dynamic`. | 2552 * the declaration of the type `dynamic`. |
| 2553 * |
2353 * @coverage dart.engine.element | 2554 * @coverage dart.engine.element |
2354 */ | 2555 */ |
2355 class DynamicElementImpl extends ElementImpl { | 2556 class DynamicElementImpl extends ElementImpl { |
2356 | 2557 |
2357 /** | 2558 /** |
2358 * Return the unique instance of this class. | 2559 * Return the unique instance of this class. |
| 2560 * |
2359 * @return the unique instance of this class | 2561 * @return the unique instance of this class |
2360 */ | 2562 */ |
2361 static DynamicElementImpl get instance => DynamicTypeImpl.instance.element as
DynamicElementImpl; | 2563 static DynamicElementImpl get instance => DynamicTypeImpl.instance.element as
DynamicElementImpl; |
2362 | 2564 |
2363 /** | 2565 /** |
2364 * The type defined by this element. | 2566 * The type defined by this element. |
2365 */ | 2567 */ |
2366 DynamicTypeImpl _type; | 2568 DynamicTypeImpl _type; |
2367 | 2569 |
2368 /** | 2570 /** |
2369 * Initialize a newly created instance of this class. Instances of this class
should <b>not</b> be | 2571 * Initialize a newly created instance of this class. Instances of this class
should <b>not</b> be |
2370 * created except as part of creating the type associated with this element. T
he single instance | 2572 * created except as part of creating the type associated with this element. T
he single instance |
2371 * of this class should be accessed through the method [getInstance]. | 2573 * of this class should be accessed through the method [getInstance]. |
2372 */ | 2574 */ |
2373 DynamicElementImpl() : super.con2(Keyword.DYNAMIC.syntax, -1) { | 2575 DynamicElementImpl() : super.con2(Keyword.DYNAMIC.syntax, -1) { |
2374 setModifier(Modifier.SYNTHETIC, true); | 2576 setModifier(Modifier.SYNTHETIC, true); |
2375 } | 2577 } |
2376 accept(ElementVisitor visitor) => null; | 2578 accept(ElementVisitor visitor) => null; |
2377 ElementKind get kind => ElementKind.DYNAMIC; | 2579 ElementKind get kind => ElementKind.DYNAMIC; |
2378 | 2580 |
2379 /** | 2581 /** |
2380 * Return the type defined by this element. | 2582 * Return the type defined by this element. |
| 2583 * |
2381 * @return the type defined by this element | 2584 * @return the type defined by this element |
2382 */ | 2585 */ |
2383 DynamicTypeImpl get type => _type; | 2586 DynamicTypeImpl get type => _type; |
2384 | 2587 |
2385 /** | 2588 /** |
2386 * Set the type defined by this element to the given type. | 2589 * Set the type defined by this element to the given type. |
| 2590 * |
2387 * @param type the type defined by this element | 2591 * @param type the type defined by this element |
2388 */ | 2592 */ |
2389 void set type(DynamicTypeImpl type2) { | 2593 void set type(DynamicTypeImpl type2) { |
2390 this._type = type2; | 2594 this._type = type2; |
2391 } | 2595 } |
2392 } | 2596 } |
2393 /** | 2597 /** |
2394 * Instances of the class `ElementAnnotationImpl` implement an [ElementAnnotatio
n]. | 2598 * Instances of the class `ElementAnnotationImpl` implement an [ElementAnnotatio
n]. |
| 2599 * |
2395 * @coverage dart.engine.element | 2600 * @coverage dart.engine.element |
2396 */ | 2601 */ |
2397 class ElementAnnotationImpl implements ElementAnnotation { | 2602 class ElementAnnotationImpl implements ElementAnnotation { |
2398 | 2603 |
2399 /** | 2604 /** |
2400 * The element representing the field, variable, or constructor being used as
an annotation. | 2605 * The element representing the field, variable, or constructor being used as
an annotation. |
2401 */ | 2606 */ |
2402 Element _element; | 2607 Element _element; |
2403 | 2608 |
2404 /** | 2609 /** |
2405 * An empty array of annotations. | 2610 * An empty array of annotations. |
2406 */ | 2611 */ |
2407 static List<ElementAnnotationImpl> EMPTY_ARRAY = new List<ElementAnnotationImp
l>(0); | 2612 static List<ElementAnnotationImpl> EMPTY_ARRAY = new List<ElementAnnotationImp
l>(0); |
2408 | 2613 |
2409 /** | 2614 /** |
2410 * Initialize a newly created annotation. | 2615 * Initialize a newly created annotation. |
| 2616 * |
2411 * @param element the element representing the field, variable, or constructor
being used as an | 2617 * @param element the element representing the field, variable, or constructor
being used as an |
2412 * annotation | 2618 * annotation |
2413 */ | 2619 */ |
2414 ElementAnnotationImpl(Element element) { | 2620 ElementAnnotationImpl(Element element) { |
2415 this._element = element; | 2621 this._element = element; |
2416 } | 2622 } |
2417 Element get element => _element; | 2623 Element get element => _element; |
2418 String toString() => "@${_element.toString()}"; | 2624 String toString() => "@${_element.toString()}"; |
2419 } | 2625 } |
2420 /** | 2626 /** |
2421 * The abstract class `ElementImpl` implements the behavior common to objects th
at implement | 2627 * The abstract class `ElementImpl` implements the behavior common to objects th
at implement |
2422 * an [Element]. | 2628 * an [Element]. |
| 2629 * |
2423 * @coverage dart.engine.element | 2630 * @coverage dart.engine.element |
2424 */ | 2631 */ |
2425 abstract class ElementImpl implements Element { | 2632 abstract class ElementImpl implements Element { |
2426 | 2633 |
2427 /** | 2634 /** |
2428 * The enclosing element of this element, or `null` if this element is at the
root of the | 2635 * The enclosing element of this element, or `null` if this element is at the
root of the |
2429 * element structure. | 2636 * element structure. |
2430 */ | 2637 */ |
2431 ElementImpl _enclosingElement; | 2638 ElementImpl _enclosingElement; |
2432 | 2639 |
(...skipping 18 matching lines...) Expand all Loading... |
2451 */ | 2658 */ |
2452 List<ElementAnnotation> _metadata = ElementAnnotationImpl.EMPTY_ARRAY; | 2659 List<ElementAnnotation> _metadata = ElementAnnotationImpl.EMPTY_ARRAY; |
2453 | 2660 |
2454 /** | 2661 /** |
2455 * A cached copy of the calculated hashCode for this element. | 2662 * A cached copy of the calculated hashCode for this element. |
2456 */ | 2663 */ |
2457 int _cachedHashCode = 0; | 2664 int _cachedHashCode = 0; |
2458 | 2665 |
2459 /** | 2666 /** |
2460 * Initialize a newly created element to have the given name. | 2667 * Initialize a newly created element to have the given name. |
| 2668 * |
2461 * @param name the name of this element | 2669 * @param name the name of this element |
2462 */ | 2670 */ |
2463 ElementImpl.con1(Identifier name2) { | 2671 ElementImpl.con1(Identifier name2) { |
2464 _jtd_constructor_195_impl(name2); | 2672 _jtd_constructor_195_impl(name2); |
2465 } | 2673 } |
2466 _jtd_constructor_195_impl(Identifier name2) { | 2674 _jtd_constructor_195_impl(Identifier name2) { |
2467 _jtd_constructor_196_impl(name2 == null ? "" : name2.name, name2 == null ? -
1 : name2.offset); | 2675 _jtd_constructor_196_impl(name2 == null ? "" : name2.name, name2 == null ? -
1 : name2.offset); |
2468 } | 2676 } |
2469 | 2677 |
2470 /** | 2678 /** |
2471 * Initialize a newly created element to have the given name. | 2679 * Initialize a newly created element to have the given name. |
| 2680 * |
2472 * @param name the name of this element | 2681 * @param name the name of this element |
2473 * @param nameOffset the offset of the name of this element in the file that c
ontains the | 2682 * @param nameOffset the offset of the name of this element in the file that c
ontains the |
2474 * declaration of this element | 2683 * declaration of this element |
2475 */ | 2684 */ |
2476 ElementImpl.con2(String name2, int nameOffset2) { | 2685 ElementImpl.con2(String name2, int nameOffset2) { |
2477 _jtd_constructor_196_impl(name2, nameOffset2); | 2686 _jtd_constructor_196_impl(name2, nameOffset2); |
2478 } | 2687 } |
2479 _jtd_constructor_196_impl(String name2, int nameOffset2) { | 2688 _jtd_constructor_196_impl(String name2, int nameOffset2) { |
2480 this._name = StringUtilities.intern(name2); | 2689 this._name = StringUtilities.intern(name2); |
2481 this._nameOffset = nameOffset2; | 2690 this._nameOffset = nameOffset2; |
2482 } | 2691 } |
2483 String computeDocumentationComment() { | 2692 String computeDocumentationComment() { |
2484 AnalysisContext context = this.context; | 2693 AnalysisContext context = this.context; |
2485 if (context == null) { | 2694 if (context == null) { |
2486 return null; | 2695 return null; |
2487 } | 2696 } |
2488 return context.computeDocumentationComment(this); | 2697 return context.computeDocumentationComment(this); |
2489 } | 2698 } |
2490 bool operator ==(Object object) => object != null && object.runtimeType == run
timeType && ((object as Element)).location == location; | 2699 bool operator ==(Object object) => object != null && object.runtimeType == run
timeType && ((object as Element)).location == location; |
2491 Element getAncestor(Type elementClass) { | 2700 Element getAncestor(Type elementClass) { |
2492 Element ancestor = _enclosingElement; | 2701 Element ancestor = _enclosingElement; |
2493 while (ancestor != null && !isInstanceOf(ancestor, elementClass)) { | 2702 while (ancestor != null && !isInstanceOf(ancestor, elementClass)) { |
2494 ancestor = ancestor.enclosingElement; | 2703 ancestor = ancestor.enclosingElement; |
2495 } | 2704 } |
2496 return ancestor as Element; | 2705 return ancestor as Element; |
2497 } | 2706 } |
2498 | 2707 |
2499 /** | 2708 /** |
2500 * Return the child of this element that is uniquely identified by the given i
dentifier, or`null` if there is no such child. | 2709 * Return the child of this element that is uniquely identified by the given i
dentifier, or |
| 2710 * `null` if there is no such child. |
| 2711 * |
2501 * @param identifier the identifier used to select a child | 2712 * @param identifier the identifier used to select a child |
2502 * @return the child of this element with the given identifier | 2713 * @return the child of this element with the given identifier |
2503 */ | 2714 */ |
2504 ElementImpl getChild(String identifier) => null; | 2715 ElementImpl getChild(String identifier) => null; |
2505 AnalysisContext get context { | 2716 AnalysisContext get context { |
2506 if (_enclosingElement == null) { | 2717 if (_enclosingElement == null) { |
2507 return null; | 2718 return null; |
2508 } | 2719 } |
2509 return _enclosingElement.context; | 2720 return _enclosingElement.context; |
2510 } | 2721 } |
(...skipping 19 matching lines...) Expand all Loading... |
2530 bool isAccessibleIn(LibraryElement library2) { | 2741 bool isAccessibleIn(LibraryElement library2) { |
2531 if (Identifier.isPrivateName(_name)) { | 2742 if (Identifier.isPrivateName(_name)) { |
2532 return library2 == library; | 2743 return library2 == library; |
2533 } | 2744 } |
2534 return true; | 2745 return true; |
2535 } | 2746 } |
2536 bool get isSynthetic => hasModifier(Modifier.SYNTHETIC); | 2747 bool get isSynthetic => hasModifier(Modifier.SYNTHETIC); |
2537 | 2748 |
2538 /** | 2749 /** |
2539 * Set the metadata associate with this element to the given array of annotati
ons. | 2750 * Set the metadata associate with this element to the given array of annotati
ons. |
| 2751 * |
2540 * @param metadata the metadata to be associated with this element | 2752 * @param metadata the metadata to be associated with this element |
2541 */ | 2753 */ |
2542 void set metadata(List<ElementAnnotation> metadata2) { | 2754 void set metadata(List<ElementAnnotation> metadata2) { |
2543 this._metadata = metadata2; | 2755 this._metadata = metadata2; |
2544 } | 2756 } |
2545 | 2757 |
2546 /** | 2758 /** |
2547 * Set the offset of the name of this element in the file that contains the de
claration of this | 2759 * Set the offset of the name of this element in the file that contains the de
claration of this |
2548 * element to the given value. This is normally done via the constructor, but
this method is | 2760 * element to the given value. This is normally done via the constructor, but
this method is |
2549 * provided to support unnamed constructors. | 2761 * provided to support unnamed constructors. |
| 2762 * |
2550 * @param nameOffset the offset to the beginning of the name | 2763 * @param nameOffset the offset to the beginning of the name |
2551 */ | 2764 */ |
2552 void set nameOffset(int nameOffset2) { | 2765 void set nameOffset(int nameOffset2) { |
2553 this._nameOffset = nameOffset2; | 2766 this._nameOffset = nameOffset2; |
2554 } | 2767 } |
2555 | 2768 |
2556 /** | 2769 /** |
2557 * Set whether this element is synthetic to correspond to the given value. | 2770 * Set whether this element is synthetic to correspond to the given value. |
| 2771 * |
2558 * @param isSynthetic `true` if the element is synthetic | 2772 * @param isSynthetic `true` if the element is synthetic |
2559 */ | 2773 */ |
2560 void set synthetic(bool isSynthetic) { | 2774 void set synthetic(bool isSynthetic) { |
2561 setModifier(Modifier.SYNTHETIC, isSynthetic); | 2775 setModifier(Modifier.SYNTHETIC, isSynthetic); |
2562 } | 2776 } |
2563 String toString() { | 2777 String toString() { |
2564 JavaStringBuilder builder = new JavaStringBuilder(); | 2778 JavaStringBuilder builder = new JavaStringBuilder(); |
2565 appendTo(builder); | 2779 appendTo(builder); |
2566 return builder.toString(); | 2780 return builder.toString(); |
2567 } | 2781 } |
2568 void visitChildren(ElementVisitor<Object> visitor) { | 2782 void visitChildren(ElementVisitor<Object> visitor) { |
2569 } | 2783 } |
2570 | 2784 |
2571 /** | 2785 /** |
2572 * Append a textual representation of this type to the given builder. | 2786 * Append a textual representation of this type to the given builder. |
| 2787 * |
2573 * @param builder the builder to which the text is to be appended | 2788 * @param builder the builder to which the text is to be appended |
2574 */ | 2789 */ |
2575 void appendTo(JavaStringBuilder builder) { | 2790 void appendTo(JavaStringBuilder builder) { |
2576 if (_name == null) { | 2791 if (_name == null) { |
2577 builder.append("<unnamed "); | 2792 builder.append("<unnamed "); |
2578 builder.append(runtimeType.toString()); | 2793 builder.append(runtimeType.toString()); |
2579 builder.append(">"); | 2794 builder.append(">"); |
2580 } else { | 2795 } else { |
2581 builder.append(_name); | 2796 builder.append(_name); |
2582 } | 2797 } |
2583 } | 2798 } |
2584 | 2799 |
2585 /** | 2800 /** |
2586 * Return an identifier that uniquely identifies this element among the childr
en of this element's | 2801 * Return an identifier that uniquely identifies this element among the childr
en of this element's |
2587 * parent. | 2802 * parent. |
| 2803 * |
2588 * @return an identifier that uniquely identifies this element relative to its
parent | 2804 * @return an identifier that uniquely identifies this element relative to its
parent |
2589 */ | 2805 */ |
2590 String get identifier => name; | 2806 String get identifier => name; |
2591 | 2807 |
2592 /** | 2808 /** |
2593 * Return `true` if this element has the given modifier associated with it. | 2809 * Return `true` if this element has the given modifier associated with it. |
| 2810 * |
2594 * @param modifier the modifier being tested for | 2811 * @param modifier the modifier being tested for |
2595 * @return `true` if this element has the given modifier associated with it | 2812 * @return `true` if this element has the given modifier associated with it |
2596 */ | 2813 */ |
2597 bool hasModifier(Modifier modifier) => _modifiers != null && _modifiers.contai
ns(modifier); | 2814 bool hasModifier(Modifier modifier) => _modifiers != null && _modifiers.contai
ns(modifier); |
2598 | 2815 |
2599 /** | 2816 /** |
2600 * If the given child is not `null`, use the given visitor to visit it. | 2817 * If the given child is not `null`, use the given visitor to visit it. |
| 2818 * |
2601 * @param child the child to be visited | 2819 * @param child the child to be visited |
2602 * @param visitor the visitor to be used to visit the child | 2820 * @param visitor the visitor to be used to visit the child |
2603 */ | 2821 */ |
2604 void safelyVisitChild(Element child, ElementVisitor<Object> visitor) { | 2822 void safelyVisitChild(Element child, ElementVisitor<Object> visitor) { |
2605 if (child != null) { | 2823 if (child != null) { |
2606 child.accept(visitor); | 2824 child.accept(visitor); |
2607 } | 2825 } |
2608 } | 2826 } |
2609 | 2827 |
2610 /** | 2828 /** |
2611 * Use the given visitor to visit all of the children in the given array. | 2829 * Use the given visitor to visit all of the children in the given array. |
| 2830 * |
2612 * @param children the children to be visited | 2831 * @param children the children to be visited |
2613 * @param visitor the visitor being used to visit the children | 2832 * @param visitor the visitor being used to visit the children |
2614 */ | 2833 */ |
2615 void safelyVisitChildren(List<Element> children, ElementVisitor<Object> visito
r) { | 2834 void safelyVisitChildren(List<Element> children, ElementVisitor<Object> visito
r) { |
2616 if (children != null) { | 2835 if (children != null) { |
2617 for (Element child in children) { | 2836 for (Element child in children) { |
2618 child.accept(visitor); | 2837 child.accept(visitor); |
2619 } | 2838 } |
2620 } | 2839 } |
2621 } | 2840 } |
2622 | 2841 |
2623 /** | 2842 /** |
2624 * Set the enclosing element of this element to the given element. | 2843 * Set the enclosing element of this element to the given element. |
| 2844 * |
2625 * @param element the enclosing element of this element | 2845 * @param element the enclosing element of this element |
2626 */ | 2846 */ |
2627 void set enclosingElement(ElementImpl element) { | 2847 void set enclosingElement(ElementImpl element) { |
2628 _enclosingElement = element; | 2848 _enclosingElement = element; |
2629 } | 2849 } |
2630 | 2850 |
2631 /** | 2851 /** |
2632 * Set whether the given modifier is associated with this element to correspon
d to the given | 2852 * Set whether the given modifier is associated with this element to correspon
d to the given |
2633 * value. | 2853 * value. |
| 2854 * |
2634 * @param modifier the modifier to be set | 2855 * @param modifier the modifier to be set |
2635 * @param value `true` if the modifier is to be associated with this element | 2856 * @param value `true` if the modifier is to be associated with this element |
2636 */ | 2857 */ |
2637 void setModifier(Modifier modifier, bool value) { | 2858 void setModifier(Modifier modifier, bool value) { |
2638 if (value) { | 2859 if (value) { |
2639 if (_modifiers == null) { | 2860 if (_modifiers == null) { |
2640 _modifiers = new Set(); | 2861 _modifiers = new Set(); |
2641 } | 2862 } |
2642 _modifiers.add(modifier); | 2863 _modifiers.add(modifier); |
2643 } else { | 2864 } else { |
2644 if (_modifiers != null) { | 2865 if (_modifiers != null) { |
2645 _modifiers.remove(modifier); | 2866 _modifiers.remove(modifier); |
2646 if (_modifiers.isEmpty) { | 2867 if (_modifiers.isEmpty) { |
2647 _modifiers = null; | 2868 _modifiers = null; |
2648 } | 2869 } |
2649 } | 2870 } |
2650 } | 2871 } |
2651 } | 2872 } |
2652 } | 2873 } |
2653 /** | 2874 /** |
2654 * Instances of the class `ElementLocationImpl` implement an [ElementLocation]. | 2875 * Instances of the class `ElementLocationImpl` implement an [ElementLocation]. |
| 2876 * |
2655 * @coverage dart.engine.element | 2877 * @coverage dart.engine.element |
2656 */ | 2878 */ |
2657 class ElementLocationImpl implements ElementLocation { | 2879 class ElementLocationImpl implements ElementLocation { |
2658 | 2880 |
2659 /** | 2881 /** |
2660 * The path to the element whose location is represented by this object. | 2882 * The path to the element whose location is represented by this object. |
2661 */ | 2883 */ |
2662 List<String> _components; | 2884 List<String> _components; |
2663 | 2885 |
2664 /** | 2886 /** |
2665 * The character used to separate components in the encoded form. | 2887 * The character used to separate components in the encoded form. |
2666 */ | 2888 */ |
2667 static int _SEPARATOR_CHAR = 0x3B; | 2889 static int _SEPARATOR_CHAR = 0x3B; |
2668 | 2890 |
2669 /** | 2891 /** |
2670 * Initialize a newly created location to represent the given element. | 2892 * Initialize a newly created location to represent the given element. |
| 2893 * |
2671 * @param element the element whose location is being represented | 2894 * @param element the element whose location is being represented |
2672 */ | 2895 */ |
2673 ElementLocationImpl.con1(Element element) { | 2896 ElementLocationImpl.con1(Element element) { |
2674 _jtd_constructor_197_impl(element); | 2897 _jtd_constructor_197_impl(element); |
2675 } | 2898 } |
2676 _jtd_constructor_197_impl(Element element) { | 2899 _jtd_constructor_197_impl(Element element) { |
2677 List<String> components = new List<String>(); | 2900 List<String> components = new List<String>(); |
2678 Element ancestor = element; | 2901 Element ancestor = element; |
2679 while (ancestor != null) { | 2902 while (ancestor != null) { |
2680 components.insert(0, ((ancestor as ElementImpl)).identifier); | 2903 components.insert(0, ((ancestor as ElementImpl)).identifier); |
2681 ancestor = ancestor.enclosingElement; | 2904 ancestor = ancestor.enclosingElement; |
2682 } | 2905 } |
2683 this._components = new List.from(components); | 2906 this._components = new List.from(components); |
2684 } | 2907 } |
2685 | 2908 |
2686 /** | 2909 /** |
2687 * Initialize a newly created location from the given encoded form. | 2910 * Initialize a newly created location from the given encoded form. |
| 2911 * |
2688 * @param encoding the encoded form of a location | 2912 * @param encoding the encoded form of a location |
2689 */ | 2913 */ |
2690 ElementLocationImpl.con2(String encoding) { | 2914 ElementLocationImpl.con2(String encoding) { |
2691 _jtd_constructor_198_impl(encoding); | 2915 _jtd_constructor_198_impl(encoding); |
2692 } | 2916 } |
2693 _jtd_constructor_198_impl(String encoding) { | 2917 _jtd_constructor_198_impl(String encoding) { |
2694 this._components = decode(encoding); | 2918 this._components = decode(encoding); |
2695 } | 2919 } |
2696 bool operator ==(Object object) { | 2920 bool operator ==(Object object) { |
2697 if (object is! ElementLocationImpl) { | 2921 if (object is! ElementLocationImpl) { |
(...skipping 14 matching lines...) Expand all Loading... |
2712 for (int i = 2; i < length; i++) { | 2936 for (int i = 2; i < length; i++) { |
2713 if (_components[i] != otherComponents[i]) { | 2937 if (_components[i] != otherComponents[i]) { |
2714 return false; | 2938 return false; |
2715 } | 2939 } |
2716 } | 2940 } |
2717 return true; | 2941 return true; |
2718 } | 2942 } |
2719 | 2943 |
2720 /** | 2944 /** |
2721 * Return the path to the element whose location is represented by this object
. | 2945 * Return the path to the element whose location is represented by this object
. |
| 2946 * |
2722 * @return the path to the element whose location is represented by this objec
t | 2947 * @return the path to the element whose location is represented by this objec
t |
2723 */ | 2948 */ |
2724 List<String> get components => _components; | 2949 List<String> get components => _components; |
2725 String get encoding { | 2950 String get encoding { |
2726 JavaStringBuilder builder = new JavaStringBuilder(); | 2951 JavaStringBuilder builder = new JavaStringBuilder(); |
2727 int length = _components.length; | 2952 int length = _components.length; |
2728 for (int i = 0; i < length; i++) { | 2953 for (int i = 0; i < length; i++) { |
2729 if (i > 0) { | 2954 if (i > 0) { |
2730 builder.appendChar(_SEPARATOR_CHAR); | 2955 builder.appendChar(_SEPARATOR_CHAR); |
2731 } | 2956 } |
2732 encode(builder, _components[i]); | 2957 encode(builder, _components[i]); |
2733 } | 2958 } |
2734 return builder.toString(); | 2959 return builder.toString(); |
2735 } | 2960 } |
2736 int get hashCode => JavaArrays.makeHashCode(_components); | 2961 int get hashCode => JavaArrays.makeHashCode(_components); |
2737 String toString() => encoding; | 2962 String toString() => encoding; |
2738 | 2963 |
2739 /** | 2964 /** |
2740 * Decode the encoded form of a location into an array of components. | 2965 * Decode the encoded form of a location into an array of components. |
| 2966 * |
2741 * @param encoding the encoded form of a location | 2967 * @param encoding the encoded form of a location |
2742 * @return the components that were encoded | 2968 * @return the components that were encoded |
2743 */ | 2969 */ |
2744 List<String> decode(String encoding) { | 2970 List<String> decode(String encoding) { |
2745 List<String> components = new List<String>(); | 2971 List<String> components = new List<String>(); |
2746 JavaStringBuilder builder = new JavaStringBuilder(); | 2972 JavaStringBuilder builder = new JavaStringBuilder(); |
2747 int index = 0; | 2973 int index = 0; |
2748 int length = encoding.length; | 2974 int length = encoding.length; |
2749 while (index < length) { | 2975 while (index < length) { |
2750 int currentChar = encoding.codeUnitAt(index); | 2976 int currentChar = encoding.codeUnitAt(index); |
(...skipping 12 matching lines...) Expand all Loading... |
2763 } | 2989 } |
2764 } | 2990 } |
2765 if (builder.length > 0) { | 2991 if (builder.length > 0) { |
2766 components.add(builder.toString()); | 2992 components.add(builder.toString()); |
2767 } | 2993 } |
2768 return new List.from(components); | 2994 return new List.from(components); |
2769 } | 2995 } |
2770 | 2996 |
2771 /** | 2997 /** |
2772 * Append an encoded form of the given component to the given builder. | 2998 * Append an encoded form of the given component to the given builder. |
| 2999 * |
2773 * @param builder the builder to which the encoded component is to be appended | 3000 * @param builder the builder to which the encoded component is to be appended |
2774 * @param component the component to be appended to the builder | 3001 * @param component the component to be appended to the builder |
2775 */ | 3002 */ |
2776 void encode(JavaStringBuilder builder, String component) { | 3003 void encode(JavaStringBuilder builder, String component) { |
2777 int length = component.length; | 3004 int length = component.length; |
2778 for (int i = 0; i < length; i++) { | 3005 for (int i = 0; i < length; i++) { |
2779 int currentChar = component.codeUnitAt(i); | 3006 int currentChar = component.codeUnitAt(i); |
2780 if (currentChar == _SEPARATOR_CHAR) { | 3007 if (currentChar == _SEPARATOR_CHAR) { |
2781 builder.appendChar(_SEPARATOR_CHAR); | 3008 builder.appendChar(_SEPARATOR_CHAR); |
2782 } | 3009 } |
2783 builder.appendChar(currentChar); | 3010 builder.appendChar(currentChar); |
2784 } | 3011 } |
2785 } | 3012 } |
2786 | 3013 |
2787 /** | 3014 /** |
2788 * Return `true` if the given components, when interpreted to be encoded sourc
es with a | 3015 * Return `true` if the given components, when interpreted to be encoded sourc
es with a |
2789 * leading source type indicator, are equal when the source type's are ignored
. | 3016 * leading source type indicator, are equal when the source type's are ignored
. |
| 3017 * |
2790 * @param left the left component being compared | 3018 * @param left the left component being compared |
2791 * @param right the right component being compared | 3019 * @param right the right component being compared |
2792 * @return `true` if the given components are equal when the source type's are
ignored | 3020 * @return `true` if the given components are equal when the source type's are
ignored |
2793 */ | 3021 */ |
2794 bool equalSourceComponents(String left, String right) { | 3022 bool equalSourceComponents(String left, String right) { |
2795 if (left == null) { | 3023 if (left == null) { |
2796 return right == null; | 3024 return right == null; |
2797 } else if (right == null) { | 3025 } else if (right == null) { |
2798 return false; | 3026 return false; |
2799 } | 3027 } |
2800 if (left.length <= 1 || right.length <= 1) { | 3028 if (left.length <= 1 || right.length <= 1) { |
2801 return left == right; | 3029 return left == right; |
2802 } | 3030 } |
2803 return left.substring(1) == right.substring(1); | 3031 return left.substring(1) == right.substring(1); |
2804 } | 3032 } |
2805 } | 3033 } |
2806 /** | 3034 /** |
2807 * Instances of the class `EmbeddedHtmlScriptElementImpl` implement an[EmbeddedH
tmlScriptElement]. | 3035 * Instances of the class `EmbeddedHtmlScriptElementImpl` implement an |
| 3036 * [EmbeddedHtmlScriptElement]. |
| 3037 * |
2808 * @coverage dart.engine.element | 3038 * @coverage dart.engine.element |
2809 */ | 3039 */ |
2810 class EmbeddedHtmlScriptElementImpl extends HtmlScriptElementImpl implements Emb
eddedHtmlScriptElement { | 3040 class EmbeddedHtmlScriptElementImpl extends HtmlScriptElementImpl implements Emb
eddedHtmlScriptElement { |
2811 | 3041 |
2812 /** | 3042 /** |
2813 * The library defined by the script tag's content. | 3043 * The library defined by the script tag's content. |
2814 */ | 3044 */ |
2815 LibraryElement _scriptLibrary; | 3045 LibraryElement _scriptLibrary; |
2816 | 3046 |
2817 /** | 3047 /** |
2818 * Initialize a newly created script element to have the specified tag name an
d offset. | 3048 * Initialize a newly created script element to have the specified tag name an
d offset. |
| 3049 * |
2819 * @param node the XML node from which this element is derived (not `null`) | 3050 * @param node the XML node from which this element is derived (not `null`) |
2820 */ | 3051 */ |
2821 EmbeddedHtmlScriptElementImpl(XmlTagNode node) : super(node) { | 3052 EmbeddedHtmlScriptElementImpl(XmlTagNode node) : super(node) { |
2822 } | 3053 } |
2823 accept(ElementVisitor visitor) => visitor.visitEmbeddedHtmlScriptElement(this)
; | 3054 accept(ElementVisitor visitor) => visitor.visitEmbeddedHtmlScriptElement(this)
; |
2824 ElementKind get kind => ElementKind.EMBEDDED_HTML_SCRIPT; | 3055 ElementKind get kind => ElementKind.EMBEDDED_HTML_SCRIPT; |
2825 LibraryElement get scriptLibrary => _scriptLibrary; | 3056 LibraryElement get scriptLibrary => _scriptLibrary; |
2826 | 3057 |
2827 /** | 3058 /** |
2828 * Set the script library defined by the script tag's content. | 3059 * Set the script library defined by the script tag's content. |
| 3060 * |
2829 * @param scriptLibrary the library or `null` if none | 3061 * @param scriptLibrary the library or `null` if none |
2830 */ | 3062 */ |
2831 void set scriptLibrary(LibraryElementImpl scriptLibrary2) { | 3063 void set scriptLibrary(LibraryElementImpl scriptLibrary2) { |
2832 scriptLibrary2.enclosingElement = this; | 3064 scriptLibrary2.enclosingElement = this; |
2833 this._scriptLibrary = scriptLibrary2; | 3065 this._scriptLibrary = scriptLibrary2; |
2834 } | 3066 } |
2835 void visitChildren(ElementVisitor<Object> visitor) { | 3067 void visitChildren(ElementVisitor<Object> visitor) { |
2836 safelyVisitChild(_scriptLibrary, visitor); | 3068 safelyVisitChild(_scriptLibrary, visitor); |
2837 } | 3069 } |
2838 } | 3070 } |
2839 /** | 3071 /** |
2840 * The abstract class `ExecutableElementImpl` implements the behavior common to`
ExecutableElement`s. | 3072 * The abstract class `ExecutableElementImpl` implements the behavior common to |
| 3073 * `ExecutableElement`s. |
| 3074 * |
2841 * @coverage dart.engine.element | 3075 * @coverage dart.engine.element |
2842 */ | 3076 */ |
2843 abstract class ExecutableElementImpl extends ElementImpl implements ExecutableEl
ement { | 3077 abstract class ExecutableElementImpl extends ElementImpl implements ExecutableEl
ement { |
2844 | 3078 |
2845 /** | 3079 /** |
2846 * An array containing all of the functions defined within this executable ele
ment. | 3080 * An array containing all of the functions defined within this executable ele
ment. |
2847 */ | 3081 */ |
2848 List<FunctionElement> _functions = FunctionElementImpl.EMPTY_ARRAY; | 3082 List<FunctionElement> _functions = FunctionElementImpl.EMPTY_ARRAY; |
2849 | 3083 |
2850 /** | 3084 /** |
(...skipping 21 matching lines...) Expand all Loading... |
2872 */ | 3106 */ |
2873 FunctionType _type; | 3107 FunctionType _type; |
2874 | 3108 |
2875 /** | 3109 /** |
2876 * An empty array of executable elements. | 3110 * An empty array of executable elements. |
2877 */ | 3111 */ |
2878 static List<ExecutableElement> EMPTY_ARRAY = new List<ExecutableElement>(0); | 3112 static List<ExecutableElement> EMPTY_ARRAY = new List<ExecutableElement>(0); |
2879 | 3113 |
2880 /** | 3114 /** |
2881 * Initialize a newly created executable element to have the given name. | 3115 * Initialize a newly created executable element to have the given name. |
| 3116 * |
2882 * @param name the name of this element | 3117 * @param name the name of this element |
2883 */ | 3118 */ |
2884 ExecutableElementImpl.con1(Identifier name) : super.con1(name) { | 3119 ExecutableElementImpl.con1(Identifier name) : super.con1(name) { |
2885 _jtd_constructor_200_impl(name); | 3120 _jtd_constructor_200_impl(name); |
2886 } | 3121 } |
2887 _jtd_constructor_200_impl(Identifier name) { | 3122 _jtd_constructor_200_impl(Identifier name) { |
2888 } | 3123 } |
2889 | 3124 |
2890 /** | 3125 /** |
2891 * Initialize a newly created executable element to have the given name. | 3126 * Initialize a newly created executable element to have the given name. |
| 3127 * |
2892 * @param name the name of this element | 3128 * @param name the name of this element |
2893 * @param nameOffset the offset of the name of this element in the file that c
ontains the | 3129 * @param nameOffset the offset of the name of this element in the file that c
ontains the |
2894 * declaration of this element | 3130 * declaration of this element |
2895 */ | 3131 */ |
2896 ExecutableElementImpl.con2(String name, int nameOffset) : super.con2(name, nam
eOffset) { | 3132 ExecutableElementImpl.con2(String name, int nameOffset) : super.con2(name, nam
eOffset) { |
2897 _jtd_constructor_201_impl(name, nameOffset); | 3133 _jtd_constructor_201_impl(name, nameOffset); |
2898 } | 3134 } |
2899 _jtd_constructor_201_impl(String name, int nameOffset) { | 3135 _jtd_constructor_201_impl(String name, int nameOffset) { |
2900 } | 3136 } |
2901 ElementImpl getChild(String identifier2) { | 3137 ElementImpl getChild(String identifier2) { |
2902 for (ExecutableElement function in _functions) { | 3138 for (ExecutableElement function in _functions) { |
2903 if (((function as ExecutableElementImpl)).identifier == identifier2) { | 3139 if (((function as ExecutableElementImpl)).identifier == identifier2) { |
2904 return function as ExecutableElementImpl; | 3140 return function as ExecutableElementImpl; |
(...skipping 19 matching lines...) Expand all Loading... |
2924 List<FunctionElement> get functions => _functions; | 3160 List<FunctionElement> get functions => _functions; |
2925 List<LabelElement> get labels => _labels; | 3161 List<LabelElement> get labels => _labels; |
2926 List<LocalVariableElement> get localVariables => _localVariables; | 3162 List<LocalVariableElement> get localVariables => _localVariables; |
2927 List<ParameterElement> get parameters => _parameters; | 3163 List<ParameterElement> get parameters => _parameters; |
2928 Type2 get returnType => _returnType; | 3164 Type2 get returnType => _returnType; |
2929 FunctionType get type => _type; | 3165 FunctionType get type => _type; |
2930 bool get isOperator => false; | 3166 bool get isOperator => false; |
2931 | 3167 |
2932 /** | 3168 /** |
2933 * Set the functions defined within this executable element to the given funct
ions. | 3169 * Set the functions defined within this executable element to the given funct
ions. |
| 3170 * |
2934 * @param functions the functions defined within this executable element | 3171 * @param functions the functions defined within this executable element |
2935 */ | 3172 */ |
2936 void set functions(List<FunctionElement> functions2) { | 3173 void set functions(List<FunctionElement> functions2) { |
2937 for (FunctionElement function in functions2) { | 3174 for (FunctionElement function in functions2) { |
2938 ((function as FunctionElementImpl)).enclosingElement = this; | 3175 ((function as FunctionElementImpl)).enclosingElement = this; |
2939 } | 3176 } |
2940 this._functions = functions2; | 3177 this._functions = functions2; |
2941 } | 3178 } |
2942 | 3179 |
2943 /** | 3180 /** |
2944 * Set the labels defined within this executable element to the given labels. | 3181 * Set the labels defined within this executable element to the given labels. |
| 3182 * |
2945 * @param labels the labels defined within this executable element | 3183 * @param labels the labels defined within this executable element |
2946 */ | 3184 */ |
2947 void set labels(List<LabelElement> labels2) { | 3185 void set labels(List<LabelElement> labels2) { |
2948 for (LabelElement label in labels2) { | 3186 for (LabelElement label in labels2) { |
2949 ((label as LabelElementImpl)).enclosingElement = this; | 3187 ((label as LabelElementImpl)).enclosingElement = this; |
2950 } | 3188 } |
2951 this._labels = labels2; | 3189 this._labels = labels2; |
2952 } | 3190 } |
2953 | 3191 |
2954 /** | 3192 /** |
2955 * Set the local variables defined within this executable element to the given
variables. | 3193 * Set the local variables defined within this executable element to the given
variables. |
| 3194 * |
2956 * @param localVariables the local variables defined within this executable el
ement | 3195 * @param localVariables the local variables defined within this executable el
ement |
2957 */ | 3196 */ |
2958 void set localVariables(List<LocalVariableElement> localVariables2) { | 3197 void set localVariables(List<LocalVariableElement> localVariables2) { |
2959 for (LocalVariableElement variable in localVariables2) { | 3198 for (LocalVariableElement variable in localVariables2) { |
2960 ((variable as LocalVariableElementImpl)).enclosingElement = this; | 3199 ((variable as LocalVariableElementImpl)).enclosingElement = this; |
2961 } | 3200 } |
2962 this._localVariables = localVariables2; | 3201 this._localVariables = localVariables2; |
2963 } | 3202 } |
2964 | 3203 |
2965 /** | 3204 /** |
2966 * Set the parameters defined by this executable element to the given paramete
rs. | 3205 * Set the parameters defined by this executable element to the given paramete
rs. |
| 3206 * |
2967 * @param parameters the parameters defined by this executable element | 3207 * @param parameters the parameters defined by this executable element |
2968 */ | 3208 */ |
2969 void set parameters(List<ParameterElement> parameters2) { | 3209 void set parameters(List<ParameterElement> parameters2) { |
2970 for (ParameterElement parameter in parameters2) { | 3210 for (ParameterElement parameter in parameters2) { |
2971 ((parameter as ParameterElementImpl)).enclosingElement = this; | 3211 ((parameter as ParameterElementImpl)).enclosingElement = this; |
2972 } | 3212 } |
2973 this._parameters = parameters2; | 3213 this._parameters = parameters2; |
2974 } | 3214 } |
2975 | 3215 |
2976 /** | 3216 /** |
2977 * Set the return type defined by this executable element. | 3217 * Set the return type defined by this executable element. |
| 3218 * |
2978 * @param returnType the return type defined by this executable element | 3219 * @param returnType the return type defined by this executable element |
2979 */ | 3220 */ |
2980 void set returnType(Type2 returnType2) { | 3221 void set returnType(Type2 returnType2) { |
2981 this._returnType = returnType2; | 3222 this._returnType = returnType2; |
2982 } | 3223 } |
2983 | 3224 |
2984 /** | 3225 /** |
2985 * Set the type of function defined by this executable element to the given ty
pe. | 3226 * Set the type of function defined by this executable element to the given ty
pe. |
| 3227 * |
2986 * @param type the type of function defined by this executable element | 3228 * @param type the type of function defined by this executable element |
2987 */ | 3229 */ |
2988 void set type(FunctionType type2) { | 3230 void set type(FunctionType type2) { |
2989 this._type = type2; | 3231 this._type = type2; |
2990 } | 3232 } |
2991 void visitChildren(ElementVisitor<Object> visitor) { | 3233 void visitChildren(ElementVisitor<Object> visitor) { |
2992 super.visitChildren(visitor); | 3234 super.visitChildren(visitor); |
2993 safelyVisitChildren(_functions, visitor); | 3235 safelyVisitChildren(_functions, visitor); |
2994 safelyVisitChildren(_labels, visitor); | 3236 safelyVisitChildren(_labels, visitor); |
2995 safelyVisitChildren(_localVariables, visitor); | 3237 safelyVisitChildren(_localVariables, visitor); |
(...skipping 10 matching lines...) Expand all Loading... |
3006 } | 3248 } |
3007 builder.append(")"); | 3249 builder.append(")"); |
3008 if (_type != null) { | 3250 if (_type != null) { |
3009 builder.append(" -> "); | 3251 builder.append(" -> "); |
3010 builder.append(_type.returnType); | 3252 builder.append(_type.returnType); |
3011 } | 3253 } |
3012 } | 3254 } |
3013 } | 3255 } |
3014 /** | 3256 /** |
3015 * Instances of the class `ExportElementImpl` implement an [ExportElement]. | 3257 * Instances of the class `ExportElementImpl` implement an [ExportElement]. |
| 3258 * |
3016 * @coverage dart.engine.element | 3259 * @coverage dart.engine.element |
3017 */ | 3260 */ |
3018 class ExportElementImpl extends ElementImpl implements ExportElement { | 3261 class ExportElementImpl extends ElementImpl implements ExportElement { |
3019 | 3262 |
3020 /** | 3263 /** |
3021 * The URI that is specified by this directive. | 3264 * The URI that is specified by this directive. |
3022 */ | 3265 */ |
3023 String _uri; | 3266 String _uri; |
3024 | 3267 |
3025 /** | 3268 /** |
(...skipping 14 matching lines...) Expand all Loading... |
3040 } | 3283 } |
3041 accept(ElementVisitor visitor) => visitor.visitExportElement(this); | 3284 accept(ElementVisitor visitor) => visitor.visitExportElement(this); |
3042 List<NamespaceCombinator> get combinators => _combinators; | 3285 List<NamespaceCombinator> get combinators => _combinators; |
3043 LibraryElement get exportedLibrary => _exportedLibrary; | 3286 LibraryElement get exportedLibrary => _exportedLibrary; |
3044 ElementKind get kind => ElementKind.EXPORT; | 3287 ElementKind get kind => ElementKind.EXPORT; |
3045 String get uri => _uri; | 3288 String get uri => _uri; |
3046 | 3289 |
3047 /** | 3290 /** |
3048 * Set the combinators that were specified as part of the export directive to
the given array of | 3291 * Set the combinators that were specified as part of the export directive to
the given array of |
3049 * combinators. | 3292 * combinators. |
| 3293 * |
3050 * @param combinators the combinators that were specified as part of the expor
t directive | 3294 * @param combinators the combinators that were specified as part of the expor
t directive |
3051 */ | 3295 */ |
3052 void set combinators(List<NamespaceCombinator> combinators2) { | 3296 void set combinators(List<NamespaceCombinator> combinators2) { |
3053 this._combinators = combinators2; | 3297 this._combinators = combinators2; |
3054 } | 3298 } |
3055 | 3299 |
3056 /** | 3300 /** |
3057 * Set the library that is exported from this library by this import directive
to the given | 3301 * Set the library that is exported from this library by this import directive
to the given |
3058 * library. | 3302 * library. |
| 3303 * |
3059 * @param exportedLibrary the library that is exported from this library | 3304 * @param exportedLibrary the library that is exported from this library |
3060 */ | 3305 */ |
3061 void set exportedLibrary(LibraryElement exportedLibrary2) { | 3306 void set exportedLibrary(LibraryElement exportedLibrary2) { |
3062 this._exportedLibrary = exportedLibrary2; | 3307 this._exportedLibrary = exportedLibrary2; |
3063 } | 3308 } |
3064 | 3309 |
3065 /** | 3310 /** |
3066 * Set the URI that is specified by this directive. | 3311 * Set the URI that is specified by this directive. |
| 3312 * |
3067 * @param uri the URI that is specified by this directive. | 3313 * @param uri the URI that is specified by this directive. |
3068 */ | 3314 */ |
3069 void set uri(String uri2) { | 3315 void set uri(String uri2) { |
3070 this._uri = uri2; | 3316 this._uri = uri2; |
3071 } | 3317 } |
3072 void appendTo(JavaStringBuilder builder) { | 3318 void appendTo(JavaStringBuilder builder) { |
3073 builder.append("export "); | 3319 builder.append("export "); |
3074 ((_exportedLibrary as LibraryElementImpl)).appendTo(builder); | 3320 ((_exportedLibrary as LibraryElementImpl)).appendTo(builder); |
3075 } | 3321 } |
3076 String get identifier => _exportedLibrary.name; | 3322 String get identifier => _exportedLibrary.name; |
3077 } | 3323 } |
3078 /** | 3324 /** |
3079 * Instances of the class `ExternalHtmlScriptElementImpl` implement an[ExternalH
tmlScriptElement]. | 3325 * Instances of the class `ExternalHtmlScriptElementImpl` implement an |
| 3326 * [ExternalHtmlScriptElement]. |
| 3327 * |
3080 * @coverage dart.engine.element | 3328 * @coverage dart.engine.element |
3081 */ | 3329 */ |
3082 class ExternalHtmlScriptElementImpl extends HtmlScriptElementImpl implements Ext
ernalHtmlScriptElement { | 3330 class ExternalHtmlScriptElementImpl extends HtmlScriptElementImpl implements Ext
ernalHtmlScriptElement { |
3083 | 3331 |
3084 /** | 3332 /** |
3085 * The source specified in the `source` attribute or `null` if unspecified. | 3333 * The source specified in the `source` attribute or `null` if unspecified. |
3086 */ | 3334 */ |
3087 Source _scriptSource; | 3335 Source _scriptSource; |
3088 | 3336 |
3089 /** | 3337 /** |
3090 * Initialize a newly created script element to have the specified tag name an
d offset. | 3338 * Initialize a newly created script element to have the specified tag name an
d offset. |
| 3339 * |
3091 * @param node the XML node from which this element is derived (not `null`) | 3340 * @param node the XML node from which this element is derived (not `null`) |
3092 */ | 3341 */ |
3093 ExternalHtmlScriptElementImpl(XmlTagNode node) : super(node) { | 3342 ExternalHtmlScriptElementImpl(XmlTagNode node) : super(node) { |
3094 } | 3343 } |
3095 accept(ElementVisitor visitor) => visitor.visitExternalHtmlScriptElement(this)
; | 3344 accept(ElementVisitor visitor) => visitor.visitExternalHtmlScriptElement(this)
; |
3096 ElementKind get kind => ElementKind.EXTERNAL_HTML_SCRIPT; | 3345 ElementKind get kind => ElementKind.EXTERNAL_HTML_SCRIPT; |
3097 Source get scriptSource => _scriptSource; | 3346 Source get scriptSource => _scriptSource; |
3098 | 3347 |
3099 /** | 3348 /** |
3100 * Set the source specified in the `source` attribute. | 3349 * Set the source specified in the `source` attribute. |
| 3350 * |
3101 * @param scriptSource the script source or `null` if unspecified | 3351 * @param scriptSource the script source or `null` if unspecified |
3102 */ | 3352 */ |
3103 void set scriptSource(Source scriptSource2) { | 3353 void set scriptSource(Source scriptSource2) { |
3104 this._scriptSource = scriptSource2; | 3354 this._scriptSource = scriptSource2; |
3105 } | 3355 } |
3106 } | 3356 } |
3107 /** | 3357 /** |
3108 * Instances of the class `FieldElementImpl` implement a `FieldElement`. | 3358 * Instances of the class `FieldElementImpl` implement a `FieldElement`. |
| 3359 * |
3109 * @coverage dart.engine.element | 3360 * @coverage dart.engine.element |
3110 */ | 3361 */ |
3111 class FieldElementImpl extends PropertyInducingElementImpl implements FieldEleme
nt { | 3362 class FieldElementImpl extends PropertyInducingElementImpl implements FieldEleme
nt { |
3112 | 3363 |
3113 /** | 3364 /** |
3114 * An empty array of field elements. | 3365 * An empty array of field elements. |
3115 */ | 3366 */ |
3116 static List<FieldElement> EMPTY_ARRAY = new List<FieldElement>(0); | 3367 static List<FieldElement> EMPTY_ARRAY = new List<FieldElement>(0); |
3117 | 3368 |
3118 /** | 3369 /** |
3119 * Initialize a newly created field element to have the given name. | 3370 * Initialize a newly created field element to have the given name. |
| 3371 * |
3120 * @param name the name of this element | 3372 * @param name the name of this element |
3121 */ | 3373 */ |
3122 FieldElementImpl.con1(Identifier name) : super.con1(name) { | 3374 FieldElementImpl.con1(Identifier name) : super.con1(name) { |
3123 _jtd_constructor_204_impl(name); | 3375 _jtd_constructor_204_impl(name); |
3124 } | 3376 } |
3125 _jtd_constructor_204_impl(Identifier name) { | 3377 _jtd_constructor_204_impl(Identifier name) { |
3126 } | 3378 } |
3127 | 3379 |
3128 /** | 3380 /** |
3129 * Initialize a newly created synthetic field element to have the given name. | 3381 * Initialize a newly created synthetic field element to have the given name. |
| 3382 * |
3130 * @param name the name of this element | 3383 * @param name the name of this element |
3131 */ | 3384 */ |
3132 FieldElementImpl.con2(String name) : super.con2(name) { | 3385 FieldElementImpl.con2(String name) : super.con2(name) { |
3133 _jtd_constructor_205_impl(name); | 3386 _jtd_constructor_205_impl(name); |
3134 } | 3387 } |
3135 _jtd_constructor_205_impl(String name) { | 3388 _jtd_constructor_205_impl(String name) { |
3136 } | 3389 } |
3137 accept(ElementVisitor visitor) => visitor.visitFieldElement(this); | 3390 accept(ElementVisitor visitor) => visitor.visitFieldElement(this); |
3138 ClassElement get enclosingElement => super.enclosingElement as ClassElement; | 3391 ClassElement get enclosingElement => super.enclosingElement as ClassElement; |
3139 ElementKind get kind => ElementKind.FIELD; | 3392 ElementKind get kind => ElementKind.FIELD; |
3140 bool get isStatic => hasModifier(Modifier.STATIC); | 3393 bool get isStatic => hasModifier(Modifier.STATIC); |
3141 | 3394 |
3142 /** | 3395 /** |
3143 * Set whether this field is static to correspond to the given value. | 3396 * Set whether this field is static to correspond to the given value. |
| 3397 * |
3144 * @param isStatic `true` if the field is static | 3398 * @param isStatic `true` if the field is static |
3145 */ | 3399 */ |
3146 void set static(bool isStatic) { | 3400 void set static(bool isStatic) { |
3147 setModifier(Modifier.STATIC, isStatic); | 3401 setModifier(Modifier.STATIC, isStatic); |
3148 } | 3402 } |
3149 } | 3403 } |
3150 /** | 3404 /** |
3151 * Instances of the class `FieldFormalParameterElementImpl` extend[ParameterElem
entImpl] to provide the additional information of the [FieldElement]associated w
ith the parameter. | 3405 * Instances of the class `FieldFormalParameterElementImpl` extend |
| 3406 * [ParameterElementImpl] to provide the additional information of the [FieldEle
ment] |
| 3407 * associated with the parameter. |
| 3408 * |
3152 * @coverage dart.engine.element | 3409 * @coverage dart.engine.element |
3153 */ | 3410 */ |
3154 class FieldFormalParameterElementImpl extends ParameterElementImpl implements Fi
eldFormalParameterElement { | 3411 class FieldFormalParameterElementImpl extends ParameterElementImpl implements Fi
eldFormalParameterElement { |
3155 | 3412 |
3156 /** | 3413 /** |
3157 * The field associated with this field formal parameter. | 3414 * The field associated with this field formal parameter. |
3158 */ | 3415 */ |
3159 FieldElement _field; | 3416 FieldElement _field; |
3160 | 3417 |
3161 /** | 3418 /** |
3162 * Initialize a newly created parameter element to have the given name. | 3419 * Initialize a newly created parameter element to have the given name. |
| 3420 * |
3163 * @param name the name of this element | 3421 * @param name the name of this element |
3164 */ | 3422 */ |
3165 FieldFormalParameterElementImpl(Identifier name) : super(name) { | 3423 FieldFormalParameterElementImpl(Identifier name) : super(name) { |
3166 } | 3424 } |
3167 accept(ElementVisitor visitor) => visitor.visitFieldFormalParameterElement(thi
s); | 3425 accept(ElementVisitor visitor) => visitor.visitFieldFormalParameterElement(thi
s); |
3168 FieldElement get field => _field; | 3426 FieldElement get field => _field; |
3169 bool get isInitializingFormal => true; | 3427 bool get isInitializingFormal => true; |
3170 | 3428 |
3171 /** | 3429 /** |
3172 * Set the field element associated with this field formal parameter to the gi
ven element. | 3430 * Set the field element associated with this field formal parameter to the gi
ven element. |
| 3431 * |
3173 * @param field the new field element | 3432 * @param field the new field element |
3174 */ | 3433 */ |
3175 void set field(FieldElement field2) { | 3434 void set field(FieldElement field2) { |
3176 this._field = field2; | 3435 this._field = field2; |
3177 } | 3436 } |
3178 } | 3437 } |
3179 /** | 3438 /** |
3180 * Instances of the class `FunctionElementImpl` implement a `FunctionElement`. | 3439 * Instances of the class `FunctionElementImpl` implement a `FunctionElement`. |
| 3440 * |
3181 * @coverage dart.engine.element | 3441 * @coverage dart.engine.element |
3182 */ | 3442 */ |
3183 class FunctionElementImpl extends ExecutableElementImpl implements FunctionEleme
nt { | 3443 class FunctionElementImpl extends ExecutableElementImpl implements FunctionEleme
nt { |
3184 | 3444 |
3185 /** | 3445 /** |
3186 * The offset to the beginning of the visible range for this element. | 3446 * The offset to the beginning of the visible range for this element. |
3187 */ | 3447 */ |
3188 int _visibleRangeOffset = 0; | 3448 int _visibleRangeOffset = 0; |
3189 | 3449 |
3190 /** | 3450 /** |
(...skipping 12 matching lines...) Expand all Loading... |
3203 */ | 3463 */ |
3204 FunctionElementImpl() : super.con2("", -1) { | 3464 FunctionElementImpl() : super.con2("", -1) { |
3205 _jtd_constructor_207_impl(); | 3465 _jtd_constructor_207_impl(); |
3206 } | 3466 } |
3207 _jtd_constructor_207_impl() { | 3467 _jtd_constructor_207_impl() { |
3208 synthetic = true; | 3468 synthetic = true; |
3209 } | 3469 } |
3210 | 3470 |
3211 /** | 3471 /** |
3212 * Initialize a newly created function element to have the given name. | 3472 * Initialize a newly created function element to have the given name. |
| 3473 * |
3213 * @param name the name of this element | 3474 * @param name the name of this element |
3214 */ | 3475 */ |
3215 FunctionElementImpl.con1(Identifier name) : super.con1(name) { | 3476 FunctionElementImpl.con1(Identifier name) : super.con1(name) { |
3216 _jtd_constructor_208_impl(name); | 3477 _jtd_constructor_208_impl(name); |
3217 } | 3478 } |
3218 _jtd_constructor_208_impl(Identifier name) { | 3479 _jtd_constructor_208_impl(Identifier name) { |
3219 } | 3480 } |
3220 | 3481 |
3221 /** | 3482 /** |
3222 * Initialize a newly created function element to have no name and the given o
ffset. This is used | 3483 * Initialize a newly created function element to have no name and the given o
ffset. This is used |
3223 * for function expressions, which have no name. | 3484 * for function expressions, which have no name. |
| 3485 * |
3224 * @param nameOffset the offset of the name of this element in the file that c
ontains the | 3486 * @param nameOffset the offset of the name of this element in the file that c
ontains the |
3225 * declaration of this element | 3487 * declaration of this element |
3226 */ | 3488 */ |
3227 FunctionElementImpl.con2(int nameOffset) : super.con2("", nameOffset) { | 3489 FunctionElementImpl.con2(int nameOffset) : super.con2("", nameOffset) { |
3228 _jtd_constructor_209_impl(nameOffset); | 3490 _jtd_constructor_209_impl(nameOffset); |
3229 } | 3491 } |
3230 _jtd_constructor_209_impl(int nameOffset) { | 3492 _jtd_constructor_209_impl(int nameOffset) { |
3231 } | 3493 } |
3232 accept(ElementVisitor visitor) => visitor.visitFunctionElement(this); | 3494 accept(ElementVisitor visitor) => visitor.visitFunctionElement(this); |
3233 String get identifier => "${name}@${nameOffset}"; | 3495 String get identifier => "${name}@${nameOffset}"; |
3234 ElementKind get kind => ElementKind.FUNCTION; | 3496 ElementKind get kind => ElementKind.FUNCTION; |
3235 SourceRange get visibleRange { | 3497 SourceRange get visibleRange { |
3236 if (_visibleRangeLength < 0) { | 3498 if (_visibleRangeLength < 0) { |
3237 return null; | 3499 return null; |
3238 } | 3500 } |
3239 return new SourceRange(_visibleRangeOffset, _visibleRangeLength); | 3501 return new SourceRange(_visibleRangeOffset, _visibleRangeLength); |
3240 } | 3502 } |
3241 bool get isStatic => enclosingElement is CompilationUnitElement; | 3503 bool get isStatic => enclosingElement is CompilationUnitElement; |
3242 | 3504 |
3243 /** | 3505 /** |
3244 * Set the visible range for this element to the range starting at the given o
ffset with the given | 3506 * Set the visible range for this element to the range starting at the given o
ffset with the given |
3245 * length. | 3507 * length. |
| 3508 * |
3246 * @param offset the offset to the beginning of the visible range for this ele
ment | 3509 * @param offset the offset to the beginning of the visible range for this ele
ment |
3247 * @param length the length of the visible range for this element, or `-1` if
this element | 3510 * @param length the length of the visible range for this element, or `-1` if
this element |
3248 * does not have a visible range | 3511 * does not have a visible range |
3249 */ | 3512 */ |
3250 void setVisibleRange(int offset, int length) { | 3513 void setVisibleRange(int offset, int length) { |
3251 _visibleRangeOffset = offset; | 3514 _visibleRangeOffset = offset; |
3252 _visibleRangeLength = length; | 3515 _visibleRangeLength = length; |
3253 } | 3516 } |
3254 void appendTo(JavaStringBuilder builder) { | 3517 void appendTo(JavaStringBuilder builder) { |
3255 String name = displayName; | 3518 String name = displayName; |
3256 if (name != null) { | 3519 if (name != null) { |
3257 builder.append(name); | 3520 builder.append(name); |
3258 } | 3521 } |
3259 super.appendTo(builder); | 3522 super.appendTo(builder); |
3260 } | 3523 } |
3261 } | 3524 } |
3262 /** | 3525 /** |
3263 * Instances of the class `FunctionTypeAliasElementImpl` implement a`FunctionTyp
eAliasElement`. | 3526 * Instances of the class `FunctionTypeAliasElementImpl` implement a |
| 3527 * `FunctionTypeAliasElement`. |
| 3528 * |
3264 * @coverage dart.engine.element | 3529 * @coverage dart.engine.element |
3265 */ | 3530 */ |
3266 class FunctionTypeAliasElementImpl extends ElementImpl implements FunctionTypeAl
iasElement { | 3531 class FunctionTypeAliasElementImpl extends ElementImpl implements FunctionTypeAl
iasElement { |
3267 | 3532 |
3268 /** | 3533 /** |
3269 * An array containing all of the parameters defined by this type alias. | 3534 * An array containing all of the parameters defined by this type alias. |
3270 */ | 3535 */ |
3271 List<ParameterElement> _parameters = ParameterElementImpl.EMPTY_ARRAY; | 3536 List<ParameterElement> _parameters = ParameterElementImpl.EMPTY_ARRAY; |
3272 | 3537 |
3273 /** | 3538 /** |
(...skipping 11 matching lines...) Expand all Loading... |
3285 */ | 3550 */ |
3286 List<TypeVariableElement> _typeVariables = TypeVariableElementImpl.EMPTY_ARRAY
; | 3551 List<TypeVariableElement> _typeVariables = TypeVariableElementImpl.EMPTY_ARRAY
; |
3287 | 3552 |
3288 /** | 3553 /** |
3289 * An empty array of type alias elements. | 3554 * An empty array of type alias elements. |
3290 */ | 3555 */ |
3291 static List<FunctionTypeAliasElement> EMPTY_ARRAY = new List<FunctionTypeAlias
Element>(0); | 3556 static List<FunctionTypeAliasElement> EMPTY_ARRAY = new List<FunctionTypeAlias
Element>(0); |
3292 | 3557 |
3293 /** | 3558 /** |
3294 * Initialize a newly created type alias element to have the given name. | 3559 * Initialize a newly created type alias element to have the given name. |
| 3560 * |
3295 * @param name the name of this element | 3561 * @param name the name of this element |
3296 */ | 3562 */ |
3297 FunctionTypeAliasElementImpl(Identifier name) : super.con1(name) { | 3563 FunctionTypeAliasElementImpl(Identifier name) : super.con1(name) { |
3298 } | 3564 } |
3299 accept(ElementVisitor visitor) => visitor.visitFunctionTypeAliasElement(this); | 3565 accept(ElementVisitor visitor) => visitor.visitFunctionTypeAliasElement(this); |
3300 ElementImpl getChild(String identifier2) { | 3566 ElementImpl getChild(String identifier2) { |
3301 for (VariableElement parameter in _parameters) { | 3567 for (VariableElement parameter in _parameters) { |
3302 if (((parameter as VariableElementImpl)).identifier == identifier2) { | 3568 if (((parameter as VariableElementImpl)).identifier == identifier2) { |
3303 return parameter as VariableElementImpl; | 3569 return parameter as VariableElementImpl; |
3304 } | 3570 } |
3305 } | 3571 } |
3306 for (TypeVariableElement typeVariable in _typeVariables) { | 3572 for (TypeVariableElement typeVariable in _typeVariables) { |
3307 if (((typeVariable as TypeVariableElementImpl)).identifier == identifier2)
{ | 3573 if (((typeVariable as TypeVariableElementImpl)).identifier == identifier2)
{ |
3308 return typeVariable as TypeVariableElementImpl; | 3574 return typeVariable as TypeVariableElementImpl; |
3309 } | 3575 } |
3310 } | 3576 } |
3311 return null; | 3577 return null; |
3312 } | 3578 } |
3313 CompilationUnitElement get enclosingElement => super.enclosingElement as Compi
lationUnitElement; | 3579 CompilationUnitElement get enclosingElement => super.enclosingElement as Compi
lationUnitElement; |
3314 ElementKind get kind => ElementKind.FUNCTION_TYPE_ALIAS; | 3580 ElementKind get kind => ElementKind.FUNCTION_TYPE_ALIAS; |
3315 List<ParameterElement> get parameters => _parameters; | 3581 List<ParameterElement> get parameters => _parameters; |
3316 Type2 get returnType => _returnType; | 3582 Type2 get returnType => _returnType; |
3317 FunctionType get type => _type; | 3583 FunctionType get type => _type; |
3318 List<TypeVariableElement> get typeVariables => _typeVariables; | 3584 List<TypeVariableElement> get typeVariables => _typeVariables; |
3319 | 3585 |
3320 /** | 3586 /** |
3321 * Set the parameters defined by this type alias to the given parameters. | 3587 * Set the parameters defined by this type alias to the given parameters. |
| 3588 * |
3322 * @param parameters the parameters defined by this type alias | 3589 * @param parameters the parameters defined by this type alias |
3323 */ | 3590 */ |
3324 void set parameters(List<ParameterElement> parameters2) { | 3591 void set parameters(List<ParameterElement> parameters2) { |
3325 if (parameters2 != null) { | 3592 if (parameters2 != null) { |
3326 for (ParameterElement parameter in parameters2) { | 3593 for (ParameterElement parameter in parameters2) { |
3327 ((parameter as ParameterElementImpl)).enclosingElement = this; | 3594 ((parameter as ParameterElementImpl)).enclosingElement = this; |
3328 } | 3595 } |
3329 } | 3596 } |
3330 this._parameters = parameters2; | 3597 this._parameters = parameters2; |
3331 } | 3598 } |
3332 | 3599 |
3333 /** | 3600 /** |
3334 * Set the return type defined by this type alias. | 3601 * Set the return type defined by this type alias. |
| 3602 * |
3335 * @param returnType the return type defined by this type alias | 3603 * @param returnType the return type defined by this type alias |
3336 */ | 3604 */ |
3337 void set returnType(Type2 returnType2) { | 3605 void set returnType(Type2 returnType2) { |
3338 this._returnType = returnType2; | 3606 this._returnType = returnType2; |
3339 } | 3607 } |
3340 | 3608 |
3341 /** | 3609 /** |
3342 * Set the type of function defined by this type alias to the given type. | 3610 * Set the type of function defined by this type alias to the given type. |
| 3611 * |
3343 * @param type the type of function defined by this type alias | 3612 * @param type the type of function defined by this type alias |
3344 */ | 3613 */ |
3345 void set type(FunctionType type2) { | 3614 void set type(FunctionType type2) { |
3346 this._type = type2; | 3615 this._type = type2; |
3347 } | 3616 } |
3348 | 3617 |
3349 /** | 3618 /** |
3350 * Set the type variables defined for this type to the given variables. | 3619 * Set the type variables defined for this type to the given variables. |
| 3620 * |
3351 * @param typeVariables the type variables defined for this type | 3621 * @param typeVariables the type variables defined for this type |
3352 */ | 3622 */ |
3353 void set typeVariables(List<TypeVariableElement> typeVariables2) { | 3623 void set typeVariables(List<TypeVariableElement> typeVariables2) { |
3354 for (TypeVariableElement variable in typeVariables2) { | 3624 for (TypeVariableElement variable in typeVariables2) { |
3355 ((variable as TypeVariableElementImpl)).enclosingElement = this; | 3625 ((variable as TypeVariableElementImpl)).enclosingElement = this; |
3356 } | 3626 } |
3357 this._typeVariables = typeVariables2; | 3627 this._typeVariables = typeVariables2; |
3358 } | 3628 } |
3359 void visitChildren(ElementVisitor<Object> visitor) { | 3629 void visitChildren(ElementVisitor<Object> visitor) { |
3360 super.visitChildren(visitor); | 3630 super.visitChildren(visitor); |
(...skipping 23 matching lines...) Expand all Loading... |
3384 ((_parameters[i] as ParameterElementImpl)).appendTo(builder); | 3654 ((_parameters[i] as ParameterElementImpl)).appendTo(builder); |
3385 } | 3655 } |
3386 builder.append(")"); | 3656 builder.append(")"); |
3387 if (_type != null) { | 3657 if (_type != null) { |
3388 builder.append(" -> "); | 3658 builder.append(" -> "); |
3389 builder.append(_type.returnType); | 3659 builder.append(_type.returnType); |
3390 } | 3660 } |
3391 } | 3661 } |
3392 } | 3662 } |
3393 /** | 3663 /** |
3394 * Instances of the class `HideElementCombinatorImpl` implement a[HideElementCom
binator]. | 3664 * Instances of the class `HideElementCombinatorImpl` implement a |
| 3665 * [HideElementCombinator]. |
| 3666 * |
3395 * @coverage dart.engine.element | 3667 * @coverage dart.engine.element |
3396 */ | 3668 */ |
3397 class HideElementCombinatorImpl implements HideElementCombinator { | 3669 class HideElementCombinatorImpl implements HideElementCombinator { |
3398 | 3670 |
3399 /** | 3671 /** |
3400 * The names that are not to be made visible in the importing library even if
they are defined in | 3672 * The names that are not to be made visible in the importing library even if
they are defined in |
3401 * the imported library. | 3673 * the imported library. |
3402 */ | 3674 */ |
3403 List<String> _hiddenNames = StringUtilities.EMPTY_ARRAY; | 3675 List<String> _hiddenNames = StringUtilities.EMPTY_ARRAY; |
3404 List<String> get hiddenNames => _hiddenNames; | 3676 List<String> get hiddenNames => _hiddenNames; |
3405 | 3677 |
3406 /** | 3678 /** |
3407 * Set the names that are not to be made visible in the importing library even
if they are defined | 3679 * Set the names that are not to be made visible in the importing library even
if they are defined |
3408 * in the imported library to the given names. | 3680 * in the imported library to the given names. |
| 3681 * |
3409 * @param hiddenNames the names that are not to be made visible in the importi
ng library | 3682 * @param hiddenNames the names that are not to be made visible in the importi
ng library |
3410 */ | 3683 */ |
3411 void set hiddenNames(List<String> hiddenNames2) { | 3684 void set hiddenNames(List<String> hiddenNames2) { |
3412 this._hiddenNames = hiddenNames2; | 3685 this._hiddenNames = hiddenNames2; |
3413 } | 3686 } |
3414 String toString() { | 3687 String toString() { |
3415 JavaStringBuilder builder = new JavaStringBuilder(); | 3688 JavaStringBuilder builder = new JavaStringBuilder(); |
3416 builder.append("show "); | 3689 builder.append("show "); |
3417 int count = _hiddenNames.length; | 3690 int count = _hiddenNames.length; |
3418 for (int i = 0; i < count; i++) { | 3691 for (int i = 0; i < count; i++) { |
3419 if (i > 0) { | 3692 if (i > 0) { |
3420 builder.append(", "); | 3693 builder.append(", "); |
3421 } | 3694 } |
3422 builder.append(_hiddenNames[i]); | 3695 builder.append(_hiddenNames[i]); |
3423 } | 3696 } |
3424 return builder.toString(); | 3697 return builder.toString(); |
3425 } | 3698 } |
3426 } | 3699 } |
3427 /** | 3700 /** |
3428 * Instances of the class `HtmlElementImpl` implement an [HtmlElement]. | 3701 * Instances of the class `HtmlElementImpl` implement an [HtmlElement]. |
| 3702 * |
3429 * @coverage dart.engine.element | 3703 * @coverage dart.engine.element |
3430 */ | 3704 */ |
3431 class HtmlElementImpl extends ElementImpl implements HtmlElement { | 3705 class HtmlElementImpl extends ElementImpl implements HtmlElement { |
3432 | 3706 |
3433 /** | 3707 /** |
3434 * An empty array of HTML file elements. | 3708 * An empty array of HTML file elements. |
3435 */ | 3709 */ |
3436 static List<HtmlElement> EMPTY_ARRAY = new List<HtmlElement>(0); | 3710 static List<HtmlElement> EMPTY_ARRAY = new List<HtmlElement>(0); |
3437 | 3711 |
3438 /** | 3712 /** |
3439 * The analysis context in which this library is defined. | 3713 * The analysis context in which this library is defined. |
3440 */ | 3714 */ |
3441 AnalysisContext _context; | 3715 AnalysisContext _context; |
3442 | 3716 |
3443 /** | 3717 /** |
3444 * The scripts contained in or referenced from script tags in the HTML file. | 3718 * The scripts contained in or referenced from script tags in the HTML file. |
3445 */ | 3719 */ |
3446 List<HtmlScriptElement> _scripts = HtmlScriptElementImpl.EMPTY_ARRAY; | 3720 List<HtmlScriptElement> _scripts = HtmlScriptElementImpl.EMPTY_ARRAY; |
3447 | 3721 |
3448 /** | 3722 /** |
3449 * The source that corresponds to this HTML file. | 3723 * The source that corresponds to this HTML file. |
3450 */ | 3724 */ |
3451 Source _source; | 3725 Source _source; |
3452 | 3726 |
3453 /** | 3727 /** |
3454 * Initialize a newly created HTML element to have the given name. | 3728 * Initialize a newly created HTML element to have the given name. |
| 3729 * |
3455 * @param context the analysis context in which the HTML file is defined | 3730 * @param context the analysis context in which the HTML file is defined |
3456 * @param name the name of this element | 3731 * @param name the name of this element |
3457 */ | 3732 */ |
3458 HtmlElementImpl(AnalysisContext context, String name) : super.con2(name, -1) { | 3733 HtmlElementImpl(AnalysisContext context, String name) : super.con2(name, -1) { |
3459 this._context = context; | 3734 this._context = context; |
3460 } | 3735 } |
3461 accept(ElementVisitor visitor) => visitor.visitHtmlElement(this); | 3736 accept(ElementVisitor visitor) => visitor.visitHtmlElement(this); |
3462 bool operator ==(Object object) => runtimeType == object.runtimeType && _sourc
e == ((object as CompilationUnitElementImpl)).source; | 3737 bool operator ==(Object object) => runtimeType == object.runtimeType && _sourc
e == ((object as CompilationUnitElementImpl)).source; |
3463 AnalysisContext get context => _context; | 3738 AnalysisContext get context => _context; |
3464 ElementKind get kind => ElementKind.HTML; | 3739 ElementKind get kind => ElementKind.HTML; |
3465 List<HtmlScriptElement> get scripts => _scripts; | 3740 List<HtmlScriptElement> get scripts => _scripts; |
3466 Source get source => _source; | 3741 Source get source => _source; |
3467 int get hashCode => _source.hashCode; | 3742 int get hashCode => _source.hashCode; |
3468 | 3743 |
3469 /** | 3744 /** |
3470 * Set the scripts contained in the HTML file to the given scripts. | 3745 * Set the scripts contained in the HTML file to the given scripts. |
| 3746 * |
3471 * @param scripts the scripts | 3747 * @param scripts the scripts |
3472 */ | 3748 */ |
3473 void set scripts(List<HtmlScriptElement> scripts2) { | 3749 void set scripts(List<HtmlScriptElement> scripts2) { |
3474 if (scripts2.length == 0) { | 3750 if (scripts2.length == 0) { |
3475 scripts2 = HtmlScriptElementImpl.EMPTY_ARRAY; | 3751 scripts2 = HtmlScriptElementImpl.EMPTY_ARRAY; |
3476 } | 3752 } |
3477 for (HtmlScriptElement script in scripts2) { | 3753 for (HtmlScriptElement script in scripts2) { |
3478 ((script as HtmlScriptElementImpl)).enclosingElement = this; | 3754 ((script as HtmlScriptElementImpl)).enclosingElement = this; |
3479 } | 3755 } |
3480 this._scripts = scripts2; | 3756 this._scripts = scripts2; |
3481 } | 3757 } |
3482 | 3758 |
3483 /** | 3759 /** |
3484 * Set the source that corresponds to this HTML file to the given source. | 3760 * Set the source that corresponds to this HTML file to the given source. |
| 3761 * |
3485 * @param source the source that corresponds to this HTML file | 3762 * @param source the source that corresponds to this HTML file |
3486 */ | 3763 */ |
3487 void set source(Source source2) { | 3764 void set source(Source source2) { |
3488 this._source = source2; | 3765 this._source = source2; |
3489 } | 3766 } |
3490 void visitChildren(ElementVisitor<Object> visitor) { | 3767 void visitChildren(ElementVisitor<Object> visitor) { |
3491 super.visitChildren(visitor); | 3768 super.visitChildren(visitor); |
3492 safelyVisitChildren(_scripts, visitor); | 3769 safelyVisitChildren(_scripts, visitor); |
3493 } | 3770 } |
3494 void appendTo(JavaStringBuilder builder) { | 3771 void appendTo(JavaStringBuilder builder) { |
3495 if (_source == null) { | 3772 if (_source == null) { |
3496 builder.append("{HTML file}"); | 3773 builder.append("{HTML file}"); |
3497 } else { | 3774 } else { |
3498 builder.append(_source.fullName); | 3775 builder.append(_source.fullName); |
3499 } | 3776 } |
3500 } | 3777 } |
3501 } | 3778 } |
3502 /** | 3779 /** |
3503 * Instances of the class `HtmlScriptElementImpl` implement an [HtmlScriptElemen
t]. | 3780 * Instances of the class `HtmlScriptElementImpl` implement an [HtmlScriptElemen
t]. |
| 3781 * |
3504 * @coverage dart.engine.element | 3782 * @coverage dart.engine.element |
3505 */ | 3783 */ |
3506 abstract class HtmlScriptElementImpl extends ElementImpl implements HtmlScriptEl
ement { | 3784 abstract class HtmlScriptElementImpl extends ElementImpl implements HtmlScriptEl
ement { |
3507 | 3785 |
3508 /** | 3786 /** |
3509 * An empty array of HTML script elements. | 3787 * An empty array of HTML script elements. |
3510 */ | 3788 */ |
3511 static List<HtmlScriptElement> EMPTY_ARRAY = new List<HtmlScriptElement>(0); | 3789 static List<HtmlScriptElement> EMPTY_ARRAY = new List<HtmlScriptElement>(0); |
3512 | 3790 |
3513 /** | 3791 /** |
3514 * Initialize a newly created script element to have the specified tag name an
d offset. | 3792 * Initialize a newly created script element to have the specified tag name an
d offset. |
| 3793 * |
3515 * @param node the XML node from which this element is derived (not `null`) | 3794 * @param node the XML node from which this element is derived (not `null`) |
3516 */ | 3795 */ |
3517 HtmlScriptElementImpl(XmlTagNode node) : super.con2(node.tag.lexeme, node.tag.
offset) { | 3796 HtmlScriptElementImpl(XmlTagNode node) : super.con2(node.tag.lexeme, node.tag.
offset) { |
3518 } | 3797 } |
3519 } | 3798 } |
3520 /** | 3799 /** |
3521 * Instances of the class `ImportElementImpl` implement an [ImportElement]. | 3800 * Instances of the class `ImportElementImpl` implement an [ImportElement]. |
| 3801 * |
3522 * @coverage dart.engine.element | 3802 * @coverage dart.engine.element |
3523 */ | 3803 */ |
3524 class ImportElementImpl extends ElementImpl implements ImportElement { | 3804 class ImportElementImpl extends ElementImpl implements ImportElement { |
3525 | 3805 |
3526 /** | 3806 /** |
3527 * The URI that is specified by this directive. | 3807 * The URI that is specified by this directive. |
3528 */ | 3808 */ |
3529 String _uri; | 3809 String _uri; |
3530 | 3810 |
3531 /** | 3811 /** |
(...skipping 21 matching lines...) Expand all Loading... |
3553 accept(ElementVisitor visitor) => visitor.visitImportElement(this); | 3833 accept(ElementVisitor visitor) => visitor.visitImportElement(this); |
3554 List<NamespaceCombinator> get combinators => _combinators; | 3834 List<NamespaceCombinator> get combinators => _combinators; |
3555 LibraryElement get importedLibrary => _importedLibrary; | 3835 LibraryElement get importedLibrary => _importedLibrary; |
3556 ElementKind get kind => ElementKind.IMPORT; | 3836 ElementKind get kind => ElementKind.IMPORT; |
3557 PrefixElement get prefix => _prefix; | 3837 PrefixElement get prefix => _prefix; |
3558 String get uri => _uri; | 3838 String get uri => _uri; |
3559 | 3839 |
3560 /** | 3840 /** |
3561 * Set the combinators that were specified as part of the import directive to
the given array of | 3841 * Set the combinators that were specified as part of the import directive to
the given array of |
3562 * combinators. | 3842 * combinators. |
| 3843 * |
3563 * @param combinators the combinators that were specified as part of the impor
t directive | 3844 * @param combinators the combinators that were specified as part of the impor
t directive |
3564 */ | 3845 */ |
3565 void set combinators(List<NamespaceCombinator> combinators2) { | 3846 void set combinators(List<NamespaceCombinator> combinators2) { |
3566 this._combinators = combinators2; | 3847 this._combinators = combinators2; |
3567 } | 3848 } |
3568 | 3849 |
3569 /** | 3850 /** |
3570 * Set the library that is imported into this library by this import directive
to the given | 3851 * Set the library that is imported into this library by this import directive
to the given |
3571 * library. | 3852 * library. |
| 3853 * |
3572 * @param importedLibrary the library that is imported into this library | 3854 * @param importedLibrary the library that is imported into this library |
3573 */ | 3855 */ |
3574 void set importedLibrary(LibraryElement importedLibrary2) { | 3856 void set importedLibrary(LibraryElement importedLibrary2) { |
3575 this._importedLibrary = importedLibrary2; | 3857 this._importedLibrary = importedLibrary2; |
3576 } | 3858 } |
3577 | 3859 |
3578 /** | 3860 /** |
3579 * Set the prefix that was specified as part of the import directive to the gi
ven prefix. | 3861 * Set the prefix that was specified as part of the import directive to the gi
ven prefix. |
| 3862 * |
3580 * @param prefix the prefix that was specified as part of the import directive | 3863 * @param prefix the prefix that was specified as part of the import directive |
3581 */ | 3864 */ |
3582 void set prefix(PrefixElement prefix2) { | 3865 void set prefix(PrefixElement prefix2) { |
3583 this._prefix = prefix2; | 3866 this._prefix = prefix2; |
3584 } | 3867 } |
3585 | 3868 |
3586 /** | 3869 /** |
3587 * Set the URI that is specified by this directive. | 3870 * Set the URI that is specified by this directive. |
| 3871 * |
3588 * @param uri the URI that is specified by this directive. | 3872 * @param uri the URI that is specified by this directive. |
3589 */ | 3873 */ |
3590 void set uri(String uri2) { | 3874 void set uri(String uri2) { |
3591 this._uri = uri2; | 3875 this._uri = uri2; |
3592 } | 3876 } |
3593 void visitChildren(ElementVisitor<Object> visitor) { | 3877 void visitChildren(ElementVisitor<Object> visitor) { |
3594 super.visitChildren(visitor); | 3878 super.visitChildren(visitor); |
3595 safelyVisitChild(_prefix, visitor); | 3879 safelyVisitChild(_prefix, visitor); |
3596 } | 3880 } |
3597 void appendTo(JavaStringBuilder builder) { | 3881 void appendTo(JavaStringBuilder builder) { |
3598 builder.append("import "); | 3882 builder.append("import "); |
3599 ((_importedLibrary as LibraryElementImpl)).appendTo(builder); | 3883 ((_importedLibrary as LibraryElementImpl)).appendTo(builder); |
3600 } | 3884 } |
3601 String get identifier => ((_importedLibrary as LibraryElementImpl)).identifier
; | 3885 String get identifier => ((_importedLibrary as LibraryElementImpl)).identifier
; |
3602 } | 3886 } |
3603 /** | 3887 /** |
3604 * Instances of the class `LabelElementImpl` implement a `LabelElement`. | 3888 * Instances of the class `LabelElementImpl` implement a `LabelElement`. |
| 3889 * |
3605 * @coverage dart.engine.element | 3890 * @coverage dart.engine.element |
3606 */ | 3891 */ |
3607 class LabelElementImpl extends ElementImpl implements LabelElement { | 3892 class LabelElementImpl extends ElementImpl implements LabelElement { |
3608 | 3893 |
3609 /** | 3894 /** |
3610 * A flag indicating whether this label is associated with a `switch` statemen
t. | 3895 * A flag indicating whether this label is associated with a `switch` statemen
t. |
3611 */ | 3896 */ |
3612 bool _onSwitchStatement = false; | 3897 bool _onSwitchStatement = false; |
3613 | 3898 |
3614 /** | 3899 /** |
3615 * A flag indicating whether this label is associated with a `switch` member (
`case`or `default`). | 3900 * A flag indicating whether this label is associated with a `switch` member (
`case` |
| 3901 * or `default`). |
3616 */ | 3902 */ |
3617 bool _onSwitchMember = false; | 3903 bool _onSwitchMember = false; |
3618 | 3904 |
3619 /** | 3905 /** |
3620 * An empty array of label elements. | 3906 * An empty array of label elements. |
3621 */ | 3907 */ |
3622 static List<LabelElement> EMPTY_ARRAY = new List<LabelElement>(0); | 3908 static List<LabelElement> EMPTY_ARRAY = new List<LabelElement>(0); |
3623 | 3909 |
3624 /** | 3910 /** |
3625 * Initialize a newly created label element to have the given name. | 3911 * Initialize a newly created label element to have the given name. |
| 3912 * |
3626 * @param name the name of this element | 3913 * @param name the name of this element |
3627 * @param onSwitchStatement `true` if this label is associated with a `switch`
statement | 3914 * @param onSwitchStatement `true` if this label is associated with a `switch` |
| 3915 * statement |
3628 * @param onSwitchMember `true` if this label is associated with a `switch` me
mber | 3916 * @param onSwitchMember `true` if this label is associated with a `switch` me
mber |
3629 */ | 3917 */ |
3630 LabelElementImpl(Identifier name, bool onSwitchStatement, bool onSwitchMember)
: super.con1(name) { | 3918 LabelElementImpl(Identifier name, bool onSwitchStatement, bool onSwitchMember)
: super.con1(name) { |
3631 this._onSwitchStatement = onSwitchStatement; | 3919 this._onSwitchStatement = onSwitchStatement; |
3632 this._onSwitchMember = onSwitchMember; | 3920 this._onSwitchMember = onSwitchMember; |
3633 } | 3921 } |
3634 accept(ElementVisitor visitor) => visitor.visitLabelElement(this); | 3922 accept(ElementVisitor visitor) => visitor.visitLabelElement(this); |
3635 ExecutableElement get enclosingElement => super.enclosingElement as Executable
Element; | 3923 ExecutableElement get enclosingElement => super.enclosingElement as Executable
Element; |
3636 ElementKind get kind => ElementKind.LABEL; | 3924 ElementKind get kind => ElementKind.LABEL; |
3637 | 3925 |
3638 /** | 3926 /** |
3639 * Return `true` if this label is associated with a `switch` member (`case` or
`default`). | 3927 * Return `true` if this label is associated with a `switch` member (`case` or |
| 3928 * `default`). |
| 3929 * |
3640 * @return `true` if this label is associated with a `switch` member | 3930 * @return `true` if this label is associated with a `switch` member |
3641 */ | 3931 */ |
3642 bool get isOnSwitchMember => _onSwitchMember; | 3932 bool get isOnSwitchMember => _onSwitchMember; |
3643 | 3933 |
3644 /** | 3934 /** |
3645 * Return `true` if this label is associated with a `switch` statement. | 3935 * Return `true` if this label is associated with a `switch` statement. |
| 3936 * |
3646 * @return `true` if this label is associated with a `switch` statement | 3937 * @return `true` if this label is associated with a `switch` statement |
3647 */ | 3938 */ |
3648 bool get isOnSwitchStatement => _onSwitchStatement; | 3939 bool get isOnSwitchStatement => _onSwitchStatement; |
3649 } | 3940 } |
3650 /** | 3941 /** |
3651 * Instances of the class `LibraryElementImpl` implement a `LibraryElement`. | 3942 * Instances of the class `LibraryElementImpl` implement a `LibraryElement`. |
| 3943 * |
3652 * @coverage dart.engine.element | 3944 * @coverage dart.engine.element |
3653 */ | 3945 */ |
3654 class LibraryElementImpl extends ElementImpl implements LibraryElement { | 3946 class LibraryElementImpl extends ElementImpl implements LibraryElement { |
3655 | 3947 |
3656 /** | 3948 /** |
3657 * An empty array of library elements. | 3949 * An empty array of library elements. |
3658 */ | 3950 */ |
3659 static List<LibraryElement> EMPTY_ARRAY = new List<LibraryElement>(0); | 3951 static List<LibraryElement> EMPTY_ARRAY = new List<LibraryElement>(0); |
3660 | 3952 |
3661 /** | 3953 /** |
3662 * Determine if the given library is up to date with respect to the given time
stamp. | 3954 * Determine if the given library is up to date with respect to the given time
stamp. |
| 3955 * |
3663 * @param library the library to process | 3956 * @param library the library to process |
3664 * @param timeStamp the time stamp to check against | 3957 * @param timeStamp the time stamp to check against |
3665 * @param visitedLibraries the set of visited libraries | 3958 * @param visitedLibraries the set of visited libraries |
3666 */ | 3959 */ |
3667 static bool isUpToDate(LibraryElement library, int timeStamp, Set<LibraryEleme
nt> visitedLibraries) { | 3960 static bool isUpToDate(LibraryElement library, int timeStamp, Set<LibraryEleme
nt> visitedLibraries) { |
3668 if (!visitedLibraries.contains(library)) { | 3961 if (!visitedLibraries.contains(library)) { |
3669 javaSetAdd(visitedLibraries, library); | 3962 javaSetAdd(visitedLibraries, library); |
3670 if (timeStamp < library.definingCompilationUnit.source.modificationStamp)
{ | 3963 if (timeStamp < library.definingCompilationUnit.source.modificationStamp)
{ |
3671 return false; | 3964 return false; |
3672 } | 3965 } |
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3708 * An array containing specifications of all of the imports defined in this li
brary. | 4001 * An array containing specifications of all of the imports defined in this li
brary. |
3709 */ | 4002 */ |
3710 List<ImportElement> _imports = ImportElement.EMPTY_ARRAY; | 4003 List<ImportElement> _imports = ImportElement.EMPTY_ARRAY; |
3711 | 4004 |
3712 /** | 4005 /** |
3713 * An array containing specifications of all of the exports defined in this li
brary. | 4006 * An array containing specifications of all of the exports defined in this li
brary. |
3714 */ | 4007 */ |
3715 List<ExportElement> _exports = ExportElement.EMPTY_ARRAY; | 4008 List<ExportElement> _exports = ExportElement.EMPTY_ARRAY; |
3716 | 4009 |
3717 /** | 4010 /** |
3718 * An array containing all of the compilation units that are included in this
library using a`part` directive. | 4011 * An array containing all of the compilation units that are included in this
library using a |
| 4012 * `part` directive. |
3719 */ | 4013 */ |
3720 List<CompilationUnitElement> _parts = CompilationUnitElementImpl.EMPTY_ARRAY; | 4014 List<CompilationUnitElement> _parts = CompilationUnitElementImpl.EMPTY_ARRAY; |
3721 | 4015 |
3722 /** | 4016 /** |
3723 * Initialize a newly created library element to have the given name. | 4017 * Initialize a newly created library element to have the given name. |
| 4018 * |
3724 * @param context the analysis context in which the library is defined | 4019 * @param context the analysis context in which the library is defined |
3725 * @param name the name of this element | 4020 * @param name the name of this element |
3726 */ | 4021 */ |
3727 LibraryElementImpl(AnalysisContext context, LibraryIdentifier name) : super.co
n1(name) { | 4022 LibraryElementImpl(AnalysisContext context, LibraryIdentifier name) : super.co
n1(name) { |
3728 this._context = context; | 4023 this._context = context; |
3729 } | 4024 } |
3730 accept(ElementVisitor visitor) => visitor.visitLibraryElement(this); | 4025 accept(ElementVisitor visitor) => visitor.visitLibraryElement(this); |
3731 bool operator ==(Object object) => object != null && runtimeType == object.run
timeType && _definingCompilationUnit == ((object as LibraryElementImpl)).definin
gCompilationUnit; | 4026 bool operator ==(Object object) => object != null && runtimeType == object.run
timeType && _definingCompilationUnit == ((object as LibraryElementImpl)).definin
gCompilationUnit; |
3732 ElementImpl getChild(String identifier2) { | 4027 ElementImpl getChild(String identifier2) { |
3733 if (((_definingCompilationUnit as CompilationUnitElementImpl)).identifier ==
identifier2) { | 4028 if (((_definingCompilationUnit as CompilationUnitElementImpl)).identifier ==
identifier2) { |
(...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3811 int get hashCode => _definingCompilationUnit.hashCode; | 4106 int get hashCode => _definingCompilationUnit.hashCode; |
3812 bool get isBrowserApplication => _entryPoint != null && isOrImportsBrowserLibr
ary; | 4107 bool get isBrowserApplication => _entryPoint != null && isOrImportsBrowserLibr
ary; |
3813 bool get isDartCore => name == "dart.core"; | 4108 bool get isDartCore => name == "dart.core"; |
3814 bool isUpToDate2(int timeStamp) { | 4109 bool isUpToDate2(int timeStamp) { |
3815 Set<LibraryElement> visitedLibraries = new Set(); | 4110 Set<LibraryElement> visitedLibraries = new Set(); |
3816 return isUpToDate(this, timeStamp, visitedLibraries); | 4111 return isUpToDate(this, timeStamp, visitedLibraries); |
3817 } | 4112 } |
3818 | 4113 |
3819 /** | 4114 /** |
3820 * Set the compilation unit that defines this library to the given compilation
unit. | 4115 * Set the compilation unit that defines this library to the given compilation
unit. |
| 4116 * |
3821 * @param definingCompilationUnit the compilation unit that defines this libra
ry | 4117 * @param definingCompilationUnit the compilation unit that defines this libra
ry |
3822 */ | 4118 */ |
3823 void set definingCompilationUnit(CompilationUnitElement definingCompilationUni
t2) { | 4119 void set definingCompilationUnit(CompilationUnitElement definingCompilationUni
t2) { |
3824 ((definingCompilationUnit2 as CompilationUnitElementImpl)).enclosingElement
= this; | 4120 ((definingCompilationUnit2 as CompilationUnitElementImpl)).enclosingElement
= this; |
3825 this._definingCompilationUnit = definingCompilationUnit2; | 4121 this._definingCompilationUnit = definingCompilationUnit2; |
3826 } | 4122 } |
3827 | 4123 |
3828 /** | 4124 /** |
3829 * Set the entry point for this library to the given function. | 4125 * Set the entry point for this library to the given function. |
| 4126 * |
3830 * @param entryPoint the entry point for this library | 4127 * @param entryPoint the entry point for this library |
3831 */ | 4128 */ |
3832 void set entryPoint(FunctionElement entryPoint2) { | 4129 void set entryPoint(FunctionElement entryPoint2) { |
3833 this._entryPoint = entryPoint2; | 4130 this._entryPoint = entryPoint2; |
3834 } | 4131 } |
3835 | 4132 |
3836 /** | 4133 /** |
3837 * Set the specifications of all of the exports defined in this library to the
given array. | 4134 * Set the specifications of all of the exports defined in this library to the
given array. |
| 4135 * |
3838 * @param exports the specifications of all of the exports defined in this lib
rary | 4136 * @param exports the specifications of all of the exports defined in this lib
rary |
3839 */ | 4137 */ |
3840 void set exports(List<ExportElement> exports2) { | 4138 void set exports(List<ExportElement> exports2) { |
3841 for (ExportElement exportElement in exports2) { | 4139 for (ExportElement exportElement in exports2) { |
3842 ((exportElement as ExportElementImpl)).enclosingElement = this; | 4140 ((exportElement as ExportElementImpl)).enclosingElement = this; |
3843 } | 4141 } |
3844 this._exports = exports2; | 4142 this._exports = exports2; |
3845 } | 4143 } |
3846 | 4144 |
3847 /** | 4145 /** |
3848 * Set the specifications of all of the imports defined in this library to the
given array. | 4146 * Set the specifications of all of the imports defined in this library to the
given array. |
| 4147 * |
3849 * @param imports the specifications of all of the imports defined in this lib
rary | 4148 * @param imports the specifications of all of the imports defined in this lib
rary |
3850 */ | 4149 */ |
3851 void set imports(List<ImportElement> imports2) { | 4150 void set imports(List<ImportElement> imports2) { |
3852 for (ImportElement importElement in imports2) { | 4151 for (ImportElement importElement in imports2) { |
3853 ((importElement as ImportElementImpl)).enclosingElement = this; | 4152 ((importElement as ImportElementImpl)).enclosingElement = this; |
3854 PrefixElementImpl prefix = importElement.prefix as PrefixElementImpl; | 4153 PrefixElementImpl prefix = importElement.prefix as PrefixElementImpl; |
3855 if (prefix != null) { | 4154 if (prefix != null) { |
3856 prefix.enclosingElement = this; | 4155 prefix.enclosingElement = this; |
3857 } | 4156 } |
3858 } | 4157 } |
3859 this._imports = imports2; | 4158 this._imports = imports2; |
3860 } | 4159 } |
3861 | 4160 |
3862 /** | 4161 /** |
3863 * Set the compilation units that are included in this library using a `part`
directive. | 4162 * Set the compilation units that are included in this library using a `part`
directive. |
3864 * @param parts the compilation units that are included in this library using
a `part`directive | 4163 * |
| 4164 * @param parts the compilation units that are included in this library using
a `part` |
| 4165 * directive |
3865 */ | 4166 */ |
3866 void set parts(List<CompilationUnitElement> parts2) { | 4167 void set parts(List<CompilationUnitElement> parts2) { |
3867 for (CompilationUnitElement compilationUnit in parts2) { | 4168 for (CompilationUnitElement compilationUnit in parts2) { |
3868 ((compilationUnit as CompilationUnitElementImpl)).enclosingElement = this; | 4169 ((compilationUnit as CompilationUnitElementImpl)).enclosingElement = this; |
3869 } | 4170 } |
3870 this._parts = parts2; | 4171 this._parts = parts2; |
3871 } | 4172 } |
3872 void visitChildren(ElementVisitor<Object> visitor) { | 4173 void visitChildren(ElementVisitor<Object> visitor) { |
3873 super.visitChildren(visitor); | 4174 super.visitChildren(visitor); |
3874 safelyVisitChild(_definingCompilationUnit, visitor); | 4175 safelyVisitChild(_definingCompilationUnit, visitor); |
3875 safelyVisitChildren(_exports, visitor); | 4176 safelyVisitChildren(_exports, visitor); |
3876 safelyVisitChildren(_imports, visitor); | 4177 safelyVisitChildren(_imports, visitor); |
3877 safelyVisitChildren(_parts, visitor); | 4178 safelyVisitChildren(_parts, visitor); |
3878 } | 4179 } |
3879 | 4180 |
3880 /** | 4181 /** |
3881 * Answer `true` if the receiver directly or indirectly imports the dart:html
libraries. | 4182 * Answer `true` if the receiver directly or indirectly imports the dart:html
libraries. |
| 4183 * |
3882 * @return `true` if the receiver directly or indirectly imports the dart:html
libraries | 4184 * @return `true` if the receiver directly or indirectly imports the dart:html
libraries |
3883 */ | 4185 */ |
3884 bool get isOrImportsBrowserLibrary { | 4186 bool get isOrImportsBrowserLibrary { |
3885 List<LibraryElement> visited = new List<LibraryElement>(); | 4187 List<LibraryElement> visited = new List<LibraryElement>(); |
3886 Source htmlLibSource = _context.sourceFactory.forUri(DartSdk.DART_HTML); | 4188 Source htmlLibSource = _context.sourceFactory.forUri(DartSdk.DART_HTML); |
3887 visited.add(this); | 4189 visited.add(this); |
3888 for (int index = 0; index < visited.length; index++) { | 4190 for (int index = 0; index < visited.length; index++) { |
3889 LibraryElement library = visited[index]; | 4191 LibraryElement library = visited[index]; |
3890 Source source = library.definingCompilationUnit.source; | 4192 Source source = library.definingCompilationUnit.source; |
3891 if (source == htmlLibSource) { | 4193 if (source == htmlLibSource) { |
3892 return true; | 4194 return true; |
3893 } | 4195 } |
3894 for (LibraryElement importedLibrary in library.importedLibraries) { | 4196 for (LibraryElement importedLibrary in library.importedLibraries) { |
3895 if (!visited.contains(importedLibrary)) { | 4197 if (!visited.contains(importedLibrary)) { |
3896 visited.add(importedLibrary); | 4198 visited.add(importedLibrary); |
3897 } | 4199 } |
3898 } | 4200 } |
3899 for (LibraryElement exportedLibrary in library.exportedLibraries) { | 4201 for (LibraryElement exportedLibrary in library.exportedLibraries) { |
3900 if (!visited.contains(exportedLibrary)) { | 4202 if (!visited.contains(exportedLibrary)) { |
3901 visited.add(exportedLibrary); | 4203 visited.add(exportedLibrary); |
3902 } | 4204 } |
3903 } | 4205 } |
3904 } | 4206 } |
3905 return false; | 4207 return false; |
3906 } | 4208 } |
3907 } | 4209 } |
3908 /** | 4210 /** |
3909 * Instances of the class `LocalVariableElementImpl` implement a `LocalVariableE
lement`. | 4211 * Instances of the class `LocalVariableElementImpl` implement a `LocalVariableE
lement`. |
| 4212 * |
3910 * @coverage dart.engine.element | 4213 * @coverage dart.engine.element |
3911 */ | 4214 */ |
3912 class LocalVariableElementImpl extends VariableElementImpl implements LocalVaria
bleElement { | 4215 class LocalVariableElementImpl extends VariableElementImpl implements LocalVaria
bleElement { |
3913 | 4216 |
3914 /** | 4217 /** |
3915 * The offset to the beginning of the visible range for this element. | 4218 * The offset to the beginning of the visible range for this element. |
3916 */ | 4219 */ |
3917 int _visibleRangeOffset = 0; | 4220 int _visibleRangeOffset = 0; |
3918 | 4221 |
3919 /** | 4222 /** |
3920 * The length of the visible range for this element, or `-1` if this element d
oes not have a | 4223 * The length of the visible range for this element, or `-1` if this element d
oes not have a |
3921 * visible range. | 4224 * visible range. |
3922 */ | 4225 */ |
3923 int _visibleRangeLength = -1; | 4226 int _visibleRangeLength = -1; |
3924 | 4227 |
3925 /** | 4228 /** |
3926 * An empty array of field elements. | 4229 * An empty array of field elements. |
3927 */ | 4230 */ |
3928 static List<LocalVariableElement> EMPTY_ARRAY = new List<LocalVariableElement>
(0); | 4231 static List<LocalVariableElement> EMPTY_ARRAY = new List<LocalVariableElement>
(0); |
3929 | 4232 |
3930 /** | 4233 /** |
3931 * Initialize a newly created local variable element to have the given name. | 4234 * Initialize a newly created local variable element to have the given name. |
| 4235 * |
3932 * @param name the name of this element | 4236 * @param name the name of this element |
3933 */ | 4237 */ |
3934 LocalVariableElementImpl(Identifier name) : super.con1(name) { | 4238 LocalVariableElementImpl(Identifier name) : super.con1(name) { |
3935 } | 4239 } |
3936 accept(ElementVisitor visitor) => visitor.visitLocalVariableElement(this); | 4240 accept(ElementVisitor visitor) => visitor.visitLocalVariableElement(this); |
3937 ElementKind get kind => ElementKind.LOCAL_VARIABLE; | 4241 ElementKind get kind => ElementKind.LOCAL_VARIABLE; |
3938 SourceRange get visibleRange { | 4242 SourceRange get visibleRange { |
3939 if (_visibleRangeLength < 0) { | 4243 if (_visibleRangeLength < 0) { |
3940 return null; | 4244 return null; |
3941 } | 4245 } |
3942 return new SourceRange(_visibleRangeOffset, _visibleRangeLength); | 4246 return new SourceRange(_visibleRangeOffset, _visibleRangeLength); |
3943 } | 4247 } |
3944 | 4248 |
3945 /** | 4249 /** |
3946 * Set the visible range for this element to the range starting at the given o
ffset with the given | 4250 * Set the visible range for this element to the range starting at the given o
ffset with the given |
3947 * length. | 4251 * length. |
| 4252 * |
3948 * @param offset the offset to the beginning of the visible range for this ele
ment | 4253 * @param offset the offset to the beginning of the visible range for this ele
ment |
3949 * @param length the length of the visible range for this element, or `-1` if
this element | 4254 * @param length the length of the visible range for this element, or `-1` if
this element |
3950 * does not have a visible range | 4255 * does not have a visible range |
3951 */ | 4256 */ |
3952 void setVisibleRange(int offset, int length) { | 4257 void setVisibleRange(int offset, int length) { |
3953 _visibleRangeOffset = offset; | 4258 _visibleRangeOffset = offset; |
3954 _visibleRangeLength = length; | 4259 _visibleRangeLength = length; |
3955 } | 4260 } |
3956 void appendTo(JavaStringBuilder builder) { | 4261 void appendTo(JavaStringBuilder builder) { |
3957 builder.append(type); | 4262 builder.append(type); |
3958 builder.append(" "); | 4263 builder.append(" "); |
3959 builder.append(displayName); | 4264 builder.append(displayName); |
3960 } | 4265 } |
3961 String get identifier => "${super.identifier}@${nameOffset}"; | 4266 String get identifier => "${super.identifier}@${nameOffset}"; |
3962 } | 4267 } |
3963 /** | 4268 /** |
3964 * Instances of the class `MethodElementImpl` implement a `MethodElement`. | 4269 * Instances of the class `MethodElementImpl` implement a `MethodElement`. |
| 4270 * |
3965 * @coverage dart.engine.element | 4271 * @coverage dart.engine.element |
3966 */ | 4272 */ |
3967 class MethodElementImpl extends ExecutableElementImpl implements MethodElement { | 4273 class MethodElementImpl extends ExecutableElementImpl implements MethodElement { |
3968 | 4274 |
3969 /** | 4275 /** |
3970 * An empty array of method elements. | 4276 * An empty array of method elements. |
3971 */ | 4277 */ |
3972 static List<MethodElement> EMPTY_ARRAY = new List<MethodElement>(0); | 4278 static List<MethodElement> EMPTY_ARRAY = new List<MethodElement>(0); |
3973 | 4279 |
3974 /** | 4280 /** |
3975 * Initialize a newly created method element to have the given name. | 4281 * Initialize a newly created method element to have the given name. |
| 4282 * |
3976 * @param name the name of this element | 4283 * @param name the name of this element |
3977 */ | 4284 */ |
3978 MethodElementImpl.con1(Identifier name) : super.con1(name) { | 4285 MethodElementImpl.con1(Identifier name) : super.con1(name) { |
3979 _jtd_constructor_218_impl(name); | 4286 _jtd_constructor_218_impl(name); |
3980 } | 4287 } |
3981 _jtd_constructor_218_impl(Identifier name) { | 4288 _jtd_constructor_218_impl(Identifier name) { |
3982 } | 4289 } |
3983 | 4290 |
3984 /** | 4291 /** |
3985 * Initialize a newly created method element to have the given name. | 4292 * Initialize a newly created method element to have the given name. |
| 4293 * |
3986 * @param name the name of this element | 4294 * @param name the name of this element |
3987 * @param nameOffset the offset of the name of this element in the file that c
ontains the | 4295 * @param nameOffset the offset of the name of this element in the file that c
ontains the |
3988 * declaration of this element | 4296 * declaration of this element |
3989 */ | 4297 */ |
3990 MethodElementImpl.con2(String name, int nameOffset) : super.con2(name, nameOff
set) { | 4298 MethodElementImpl.con2(String name, int nameOffset) : super.con2(name, nameOff
set) { |
3991 _jtd_constructor_219_impl(name, nameOffset); | 4299 _jtd_constructor_219_impl(name, nameOffset); |
3992 } | 4300 } |
3993 _jtd_constructor_219_impl(String name, int nameOffset) { | 4301 _jtd_constructor_219_impl(String name, int nameOffset) { |
3994 } | 4302 } |
3995 accept(ElementVisitor visitor) => visitor.visitMethodElement(this); | 4303 accept(ElementVisitor visitor) => visitor.visitMethodElement(this); |
3996 ClassElement get enclosingElement => super.enclosingElement as ClassElement; | 4304 ClassElement get enclosingElement => super.enclosingElement as ClassElement; |
3997 ElementKind get kind => ElementKind.METHOD; | 4305 ElementKind get kind => ElementKind.METHOD; |
3998 String get name { | 4306 String get name { |
(...skipping 11 matching lines...) Expand all Loading... |
4010 if (name.isEmpty) { | 4318 if (name.isEmpty) { |
4011 return false; | 4319 return false; |
4012 } | 4320 } |
4013 int first = name.codeUnitAt(0); | 4321 int first = name.codeUnitAt(0); |
4014 return !((0x61 <= first && first <= 0x7A) || (0x41 <= first && first <= 0x5A
) || first == 0x5F || first == 0x24); | 4322 return !((0x61 <= first && first <= 0x7A) || (0x41 <= first && first <= 0x5A
) || first == 0x5F || first == 0x24); |
4015 } | 4323 } |
4016 bool get isStatic => hasModifier(Modifier.STATIC); | 4324 bool get isStatic => hasModifier(Modifier.STATIC); |
4017 | 4325 |
4018 /** | 4326 /** |
4019 * Set whether this method is abstract to correspond to the given value. | 4327 * Set whether this method is abstract to correspond to the given value. |
| 4328 * |
4020 * @param isAbstract `true` if the method is abstract | 4329 * @param isAbstract `true` if the method is abstract |
4021 */ | 4330 */ |
4022 void set abstract(bool isAbstract) { | 4331 void set abstract(bool isAbstract) { |
4023 setModifier(Modifier.ABSTRACT, isAbstract); | 4332 setModifier(Modifier.ABSTRACT, isAbstract); |
4024 } | 4333 } |
4025 | 4334 |
4026 /** | 4335 /** |
4027 * Set whether this method is static to correspond to the given value. | 4336 * Set whether this method is static to correspond to the given value. |
| 4337 * |
4028 * @param isStatic `true` if the method is static | 4338 * @param isStatic `true` if the method is static |
4029 */ | 4339 */ |
4030 void set static(bool isStatic) { | 4340 void set static(bool isStatic) { |
4031 setModifier(Modifier.STATIC, isStatic); | 4341 setModifier(Modifier.STATIC, isStatic); |
4032 } | 4342 } |
4033 void appendTo(JavaStringBuilder builder) { | 4343 void appendTo(JavaStringBuilder builder) { |
4034 builder.append(enclosingElement.displayName); | 4344 builder.append(enclosingElement.displayName); |
4035 builder.append("."); | 4345 builder.append("."); |
4036 builder.append(displayName); | 4346 builder.append(displayName); |
4037 super.appendTo(builder); | 4347 super.appendTo(builder); |
4038 } | 4348 } |
4039 } | 4349 } |
4040 /** | 4350 /** |
4041 * The enumeration `Modifier` defines constants for all of the modifiers defined
by the Dart | 4351 * The enumeration `Modifier` defines constants for all of the modifiers defined
by the Dart |
4042 * language and for a few additional flags that are useful. | 4352 * language and for a few additional flags that are useful. |
| 4353 * |
4043 * @coverage dart.engine.element | 4354 * @coverage dart.engine.element |
4044 */ | 4355 */ |
4045 class Modifier implements Comparable<Modifier> { | 4356 class Modifier implements Comparable<Modifier> { |
4046 static final Modifier ABSTRACT = new Modifier('ABSTRACT', 0); | 4357 static final Modifier ABSTRACT = new Modifier('ABSTRACT', 0); |
4047 static final Modifier CONST = new Modifier('CONST', 1); | 4358 static final Modifier CONST = new Modifier('CONST', 1); |
4048 static final Modifier FACTORY = new Modifier('FACTORY', 2); | 4359 static final Modifier FACTORY = new Modifier('FACTORY', 2); |
4049 static final Modifier FINAL = new Modifier('FINAL', 3); | 4360 static final Modifier FINAL = new Modifier('FINAL', 3); |
4050 static final Modifier GETTER = new Modifier('GETTER', 4); | 4361 static final Modifier GETTER = new Modifier('GETTER', 4); |
4051 static final Modifier MIXIN = new Modifier('MIXIN', 5); | 4362 static final Modifier MIXIN = new Modifier('MIXIN', 5); |
4052 static final Modifier REFERENCES_SUPER = new Modifier('REFERENCES_SUPER', 6); | 4363 static final Modifier REFERENCES_SUPER = new Modifier('REFERENCES_SUPER', 6); |
(...skipping 10 matching lines...) Expand all Loading... |
4063 final int ordinal; | 4374 final int ordinal; |
4064 Modifier(this.name, this.ordinal) { | 4375 Modifier(this.name, this.ordinal) { |
4065 } | 4376 } |
4066 int compareTo(Modifier other) => ordinal - other.ordinal; | 4377 int compareTo(Modifier other) => ordinal - other.ordinal; |
4067 int get hashCode => ordinal; | 4378 int get hashCode => ordinal; |
4068 String toString() => name; | 4379 String toString() => name; |
4069 } | 4380 } |
4070 /** | 4381 /** |
4071 * Instances of the class `MultiplyDefinedElementImpl` represent a collection of
elements that | 4382 * Instances of the class `MultiplyDefinedElementImpl` represent a collection of
elements that |
4072 * have the same name within the same scope. | 4383 * have the same name within the same scope. |
| 4384 * |
4073 * @coverage dart.engine.element | 4385 * @coverage dart.engine.element |
4074 */ | 4386 */ |
4075 class MultiplyDefinedElementImpl implements MultiplyDefinedElement { | 4387 class MultiplyDefinedElementImpl implements MultiplyDefinedElement { |
4076 | 4388 |
4077 /** | 4389 /** |
4078 * The analysis context in which the multiply defined elements are defined. | 4390 * The analysis context in which the multiply defined elements are defined. |
4079 */ | 4391 */ |
4080 AnalysisContext _context; | 4392 AnalysisContext _context; |
4081 | 4393 |
4082 /** | 4394 /** |
4083 * The name of the conflicting elements. | 4395 * The name of the conflicting elements. |
4084 */ | 4396 */ |
4085 String _name; | 4397 String _name; |
4086 | 4398 |
4087 /** | 4399 /** |
4088 * A list containing all of the elements that conflict. | 4400 * A list containing all of the elements that conflict. |
4089 */ | 4401 */ |
4090 List<Element> _conflictingElements; | 4402 List<Element> _conflictingElements; |
4091 | 4403 |
4092 /** | 4404 /** |
4093 * Initialize a newly created element to represent a list of conflicting eleme
nts. | 4405 * Initialize a newly created element to represent a list of conflicting eleme
nts. |
| 4406 * |
4094 * @param context the analysis context in which the multiply defined elements
are defined | 4407 * @param context the analysis context in which the multiply defined elements
are defined |
4095 * @param firstElement the first element that conflicts | 4408 * @param firstElement the first element that conflicts |
4096 * @param secondElement the second element that conflicts | 4409 * @param secondElement the second element that conflicts |
4097 */ | 4410 */ |
4098 MultiplyDefinedElementImpl(AnalysisContext context, Element firstElement, Elem
ent secondElement) { | 4411 MultiplyDefinedElementImpl(AnalysisContext context, Element firstElement, Elem
ent secondElement) { |
4099 _name = firstElement.name; | 4412 _name = firstElement.name; |
4100 _conflictingElements = computeConflictingElements(firstElement, secondElemen
t); | 4413 _conflictingElements = computeConflictingElements(firstElement, secondElemen
t); |
4101 } | 4414 } |
4102 accept(ElementVisitor visitor) => visitor.visitMultiplyDefinedElement(this); | 4415 accept(ElementVisitor visitor) => visitor.visitMultiplyDefinedElement(this); |
4103 String computeDocumentationComment() => null; | 4416 String computeDocumentationComment() => null; |
(...skipping 30 matching lines...) Expand all Loading... |
4134 } | 4447 } |
4135 builder.append("]"); | 4448 builder.append("]"); |
4136 return builder.toString(); | 4449 return builder.toString(); |
4137 } | 4450 } |
4138 void visitChildren(ElementVisitor<Object> visitor) { | 4451 void visitChildren(ElementVisitor<Object> visitor) { |
4139 } | 4452 } |
4140 | 4453 |
4141 /** | 4454 /** |
4142 * Add the given element to the list of elements. If the element is a multiply
-defined element, | 4455 * Add the given element to the list of elements. If the element is a multiply
-defined element, |
4143 * add all of the conflicting elements that it represents. | 4456 * add all of the conflicting elements that it represents. |
| 4457 * |
4144 * @param elements the list to which the element(s) are to be added | 4458 * @param elements the list to which the element(s) are to be added |
4145 * @param element the element(s) to be added | 4459 * @param element the element(s) to be added |
4146 */ | 4460 */ |
4147 void add(List<Element> elements, Element element) { | 4461 void add(List<Element> elements, Element element) { |
4148 if (element is MultiplyDefinedElementImpl) { | 4462 if (element is MultiplyDefinedElementImpl) { |
4149 for (Element conflictingElement in ((element as MultiplyDefinedElementImpl
))._conflictingElements) { | 4463 for (Element conflictingElement in ((element as MultiplyDefinedElementImpl
))._conflictingElements) { |
4150 elements.add(conflictingElement); | 4464 elements.add(conflictingElement); |
4151 } | 4465 } |
4152 } else { | 4466 } else { |
4153 elements.add(element); | 4467 elements.add(element); |
4154 } | 4468 } |
4155 } | 4469 } |
4156 | 4470 |
4157 /** | 4471 /** |
4158 * Use the given elements to construct an array of conflicting elements. If ei
ther of the given | 4472 * Use the given elements to construct an array of conflicting elements. If ei
ther of the given |
4159 * elements are multiply-defined elements then the conflicting elements they r
epresent will be | 4473 * elements are multiply-defined elements then the conflicting elements they r
epresent will be |
4160 * included in the array. Otherwise, the element itself will be included. | 4474 * included in the array. Otherwise, the element itself will be included. |
| 4475 * |
4161 * @param firstElement the first element to be included | 4476 * @param firstElement the first element to be included |
4162 * @param secondElement the second element to be included | 4477 * @param secondElement the second element to be included |
4163 * @return an array containing all of the conflicting elements | 4478 * @return an array containing all of the conflicting elements |
4164 */ | 4479 */ |
4165 List<Element> computeConflictingElements(Element firstElement, Element secondE
lement) { | 4480 List<Element> computeConflictingElements(Element firstElement, Element secondE
lement) { |
4166 List<Element> elements = new List<Element>(); | 4481 List<Element> elements = new List<Element>(); |
4167 add(elements, firstElement); | 4482 add(elements, firstElement); |
4168 add(elements, secondElement); | 4483 add(elements, secondElement); |
4169 return new List.from(elements); | 4484 return new List.from(elements); |
4170 } | 4485 } |
4171 } | 4486 } |
4172 /** | 4487 /** |
4173 * Instances of the class `ParameterElementImpl` implement a `ParameterElement`. | 4488 * Instances of the class `ParameterElementImpl` implement a `ParameterElement`. |
| 4489 * |
4174 * @coverage dart.engine.element | 4490 * @coverage dart.engine.element |
4175 */ | 4491 */ |
4176 class ParameterElementImpl extends VariableElementImpl implements ParameterEleme
nt { | 4492 class ParameterElementImpl extends VariableElementImpl implements ParameterEleme
nt { |
4177 | 4493 |
4178 /** | 4494 /** |
4179 * An array containing all of the parameters defined by this parameter element
. There will only be | 4495 * An array containing all of the parameters defined by this parameter element
. There will only be |
4180 * parameters if this parameter is a function typed parameter. | 4496 * parameters if this parameter is a function typed parameter. |
4181 */ | 4497 */ |
4182 List<ParameterElement> _parameters = ParameterElementImpl.EMPTY_ARRAY; | 4498 List<ParameterElement> _parameters = ParameterElementImpl.EMPTY_ARRAY; |
4183 | 4499 |
(...skipping 24 matching lines...) Expand all Loading... |
4208 */ | 4524 */ |
4209 int _visibleRangeLength = -1; | 4525 int _visibleRangeLength = -1; |
4210 | 4526 |
4211 /** | 4527 /** |
4212 * An empty array of field elements. | 4528 * An empty array of field elements. |
4213 */ | 4529 */ |
4214 static List<ParameterElement> EMPTY_ARRAY = new List<ParameterElement>(0); | 4530 static List<ParameterElement> EMPTY_ARRAY = new List<ParameterElement>(0); |
4215 | 4531 |
4216 /** | 4532 /** |
4217 * Initialize a newly created parameter element to have the given name. | 4533 * Initialize a newly created parameter element to have the given name. |
| 4534 * |
4218 * @param name the name of this element | 4535 * @param name the name of this element |
4219 */ | 4536 */ |
4220 ParameterElementImpl(Identifier name) : super.con1(name) { | 4537 ParameterElementImpl(Identifier name) : super.con1(name) { |
4221 } | 4538 } |
4222 accept(ElementVisitor visitor) => visitor.visitParameterElement(this); | 4539 accept(ElementVisitor visitor) => visitor.visitParameterElement(this); |
4223 SourceRange get defaultValueRange { | 4540 SourceRange get defaultValueRange { |
4224 if (_defaultValueRangeLength < 0) { | 4541 if (_defaultValueRangeLength < 0) { |
4225 return null; | 4542 return null; |
4226 } | 4543 } |
4227 return new SourceRange(_defaultValueRangeOffset, _defaultValueRangeLength); | 4544 return new SourceRange(_defaultValueRangeOffset, _defaultValueRangeLength); |
4228 } | 4545 } |
4229 ElementKind get kind => ElementKind.PARAMETER; | 4546 ElementKind get kind => ElementKind.PARAMETER; |
4230 ParameterKind get parameterKind => _parameterKind; | 4547 ParameterKind get parameterKind => _parameterKind; |
4231 List<ParameterElement> get parameters => _parameters; | 4548 List<ParameterElement> get parameters => _parameters; |
4232 SourceRange get visibleRange { | 4549 SourceRange get visibleRange { |
4233 if (_visibleRangeLength < 0) { | 4550 if (_visibleRangeLength < 0) { |
4234 return null; | 4551 return null; |
4235 } | 4552 } |
4236 return new SourceRange(_visibleRangeOffset, _visibleRangeLength); | 4553 return new SourceRange(_visibleRangeOffset, _visibleRangeLength); |
4237 } | 4554 } |
4238 bool get isInitializingFormal => false; | 4555 bool get isInitializingFormal => false; |
4239 | 4556 |
4240 /** | 4557 /** |
4241 * Set the range of the default value for this parameter to the range starting
at the given offset | 4558 * Set the range of the default value for this parameter to the range starting
at the given offset |
4242 * with the given length. | 4559 * with the given length. |
| 4560 * |
4243 * @param offset the offset to the beginning of the default value range for th
is element | 4561 * @param offset the offset to the beginning of the default value range for th
is element |
4244 * @param length the length of the default value range for this element, or `-
1` if this | 4562 * @param length the length of the default value range for this element, or `-
1` if this |
4245 * element does not have a default value | 4563 * element does not have a default value |
4246 */ | 4564 */ |
4247 void setDefaultValueRange(int offset, int length) { | 4565 void setDefaultValueRange(int offset, int length) { |
4248 _defaultValueRangeOffset = offset; | 4566 _defaultValueRangeOffset = offset; |
4249 _defaultValueRangeLength = length; | 4567 _defaultValueRangeLength = length; |
4250 } | 4568 } |
4251 | 4569 |
4252 /** | 4570 /** |
4253 * Set the kind of this parameter to the given kind. | 4571 * Set the kind of this parameter to the given kind. |
| 4572 * |
4254 * @param parameterKind the new kind of this parameter | 4573 * @param parameterKind the new kind of this parameter |
4255 */ | 4574 */ |
4256 void set parameterKind(ParameterKind parameterKind2) { | 4575 void set parameterKind(ParameterKind parameterKind2) { |
4257 this._parameterKind = parameterKind2; | 4576 this._parameterKind = parameterKind2; |
4258 } | 4577 } |
4259 | 4578 |
4260 /** | 4579 /** |
4261 * Set the parameters defined by this executable element to the given paramete
rs. | 4580 * Set the parameters defined by this executable element to the given paramete
rs. |
| 4581 * |
4262 * @param parameters the parameters defined by this executable element | 4582 * @param parameters the parameters defined by this executable element |
4263 */ | 4583 */ |
4264 void set parameters(List<ParameterElement> parameters2) { | 4584 void set parameters(List<ParameterElement> parameters2) { |
4265 for (ParameterElement parameter in parameters2) { | 4585 for (ParameterElement parameter in parameters2) { |
4266 ((parameter as ParameterElementImpl)).enclosingElement = this; | 4586 ((parameter as ParameterElementImpl)).enclosingElement = this; |
4267 } | 4587 } |
4268 this._parameters = parameters2; | 4588 this._parameters = parameters2; |
4269 } | 4589 } |
4270 | 4590 |
4271 /** | 4591 /** |
4272 * Set the visible range for this element to the range starting at the given o
ffset with the given | 4592 * Set the visible range for this element to the range starting at the given o
ffset with the given |
4273 * length. | 4593 * length. |
| 4594 * |
4274 * @param offset the offset to the beginning of the visible range for this ele
ment | 4595 * @param offset the offset to the beginning of the visible range for this ele
ment |
4275 * @param length the length of the visible range for this element, or `-1` if
this element | 4596 * @param length the length of the visible range for this element, or `-1` if
this element |
4276 * does not have a visible range | 4597 * does not have a visible range |
4277 */ | 4598 */ |
4278 void setVisibleRange(int offset, int length) { | 4599 void setVisibleRange(int offset, int length) { |
4279 _visibleRangeOffset = offset; | 4600 _visibleRangeOffset = offset; |
4280 _visibleRangeLength = length; | 4601 _visibleRangeLength = length; |
4281 } | 4602 } |
4282 void visitChildren(ElementVisitor<Object> visitor) { | 4603 void visitChildren(ElementVisitor<Object> visitor) { |
4283 super.visitChildren(visitor); | 4604 super.visitChildren(visitor); |
4284 safelyVisitChildren(_parameters, visitor); | 4605 safelyVisitChildren(_parameters, visitor); |
4285 } | 4606 } |
4286 void appendTo(JavaStringBuilder builder) { | 4607 void appendTo(JavaStringBuilder builder) { |
(...skipping 11 matching lines...) Expand all Loading... |
4298 } | 4619 } |
4299 builder.append(left); | 4620 builder.append(left); |
4300 builder.append(type); | 4621 builder.append(type); |
4301 builder.append(" "); | 4622 builder.append(" "); |
4302 builder.append(displayName); | 4623 builder.append(displayName); |
4303 builder.append(right); | 4624 builder.append(right); |
4304 } | 4625 } |
4305 } | 4626 } |
4306 /** | 4627 /** |
4307 * Instances of the class `PrefixElementImpl` implement a `PrefixElement`. | 4628 * Instances of the class `PrefixElementImpl` implement a `PrefixElement`. |
| 4629 * |
4308 * @coverage dart.engine.element | 4630 * @coverage dart.engine.element |
4309 */ | 4631 */ |
4310 class PrefixElementImpl extends ElementImpl implements PrefixElement { | 4632 class PrefixElementImpl extends ElementImpl implements PrefixElement { |
4311 | 4633 |
4312 /** | 4634 /** |
4313 * An array containing all of the libraries that are imported using this prefi
x. | 4635 * An array containing all of the libraries that are imported using this prefi
x. |
4314 */ | 4636 */ |
4315 List<LibraryElement> _importedLibraries = LibraryElementImpl.EMPTY_ARRAY; | 4637 List<LibraryElement> _importedLibraries = LibraryElementImpl.EMPTY_ARRAY; |
4316 | 4638 |
4317 /** | 4639 /** |
4318 * An empty array of prefix elements. | 4640 * An empty array of prefix elements. |
4319 */ | 4641 */ |
4320 static List<PrefixElement> EMPTY_ARRAY = new List<PrefixElement>(0); | 4642 static List<PrefixElement> EMPTY_ARRAY = new List<PrefixElement>(0); |
4321 | 4643 |
4322 /** | 4644 /** |
4323 * Initialize a newly created prefix element to have the given name. | 4645 * Initialize a newly created prefix element to have the given name. |
| 4646 * |
4324 * @param name the name of this element | 4647 * @param name the name of this element |
4325 */ | 4648 */ |
4326 PrefixElementImpl(Identifier name) : super.con1(name) { | 4649 PrefixElementImpl(Identifier name) : super.con1(name) { |
4327 } | 4650 } |
4328 accept(ElementVisitor visitor) => visitor.visitPrefixElement(this); | 4651 accept(ElementVisitor visitor) => visitor.visitPrefixElement(this); |
4329 LibraryElement get enclosingElement => super.enclosingElement as LibraryElemen
t; | 4652 LibraryElement get enclosingElement => super.enclosingElement as LibraryElemen
t; |
4330 List<LibraryElement> get importedLibraries => _importedLibraries; | 4653 List<LibraryElement> get importedLibraries => _importedLibraries; |
4331 ElementKind get kind => ElementKind.PREFIX; | 4654 ElementKind get kind => ElementKind.PREFIX; |
4332 | 4655 |
4333 /** | 4656 /** |
4334 * Set the libraries that are imported using this prefix to the given librarie
s. | 4657 * Set the libraries that are imported using this prefix to the given librarie
s. |
| 4658 * |
4335 * @param importedLibraries the libraries that are imported using this prefix | 4659 * @param importedLibraries the libraries that are imported using this prefix |
4336 */ | 4660 */ |
4337 void set importedLibraries(List<LibraryElement> importedLibraries2) { | 4661 void set importedLibraries(List<LibraryElement> importedLibraries2) { |
4338 for (LibraryElement library in importedLibraries2) { | 4662 for (LibraryElement library in importedLibraries2) { |
4339 ((library as LibraryElementImpl)).enclosingElement = this; | 4663 ((library as LibraryElementImpl)).enclosingElement = this; |
4340 } | 4664 } |
4341 this._importedLibraries = importedLibraries2; | 4665 this._importedLibraries = importedLibraries2; |
4342 } | 4666 } |
4343 void appendTo(JavaStringBuilder builder) { | 4667 void appendTo(JavaStringBuilder builder) { |
4344 builder.append("as "); | 4668 builder.append("as "); |
4345 super.appendTo(builder); | 4669 super.appendTo(builder); |
4346 } | 4670 } |
4347 } | 4671 } |
4348 /** | 4672 /** |
4349 * Instances of the class `PropertyAccessorElementImpl` implement a`PropertyAcce
ssorElement`. | 4673 * Instances of the class `PropertyAccessorElementImpl` implement a |
| 4674 * `PropertyAccessorElement`. |
| 4675 * |
4350 * @coverage dart.engine.element | 4676 * @coverage dart.engine.element |
4351 */ | 4677 */ |
4352 class PropertyAccessorElementImpl extends ExecutableElementImpl implements Prope
rtyAccessorElement { | 4678 class PropertyAccessorElementImpl extends ExecutableElementImpl implements Prope
rtyAccessorElement { |
4353 | 4679 |
4354 /** | 4680 /** |
4355 * The variable associated with this accessor. | 4681 * The variable associated with this accessor. |
4356 */ | 4682 */ |
4357 PropertyInducingElement _variable; | 4683 PropertyInducingElement _variable; |
4358 | 4684 |
4359 /** | 4685 /** |
4360 * An empty array of property accessor elements. | 4686 * An empty array of property accessor elements. |
4361 */ | 4687 */ |
4362 static List<PropertyAccessorElement> EMPTY_ARRAY = new List<PropertyAccessorEl
ement>(0); | 4688 static List<PropertyAccessorElement> EMPTY_ARRAY = new List<PropertyAccessorEl
ement>(0); |
4363 | 4689 |
4364 /** | 4690 /** |
4365 * Initialize a newly created property accessor element to have the given name
. | 4691 * Initialize a newly created property accessor element to have the given name
. |
| 4692 * |
4366 * @param name the name of this element | 4693 * @param name the name of this element |
4367 */ | 4694 */ |
4368 PropertyAccessorElementImpl.con1(Identifier name) : super.con1(name) { | 4695 PropertyAccessorElementImpl.con1(Identifier name) : super.con1(name) { |
4369 _jtd_constructor_224_impl(name); | 4696 _jtd_constructor_224_impl(name); |
4370 } | 4697 } |
4371 _jtd_constructor_224_impl(Identifier name) { | 4698 _jtd_constructor_224_impl(Identifier name) { |
4372 } | 4699 } |
4373 | 4700 |
4374 /** | 4701 /** |
4375 * Initialize a newly created synthetic property accessor element to be associ
ated with the given | 4702 * Initialize a newly created synthetic property accessor element to be associ
ated with the given |
4376 * variable. | 4703 * variable. |
| 4704 * |
4377 * @param variable the variable with which this access is associated | 4705 * @param variable the variable with which this access is associated |
4378 */ | 4706 */ |
4379 PropertyAccessorElementImpl.con2(PropertyInducingElementImpl variable2) : supe
r.con2(variable2.name, variable2.nameOffset) { | 4707 PropertyAccessorElementImpl.con2(PropertyInducingElementImpl variable2) : supe
r.con2(variable2.name, variable2.nameOffset) { |
4380 _jtd_constructor_225_impl(variable2); | 4708 _jtd_constructor_225_impl(variable2); |
4381 } | 4709 } |
4382 _jtd_constructor_225_impl(PropertyInducingElementImpl variable2) { | 4710 _jtd_constructor_225_impl(PropertyInducingElementImpl variable2) { |
4383 this._variable = variable2; | 4711 this._variable = variable2; |
4384 synthetic = true; | 4712 synthetic = true; |
4385 } | 4713 } |
4386 accept(ElementVisitor visitor) => visitor.visitPropertyAccessorElement(this); | 4714 accept(ElementVisitor visitor) => visitor.visitPropertyAccessorElement(this); |
(...skipping 23 matching lines...) Expand all Loading... |
4410 return super.name; | 4738 return super.name; |
4411 } | 4739 } |
4412 PropertyInducingElement get variable => _variable; | 4740 PropertyInducingElement get variable => _variable; |
4413 bool get isAbstract => hasModifier(Modifier.ABSTRACT); | 4741 bool get isAbstract => hasModifier(Modifier.ABSTRACT); |
4414 bool get isGetter => hasModifier(Modifier.GETTER); | 4742 bool get isGetter => hasModifier(Modifier.GETTER); |
4415 bool get isSetter => hasModifier(Modifier.SETTER); | 4743 bool get isSetter => hasModifier(Modifier.SETTER); |
4416 bool get isStatic => hasModifier(Modifier.STATIC); | 4744 bool get isStatic => hasModifier(Modifier.STATIC); |
4417 | 4745 |
4418 /** | 4746 /** |
4419 * Set whether this accessor is abstract to correspond to the given value. | 4747 * Set whether this accessor is abstract to correspond to the given value. |
| 4748 * |
4420 * @param isAbstract `true` if the accessor is abstract | 4749 * @param isAbstract `true` if the accessor is abstract |
4421 */ | 4750 */ |
4422 void set abstract(bool isAbstract) { | 4751 void set abstract(bool isAbstract) { |
4423 setModifier(Modifier.ABSTRACT, isAbstract); | 4752 setModifier(Modifier.ABSTRACT, isAbstract); |
4424 } | 4753 } |
4425 | 4754 |
4426 /** | 4755 /** |
4427 * Set whether this accessor is a getter to correspond to the given value. | 4756 * Set whether this accessor is a getter to correspond to the given value. |
| 4757 * |
4428 * @param isGetter `true` if the accessor is a getter | 4758 * @param isGetter `true` if the accessor is a getter |
4429 */ | 4759 */ |
4430 void set getter(bool isGetter) { | 4760 void set getter(bool isGetter) { |
4431 setModifier(Modifier.GETTER, isGetter); | 4761 setModifier(Modifier.GETTER, isGetter); |
4432 } | 4762 } |
4433 | 4763 |
4434 /** | 4764 /** |
4435 * Set whether this accessor is a setter to correspond to the given value. | 4765 * Set whether this accessor is a setter to correspond to the given value. |
| 4766 * |
4436 * @param isSetter `true` if the accessor is a setter | 4767 * @param isSetter `true` if the accessor is a setter |
4437 */ | 4768 */ |
4438 void set setter(bool isSetter) { | 4769 void set setter(bool isSetter) { |
4439 setModifier(Modifier.SETTER, isSetter); | 4770 setModifier(Modifier.SETTER, isSetter); |
4440 } | 4771 } |
4441 | 4772 |
4442 /** | 4773 /** |
4443 * Set whether this accessor is static to correspond to the given value. | 4774 * Set whether this accessor is static to correspond to the given value. |
| 4775 * |
4444 * @param isStatic `true` if the accessor is static | 4776 * @param isStatic `true` if the accessor is static |
4445 */ | 4777 */ |
4446 void set static(bool isStatic) { | 4778 void set static(bool isStatic) { |
4447 setModifier(Modifier.STATIC, isStatic); | 4779 setModifier(Modifier.STATIC, isStatic); |
4448 } | 4780 } |
4449 | 4781 |
4450 /** | 4782 /** |
4451 * Set the variable associated with this accessor to the given variable. | 4783 * Set the variable associated with this accessor to the given variable. |
| 4784 * |
4452 * @param variable the variable associated with this accessor | 4785 * @param variable the variable associated with this accessor |
4453 */ | 4786 */ |
4454 void set variable(PropertyInducingElement variable2) { | 4787 void set variable(PropertyInducingElement variable2) { |
4455 this._variable = variable2; | 4788 this._variable = variable2; |
4456 } | 4789 } |
4457 void appendTo(JavaStringBuilder builder) { | 4790 void appendTo(JavaStringBuilder builder) { |
4458 builder.append(isGetter ? "get " : "set "); | 4791 builder.append(isGetter ? "get " : "set "); |
4459 builder.append(variable.displayName); | 4792 builder.append(variable.displayName); |
4460 super.appendTo(builder); | 4793 super.appendTo(builder); |
4461 } | 4794 } |
4462 } | 4795 } |
4463 /** | 4796 /** |
4464 * Instances of the class `PropertyInducingElementImpl` implement a`PropertyIndu
cingElement`. | 4797 * Instances of the class `PropertyInducingElementImpl` implement a |
| 4798 * `PropertyInducingElement`. |
| 4799 * |
4465 * @coverage dart.engine.element | 4800 * @coverage dart.engine.element |
4466 */ | 4801 */ |
4467 abstract class PropertyInducingElementImpl extends VariableElementImpl implement
s PropertyInducingElement { | 4802 abstract class PropertyInducingElementImpl extends VariableElementImpl implement
s PropertyInducingElement { |
4468 | 4803 |
4469 /** | 4804 /** |
4470 * The getter associated with this element. | 4805 * The getter associated with this element. |
4471 */ | 4806 */ |
4472 PropertyAccessorElement _getter; | 4807 PropertyAccessorElement _getter; |
4473 | 4808 |
4474 /** | 4809 /** |
4475 * The setter associated with this element, or `null` if the element is effect
ively`final` and therefore does not have a setter associated with it. | 4810 * The setter associated with this element, or `null` if the element is effect
ively |
| 4811 * `final` and therefore does not have a setter associated with it. |
4476 */ | 4812 */ |
4477 PropertyAccessorElement _setter; | 4813 PropertyAccessorElement _setter; |
4478 | 4814 |
4479 /** | 4815 /** |
4480 * An empty array of elements. | 4816 * An empty array of elements. |
4481 */ | 4817 */ |
4482 static List<PropertyInducingElement> EMPTY_ARRAY = new List<PropertyInducingEl
ement>(0); | 4818 static List<PropertyInducingElement> EMPTY_ARRAY = new List<PropertyInducingEl
ement>(0); |
4483 | 4819 |
4484 /** | 4820 /** |
4485 * Initialize a newly created element to have the given name. | 4821 * Initialize a newly created element to have the given name. |
| 4822 * |
4486 * @param name the name of this element | 4823 * @param name the name of this element |
4487 */ | 4824 */ |
4488 PropertyInducingElementImpl.con1(Identifier name) : super.con1(name) { | 4825 PropertyInducingElementImpl.con1(Identifier name) : super.con1(name) { |
4489 _jtd_constructor_226_impl(name); | 4826 _jtd_constructor_226_impl(name); |
4490 } | 4827 } |
4491 _jtd_constructor_226_impl(Identifier name) { | 4828 _jtd_constructor_226_impl(Identifier name) { |
4492 } | 4829 } |
4493 | 4830 |
4494 /** | 4831 /** |
4495 * Initialize a newly created synthetic element to have the given name. | 4832 * Initialize a newly created synthetic element to have the given name. |
| 4833 * |
4496 * @param name the name of this element | 4834 * @param name the name of this element |
4497 */ | 4835 */ |
4498 PropertyInducingElementImpl.con2(String name) : super.con2(name, -1) { | 4836 PropertyInducingElementImpl.con2(String name) : super.con2(name, -1) { |
4499 _jtd_constructor_227_impl(name); | 4837 _jtd_constructor_227_impl(name); |
4500 } | 4838 } |
4501 _jtd_constructor_227_impl(String name) { | 4839 _jtd_constructor_227_impl(String name) { |
4502 synthetic = true; | 4840 synthetic = true; |
4503 } | 4841 } |
4504 PropertyAccessorElement get getter => _getter; | 4842 PropertyAccessorElement get getter => _getter; |
4505 PropertyAccessorElement get setter => _setter; | 4843 PropertyAccessorElement get setter => _setter; |
4506 | 4844 |
4507 /** | 4845 /** |
4508 * Set the getter associated with this element to the given accessor. | 4846 * Set the getter associated with this element to the given accessor. |
| 4847 * |
4509 * @param getter the getter associated with this element | 4848 * @param getter the getter associated with this element |
4510 */ | 4849 */ |
4511 void set getter(PropertyAccessorElement getter2) { | 4850 void set getter(PropertyAccessorElement getter2) { |
4512 this._getter = getter2; | 4851 this._getter = getter2; |
4513 } | 4852 } |
4514 | 4853 |
4515 /** | 4854 /** |
4516 * Set the setter associated with this element to the given accessor. | 4855 * Set the setter associated with this element to the given accessor. |
| 4856 * |
4517 * @param setter the setter associated with this element | 4857 * @param setter the setter associated with this element |
4518 */ | 4858 */ |
4519 void set setter(PropertyAccessorElement setter2) { | 4859 void set setter(PropertyAccessorElement setter2) { |
4520 this._setter = setter2; | 4860 this._setter = setter2; |
4521 } | 4861 } |
4522 } | 4862 } |
4523 /** | 4863 /** |
4524 * Instances of the class `ShowElementCombinatorImpl` implement a[ShowElementCom
binator]. | 4864 * Instances of the class `ShowElementCombinatorImpl` implement a |
| 4865 * [ShowElementCombinator]. |
| 4866 * |
4525 * @coverage dart.engine.element | 4867 * @coverage dart.engine.element |
4526 */ | 4868 */ |
4527 class ShowElementCombinatorImpl implements ShowElementCombinator { | 4869 class ShowElementCombinatorImpl implements ShowElementCombinator { |
4528 | 4870 |
4529 /** | 4871 /** |
4530 * The names that are to be made visible in the importing library if they are
defined in the | 4872 * The names that are to be made visible in the importing library if they are
defined in the |
4531 * imported library. | 4873 * imported library. |
4532 */ | 4874 */ |
4533 List<String> _shownNames = StringUtilities.EMPTY_ARRAY; | 4875 List<String> _shownNames = StringUtilities.EMPTY_ARRAY; |
4534 List<String> get shownNames => _shownNames; | 4876 List<String> get shownNames => _shownNames; |
4535 | 4877 |
4536 /** | 4878 /** |
4537 * Set the names that are to be made visible in the importing library if they
are defined in the | 4879 * Set the names that are to be made visible in the importing library if they
are defined in the |
4538 * imported library to the given names. | 4880 * imported library to the given names. |
| 4881 * |
4539 * @param shownNames the names that are to be made visible in the importing li
brary | 4882 * @param shownNames the names that are to be made visible in the importing li
brary |
4540 */ | 4883 */ |
4541 void set shownNames(List<String> shownNames2) { | 4884 void set shownNames(List<String> shownNames2) { |
4542 this._shownNames = shownNames2; | 4885 this._shownNames = shownNames2; |
4543 } | 4886 } |
4544 String toString() { | 4887 String toString() { |
4545 JavaStringBuilder builder = new JavaStringBuilder(); | 4888 JavaStringBuilder builder = new JavaStringBuilder(); |
4546 builder.append("show "); | 4889 builder.append("show "); |
4547 int count = _shownNames.length; | 4890 int count = _shownNames.length; |
4548 for (int i = 0; i < count; i++) { | 4891 for (int i = 0; i < count; i++) { |
4549 if (i > 0) { | 4892 if (i > 0) { |
4550 builder.append(", "); | 4893 builder.append(", "); |
4551 } | 4894 } |
4552 builder.append(_shownNames[i]); | 4895 builder.append(_shownNames[i]); |
4553 } | 4896 } |
4554 return builder.toString(); | 4897 return builder.toString(); |
4555 } | 4898 } |
4556 } | 4899 } |
4557 /** | 4900 /** |
4558 * Instances of the class `TopLevelVariableElementImpl` implement a`TopLevelVari
ableElement`. | 4901 * Instances of the class `TopLevelVariableElementImpl` implement a |
| 4902 * `TopLevelVariableElement`. |
| 4903 * |
4559 * @coverage dart.engine.element | 4904 * @coverage dart.engine.element |
4560 */ | 4905 */ |
4561 class TopLevelVariableElementImpl extends PropertyInducingElementImpl implements
TopLevelVariableElement { | 4906 class TopLevelVariableElementImpl extends PropertyInducingElementImpl implements
TopLevelVariableElement { |
4562 | 4907 |
4563 /** | 4908 /** |
4564 * An empty array of top-level variable elements. | 4909 * An empty array of top-level variable elements. |
4565 */ | 4910 */ |
4566 static List<TopLevelVariableElement> EMPTY_ARRAY = new List<TopLevelVariableEl
ement>(0); | 4911 static List<TopLevelVariableElement> EMPTY_ARRAY = new List<TopLevelVariableEl
ement>(0); |
4567 | 4912 |
4568 /** | 4913 /** |
4569 * Initialize a newly created top-level variable element to have the given nam
e. | 4914 * Initialize a newly created top-level variable element to have the given nam
e. |
| 4915 * |
4570 * @param name the name of this element | 4916 * @param name the name of this element |
4571 */ | 4917 */ |
4572 TopLevelVariableElementImpl.con1(Identifier name) : super.con1(name) { | 4918 TopLevelVariableElementImpl.con1(Identifier name) : super.con1(name) { |
4573 _jtd_constructor_229_impl(name); | 4919 _jtd_constructor_229_impl(name); |
4574 } | 4920 } |
4575 _jtd_constructor_229_impl(Identifier name) { | 4921 _jtd_constructor_229_impl(Identifier name) { |
4576 } | 4922 } |
4577 | 4923 |
4578 /** | 4924 /** |
4579 * Initialize a newly created synthetic top-level variable element to have the
given name. | 4925 * Initialize a newly created synthetic top-level variable element to have the
given name. |
| 4926 * |
4580 * @param name the name of this element | 4927 * @param name the name of this element |
4581 */ | 4928 */ |
4582 TopLevelVariableElementImpl.con2(String name) : super.con2(name) { | 4929 TopLevelVariableElementImpl.con2(String name) : super.con2(name) { |
4583 _jtd_constructor_230_impl(name); | 4930 _jtd_constructor_230_impl(name); |
4584 } | 4931 } |
4585 _jtd_constructor_230_impl(String name) { | 4932 _jtd_constructor_230_impl(String name) { |
4586 } | 4933 } |
4587 accept(ElementVisitor visitor) => visitor.visitTopLevelVariableElement(this); | 4934 accept(ElementVisitor visitor) => visitor.visitTopLevelVariableElement(this); |
4588 ElementKind get kind => ElementKind.TOP_LEVEL_VARIABLE; | 4935 ElementKind get kind => ElementKind.TOP_LEVEL_VARIABLE; |
4589 bool get isStatic => true; | 4936 bool get isStatic => true; |
4590 } | 4937 } |
4591 /** | 4938 /** |
4592 * Instances of the class `TypeVariableElementImpl` implement a `TypeVariableEle
ment`. | 4939 * Instances of the class `TypeVariableElementImpl` implement a `TypeVariableEle
ment`. |
| 4940 * |
4593 * @coverage dart.engine.element | 4941 * @coverage dart.engine.element |
4594 */ | 4942 */ |
4595 class TypeVariableElementImpl extends ElementImpl implements TypeVariableElement
{ | 4943 class TypeVariableElementImpl extends ElementImpl implements TypeVariableElement
{ |
4596 | 4944 |
4597 /** | 4945 /** |
4598 * The type defined by this type variable. | 4946 * The type defined by this type variable. |
4599 */ | 4947 */ |
4600 TypeVariableType _type; | 4948 TypeVariableType _type; |
4601 | 4949 |
4602 /** | 4950 /** |
4603 * The type representing the bound associated with this variable, or `null` if
this variable | 4951 * The type representing the bound associated with this variable, or `null` if
this variable |
4604 * does not have an explicit bound. | 4952 * does not have an explicit bound. |
4605 */ | 4953 */ |
4606 Type2 _bound; | 4954 Type2 _bound; |
4607 | 4955 |
4608 /** | 4956 /** |
4609 * An empty array of type variable elements. | 4957 * An empty array of type variable elements. |
4610 */ | 4958 */ |
4611 static List<TypeVariableElement> EMPTY_ARRAY = new List<TypeVariableElement>(0
); | 4959 static List<TypeVariableElement> EMPTY_ARRAY = new List<TypeVariableElement>(0
); |
4612 | 4960 |
4613 /** | 4961 /** |
4614 * Initialize a newly created type variable element to have the given name. | 4962 * Initialize a newly created type variable element to have the given name. |
| 4963 * |
4615 * @param name the name of this element | 4964 * @param name the name of this element |
4616 */ | 4965 */ |
4617 TypeVariableElementImpl(Identifier name) : super.con1(name) { | 4966 TypeVariableElementImpl(Identifier name) : super.con1(name) { |
4618 } | 4967 } |
4619 accept(ElementVisitor visitor) => visitor.visitTypeVariableElement(this); | 4968 accept(ElementVisitor visitor) => visitor.visitTypeVariableElement(this); |
4620 Type2 get bound => _bound; | 4969 Type2 get bound => _bound; |
4621 ElementKind get kind => ElementKind.TYPE_VARIABLE; | 4970 ElementKind get kind => ElementKind.TYPE_VARIABLE; |
4622 TypeVariableType get type => _type; | 4971 TypeVariableType get type => _type; |
4623 | 4972 |
4624 /** | 4973 /** |
4625 * Set the type representing the bound associated with this variable to the gi
ven type. | 4974 * Set the type representing the bound associated with this variable to the gi
ven type. |
| 4975 * |
4626 * @param bound the type representing the bound associated with this variable | 4976 * @param bound the type representing the bound associated with this variable |
4627 */ | 4977 */ |
4628 void set bound(Type2 bound2) { | 4978 void set bound(Type2 bound2) { |
4629 this._bound = bound2; | 4979 this._bound = bound2; |
4630 } | 4980 } |
4631 | 4981 |
4632 /** | 4982 /** |
4633 * Set the type defined by this type variable to the given type | 4983 * Set the type defined by this type variable to the given type |
| 4984 * |
4634 * @param type the type defined by this type variable | 4985 * @param type the type defined by this type variable |
4635 */ | 4986 */ |
4636 void set type(TypeVariableType type2) { | 4987 void set type(TypeVariableType type2) { |
4637 this._type = type2; | 4988 this._type = type2; |
4638 } | 4989 } |
4639 void appendTo(JavaStringBuilder builder) { | 4990 void appendTo(JavaStringBuilder builder) { |
4640 builder.append(displayName); | 4991 builder.append(displayName); |
4641 if (_bound != null) { | 4992 if (_bound != null) { |
4642 builder.append(" extends "); | 4993 builder.append(" extends "); |
4643 builder.append(_bound); | 4994 builder.append(_bound); |
4644 } | 4995 } |
4645 } | 4996 } |
4646 } | 4997 } |
4647 /** | 4998 /** |
4648 * Instances of the class `VariableElementImpl` implement a `VariableElement`. | 4999 * Instances of the class `VariableElementImpl` implement a `VariableElement`. |
| 5000 * |
4649 * @coverage dart.engine.element | 5001 * @coverage dart.engine.element |
4650 */ | 5002 */ |
4651 abstract class VariableElementImpl extends ElementImpl implements VariableElemen
t { | 5003 abstract class VariableElementImpl extends ElementImpl implements VariableElemen
t { |
4652 | 5004 |
4653 /** | 5005 /** |
4654 * The declared type of this variable. | 5006 * The declared type of this variable. |
4655 */ | 5007 */ |
4656 Type2 _type; | 5008 Type2 _type; |
4657 | 5009 |
4658 /** | 5010 /** |
4659 * A synthetic function representing this variable's initializer, or `null` if
this variable | 5011 * A synthetic function representing this variable's initializer, or `null` if
this variable |
4660 * does not have an initializer. | 5012 * does not have an initializer. |
4661 */ | 5013 */ |
4662 FunctionElement _initializer; | 5014 FunctionElement _initializer; |
4663 | 5015 |
4664 /** | 5016 /** |
4665 * An empty array of variable elements. | 5017 * An empty array of variable elements. |
4666 */ | 5018 */ |
4667 static List<VariableElement> EMPTY_ARRAY = new List<VariableElement>(0); | 5019 static List<VariableElement> EMPTY_ARRAY = new List<VariableElement>(0); |
4668 | 5020 |
4669 /** | 5021 /** |
4670 * Initialize a newly created variable element to have the given name. | 5022 * Initialize a newly created variable element to have the given name. |
| 5023 * |
4671 * @param name the name of this element | 5024 * @param name the name of this element |
4672 */ | 5025 */ |
4673 VariableElementImpl.con1(Identifier name) : super.con1(name) { | 5026 VariableElementImpl.con1(Identifier name) : super.con1(name) { |
4674 _jtd_constructor_232_impl(name); | 5027 _jtd_constructor_232_impl(name); |
4675 } | 5028 } |
4676 _jtd_constructor_232_impl(Identifier name) { | 5029 _jtd_constructor_232_impl(Identifier name) { |
4677 } | 5030 } |
4678 | 5031 |
4679 /** | 5032 /** |
4680 * Initialize a newly created variable element to have the given name. | 5033 * Initialize a newly created variable element to have the given name. |
| 5034 * |
4681 * @param name the name of this element | 5035 * @param name the name of this element |
4682 * @param nameOffset the offset of the name of this element in the file that c
ontains the | 5036 * @param nameOffset the offset of the name of this element in the file that c
ontains the |
4683 * declaration of this element | 5037 * declaration of this element |
4684 */ | 5038 */ |
4685 VariableElementImpl.con2(String name, int nameOffset) : super.con2(name, nameO
ffset) { | 5039 VariableElementImpl.con2(String name, int nameOffset) : super.con2(name, nameO
ffset) { |
4686 _jtd_constructor_233_impl(name, nameOffset); | 5040 _jtd_constructor_233_impl(name, nameOffset); |
4687 } | 5041 } |
4688 _jtd_constructor_233_impl(String name, int nameOffset) { | 5042 _jtd_constructor_233_impl(String name, int nameOffset) { |
4689 } | 5043 } |
4690 | 5044 |
4691 /** | 5045 /** |
4692 * Return the result of evaluating this variable's initializer as a compile-ti
me constant | 5046 * Return the result of evaluating this variable's initializer as a compile-ti
me constant |
4693 * expression, or `null` if this variable is not a 'const' variable or does no
t have an | 5047 * expression, or `null` if this variable is not a 'const' variable or does no
t have an |
4694 * initializer. | 5048 * initializer. |
| 5049 * |
4695 * @return the result of evaluating this variable's initializer | 5050 * @return the result of evaluating this variable's initializer |
4696 */ | 5051 */ |
4697 EvaluationResultImpl get evaluationResult => null; | 5052 EvaluationResultImpl get evaluationResult => null; |
4698 FunctionElement get initializer => _initializer; | 5053 FunctionElement get initializer => _initializer; |
4699 Type2 get type => _type; | 5054 Type2 get type => _type; |
4700 bool get isConst => hasModifier(Modifier.CONST); | 5055 bool get isConst => hasModifier(Modifier.CONST); |
4701 bool get isFinal => hasModifier(Modifier.FINAL); | 5056 bool get isFinal => hasModifier(Modifier.FINAL); |
4702 | 5057 |
4703 /** | 5058 /** |
4704 * Set whether this variable is const to correspond to the given value. | 5059 * Set whether this variable is const to correspond to the given value. |
| 5060 * |
4705 * @param isConst `true` if the variable is const | 5061 * @param isConst `true` if the variable is const |
4706 */ | 5062 */ |
4707 void set const3(bool isConst) { | 5063 void set const3(bool isConst) { |
4708 setModifier(Modifier.CONST, isConst); | 5064 setModifier(Modifier.CONST, isConst); |
4709 } | 5065 } |
4710 | 5066 |
4711 /** | 5067 /** |
4712 * Set the result of evaluating this variable's initializer as a compile-time
constant expression | 5068 * Set the result of evaluating this variable's initializer as a compile-time
constant expression |
4713 * to the given result. | 5069 * to the given result. |
| 5070 * |
4714 * @param result the result of evaluating this variable's initializer | 5071 * @param result the result of evaluating this variable's initializer |
4715 */ | 5072 */ |
4716 void set evaluationResult(EvaluationResultImpl result) { | 5073 void set evaluationResult(EvaluationResultImpl result) { |
4717 throw new IllegalStateException("Invalid attempt to set a compile-time const
ant result"); | 5074 throw new IllegalStateException("Invalid attempt to set a compile-time const
ant result"); |
4718 } | 5075 } |
4719 | 5076 |
4720 /** | 5077 /** |
4721 * Set whether this variable is final to correspond to the given value. | 5078 * Set whether this variable is final to correspond to the given value. |
| 5079 * |
4722 * @param isFinal `true` if the variable is final | 5080 * @param isFinal `true` if the variable is final |
4723 */ | 5081 */ |
4724 void set final2(bool isFinal) { | 5082 void set final2(bool isFinal) { |
4725 setModifier(Modifier.FINAL, isFinal); | 5083 setModifier(Modifier.FINAL, isFinal); |
4726 } | 5084 } |
4727 | 5085 |
4728 /** | 5086 /** |
4729 * Set the function representing this variable's initializer to the given func
tion. | 5087 * Set the function representing this variable's initializer to the given func
tion. |
| 5088 * |
4730 * @param initializer the function representing this variable's initializer | 5089 * @param initializer the function representing this variable's initializer |
4731 */ | 5090 */ |
4732 void set initializer(FunctionElement initializer2) { | 5091 void set initializer(FunctionElement initializer2) { |
4733 if (initializer2 != null) { | 5092 if (initializer2 != null) { |
4734 ((initializer2 as FunctionElementImpl)).enclosingElement = this; | 5093 ((initializer2 as FunctionElementImpl)).enclosingElement = this; |
4735 } | 5094 } |
4736 this._initializer = initializer2; | 5095 this._initializer = initializer2; |
4737 } | 5096 } |
4738 | 5097 |
4739 /** | 5098 /** |
4740 * Set the declared type of this variable to the given type. | 5099 * Set the declared type of this variable to the given type. |
| 5100 * |
4741 * @param type the declared type of this variable | 5101 * @param type the declared type of this variable |
4742 */ | 5102 */ |
4743 void set type(Type2 type2) { | 5103 void set type(Type2 type2) { |
4744 this._type = type2; | 5104 this._type = type2; |
4745 } | 5105 } |
4746 void visitChildren(ElementVisitor<Object> visitor) { | 5106 void visitChildren(ElementVisitor<Object> visitor) { |
4747 super.visitChildren(visitor); | 5107 super.visitChildren(visitor); |
4748 safelyVisitChild(_initializer, visitor); | 5108 safelyVisitChild(_initializer, visitor); |
4749 } | 5109 } |
4750 void appendTo(JavaStringBuilder builder) { | 5110 void appendTo(JavaStringBuilder builder) { |
4751 builder.append(type); | 5111 builder.append(type); |
4752 builder.append(" "); | 5112 builder.append(" "); |
4753 builder.append(displayName); | 5113 builder.append(displayName); |
4754 } | 5114 } |
4755 } | 5115 } |
4756 /** | 5116 /** |
4757 * Instances of the class `ConstructorMember` represent a constructor element de
fined in a | 5117 * Instances of the class `ConstructorMember` represent a constructor element de
fined in a |
4758 * parameterized type where the values of the type parameters are known. | 5118 * parameterized type where the values of the type parameters are known. |
4759 */ | 5119 */ |
4760 class ConstructorMember extends ExecutableMember implements ConstructorElement { | 5120 class ConstructorMember extends ExecutableMember implements ConstructorElement { |
4761 | 5121 |
4762 /** | 5122 /** |
4763 * If the given constructor's type is different when any type parameters from
the defining type's | 5123 * If the given constructor's type is different when any type parameters from
the defining type's |
4764 * declaration are replaced with the actual type arguments from the defining t
ype, create a | 5124 * declaration are replaced with the actual type arguments from the defining t
ype, create a |
4765 * constructor member representing the given constructor. Return the member th
at was created, or | 5125 * constructor member representing the given constructor. Return the member th
at was created, or |
4766 * the base constructor if no member was created. | 5126 * the base constructor if no member was created. |
| 5127 * |
4767 * @param baseConstructor the base constructor for which a member might be cre
ated | 5128 * @param baseConstructor the base constructor for which a member might be cre
ated |
4768 * @param definingType the type defining the parameters and arguments to be us
ed in the | 5129 * @param definingType the type defining the parameters and arguments to be us
ed in the |
4769 * substitution | 5130 * substitution |
4770 * @return the constructor element that will return the correctly substituted
types | 5131 * @return the constructor element that will return the correctly substituted
types |
4771 */ | 5132 */ |
4772 static ConstructorElement from(ConstructorElement baseConstructor, InterfaceTy
pe definingType) { | 5133 static ConstructorElement from(ConstructorElement baseConstructor, InterfaceTy
pe definingType) { |
4773 if (baseConstructor == null || definingType.typeArguments.length == 0) { | 5134 if (baseConstructor == null || definingType.typeArguments.length == 0) { |
4774 return baseConstructor; | 5135 return baseConstructor; |
4775 } | 5136 } |
4776 FunctionType baseType = baseConstructor.type; | 5137 FunctionType baseType = baseConstructor.type; |
4777 List<Type2> argumentTypes = definingType.typeArguments; | 5138 List<Type2> argumentTypes = definingType.typeArguments; |
4778 List<Type2> parameterTypes = definingType.element.type.typeArguments; | 5139 List<Type2> parameterTypes = definingType.element.type.typeArguments; |
4779 FunctionType substitutedType = baseType.substitute2(argumentTypes, parameter
Types); | 5140 FunctionType substitutedType = baseType.substitute2(argumentTypes, parameter
Types); |
4780 if (baseType == substitutedType) { | 5141 if (baseType == substitutedType) { |
4781 return baseConstructor; | 5142 return baseConstructor; |
4782 } | 5143 } |
4783 return new ConstructorMember(baseConstructor, definingType); | 5144 return new ConstructorMember(baseConstructor, definingType); |
4784 } | 5145 } |
4785 | 5146 |
4786 /** | 5147 /** |
4787 * Initialize a newly created element to represent a constructor of the given
parameterized type. | 5148 * Initialize a newly created element to represent a constructor of the given
parameterized type. |
| 5149 * |
4788 * @param baseElement the element on which the parameterized element was creat
ed | 5150 * @param baseElement the element on which the parameterized element was creat
ed |
4789 * @param definingType the type in which the element is defined | 5151 * @param definingType the type in which the element is defined |
4790 */ | 5152 */ |
4791 ConstructorMember(ConstructorElement baseElement, InterfaceType definingType)
: super(baseElement, definingType) { | 5153 ConstructorMember(ConstructorElement baseElement, InterfaceType definingType)
: super(baseElement, definingType) { |
4792 } | 5154 } |
4793 accept(ElementVisitor visitor) => visitor.visitConstructorElement(this); | 5155 accept(ElementVisitor visitor) => visitor.visitConstructorElement(this); |
4794 ConstructorElement get baseElement => super.baseElement as ConstructorElement; | 5156 ConstructorElement get baseElement => super.baseElement as ConstructorElement; |
4795 ClassElement get enclosingElement => baseElement.enclosingElement; | 5157 ClassElement get enclosingElement => baseElement.enclosingElement; |
4796 ConstructorElement get redirectedConstructor => from(baseElement.redirectedCon
structor, definingType); | 5158 ConstructorElement get redirectedConstructor => from(baseElement.redirectedCon
structor, definingType); |
4797 bool get isConst => baseElement.isConst; | 5159 bool get isConst => baseElement.isConst; |
(...skipping 30 matching lines...) Expand all Loading... |
4828 /** | 5190 /** |
4829 * The abstract class `ExecutableMember` defines the behavior common to members
that represent | 5191 * The abstract class `ExecutableMember` defines the behavior common to members
that represent |
4830 * an executable element defined in a parameterized type where the values of the
type parameters are | 5192 * an executable element defined in a parameterized type where the values of the
type parameters are |
4831 * known. | 5193 * known. |
4832 */ | 5194 */ |
4833 abstract class ExecutableMember extends Member implements ExecutableElement { | 5195 abstract class ExecutableMember extends Member implements ExecutableElement { |
4834 | 5196 |
4835 /** | 5197 /** |
4836 * Initialize a newly created element to represent an executable element of th
e given | 5198 * Initialize a newly created element to represent an executable element of th
e given |
4837 * parameterized type. | 5199 * parameterized type. |
| 5200 * |
4838 * @param baseElement the element on which the parameterized element was creat
ed | 5201 * @param baseElement the element on which the parameterized element was creat
ed |
4839 * @param definingType the type in which the element is defined | 5202 * @param definingType the type in which the element is defined |
4840 */ | 5203 */ |
4841 ExecutableMember(ExecutableElement baseElement, InterfaceType definingType) :
super(baseElement, definingType) { | 5204 ExecutableMember(ExecutableElement baseElement, InterfaceType definingType) :
super(baseElement, definingType) { |
4842 } | 5205 } |
4843 ExecutableElement get baseElement => super.baseElement as ExecutableElement; | 5206 ExecutableElement get baseElement => super.baseElement as ExecutableElement; |
4844 List<FunctionElement> get functions { | 5207 List<FunctionElement> get functions { |
4845 throw new UnsupportedOperationException(); | 5208 throw new UnsupportedOperationException(); |
4846 } | 5209 } |
4847 List<LabelElement> get labels => baseElement.labels; | 5210 List<LabelElement> get labels => baseElement.labels; |
(...skipping 28 matching lines...) Expand all Loading... |
4876 * Instances of the class `FieldMember` represent a field element defined in a p
arameterized | 5239 * Instances of the class `FieldMember` represent a field element defined in a p
arameterized |
4877 * type where the values of the type parameters are known. | 5240 * type where the values of the type parameters are known. |
4878 */ | 5241 */ |
4879 class FieldMember extends VariableMember implements FieldElement { | 5242 class FieldMember extends VariableMember implements FieldElement { |
4880 | 5243 |
4881 /** | 5244 /** |
4882 * If the given field's type is different when any type parameters from the de
fining type's | 5245 * If the given field's type is different when any type parameters from the de
fining type's |
4883 * declaration are replaced with the actual type arguments from the defining t
ype, create a field | 5246 * declaration are replaced with the actual type arguments from the defining t
ype, create a field |
4884 * member representing the given field. Return the member that was created, or
the base field if | 5247 * member representing the given field. Return the member that was created, or
the base field if |
4885 * no member was created. | 5248 * no member was created. |
| 5249 * |
4886 * @param baseField the base field for which a member might be created | 5250 * @param baseField the base field for which a member might be created |
4887 * @param definingType the type defining the parameters and arguments to be us
ed in the | 5251 * @param definingType the type defining the parameters and arguments to be us
ed in the |
4888 * substitution | 5252 * substitution |
4889 * @return the field element that will return the correctly substituted types | 5253 * @return the field element that will return the correctly substituted types |
4890 */ | 5254 */ |
4891 static FieldElement from(FieldElement baseField, InterfaceType definingType) { | 5255 static FieldElement from(FieldElement baseField, InterfaceType definingType) { |
4892 if (baseField == null || definingType.typeArguments.length == 0) { | 5256 if (baseField == null || definingType.typeArguments.length == 0) { |
4893 return baseField; | 5257 return baseField; |
4894 } | 5258 } |
4895 Type2 baseType = baseField.type; | 5259 Type2 baseType = baseField.type; |
4896 if (baseType == null) { | 5260 if (baseType == null) { |
4897 return baseField; | 5261 return baseField; |
4898 } | 5262 } |
4899 List<Type2> argumentTypes = definingType.typeArguments; | 5263 List<Type2> argumentTypes = definingType.typeArguments; |
4900 List<Type2> parameterTypes = definingType.element.type.typeArguments; | 5264 List<Type2> parameterTypes = definingType.element.type.typeArguments; |
4901 Type2 substitutedType = baseType.substitute2(argumentTypes, parameterTypes); | 5265 Type2 substitutedType = baseType.substitute2(argumentTypes, parameterTypes); |
4902 if (baseType == substitutedType) { | 5266 if (baseType == substitutedType) { |
4903 return baseField; | 5267 return baseField; |
4904 } | 5268 } |
4905 return new FieldMember(baseField, definingType); | 5269 return new FieldMember(baseField, definingType); |
4906 } | 5270 } |
4907 | 5271 |
4908 /** | 5272 /** |
4909 * Initialize a newly created element to represent a field of the given parame
terized type. | 5273 * Initialize a newly created element to represent a field of the given parame
terized type. |
| 5274 * |
4910 * @param baseElement the element on which the parameterized element was creat
ed | 5275 * @param baseElement the element on which the parameterized element was creat
ed |
4911 * @param definingType the type in which the element is defined | 5276 * @param definingType the type in which the element is defined |
4912 */ | 5277 */ |
4913 FieldMember(FieldElement baseElement, InterfaceType definingType) : super(base
Element, definingType) { | 5278 FieldMember(FieldElement baseElement, InterfaceType definingType) : super(base
Element, definingType) { |
4914 } | 5279 } |
4915 accept(ElementVisitor visitor) => visitor.visitFieldElement(this); | 5280 accept(ElementVisitor visitor) => visitor.visitFieldElement(this); |
4916 FieldElement get baseElement => super.baseElement as FieldElement; | 5281 FieldElement get baseElement => super.baseElement as FieldElement; |
4917 ClassElement get enclosingElement => baseElement.enclosingElement; | 5282 ClassElement get enclosingElement => baseElement.enclosingElement; |
4918 PropertyAccessorElement get getter => PropertyAccessorMember.from(baseElement.
getter, definingType); | 5283 PropertyAccessorElement get getter => PropertyAccessorMember.from(baseElement.
getter, definingType); |
4919 PropertyAccessorElement get setter => PropertyAccessorMember.from(baseElement.
setter, definingType); | 5284 PropertyAccessorElement get setter => PropertyAccessorMember.from(baseElement.
setter, definingType); |
(...skipping 11 matching lines...) Expand all Loading... |
4931 */ | 5296 */ |
4932 Element _baseElement; | 5297 Element _baseElement; |
4933 | 5298 |
4934 /** | 5299 /** |
4935 * The type in which the element is defined. | 5300 * The type in which the element is defined. |
4936 */ | 5301 */ |
4937 ParameterizedType _definingType; | 5302 ParameterizedType _definingType; |
4938 | 5303 |
4939 /** | 5304 /** |
4940 * Initialize a newly created element to represent the member of the given par
ameterized type. | 5305 * Initialize a newly created element to represent the member of the given par
ameterized type. |
| 5306 * |
4941 * @param baseElement the element on which the parameterized element was creat
ed | 5307 * @param baseElement the element on which the parameterized element was creat
ed |
4942 * @param definingType the type in which the element is defined | 5308 * @param definingType the type in which the element is defined |
4943 */ | 5309 */ |
4944 Member(Element baseElement, ParameterizedType definingType) { | 5310 Member(Element baseElement, ParameterizedType definingType) { |
4945 this._baseElement = baseElement; | 5311 this._baseElement = baseElement; |
4946 this._definingType = definingType; | 5312 this._definingType = definingType; |
4947 } | 5313 } |
4948 String computeDocumentationComment() => _baseElement.computeDocumentationComme
nt(); | 5314 String computeDocumentationComment() => _baseElement.computeDocumentationComme
nt(); |
4949 Element getAncestor(Type elementClass) => baseElement.getAncestor(elementClass
); | 5315 Element getAncestor(Type elementClass) => baseElement.getAncestor(elementClass
); |
4950 | 5316 |
4951 /** | 5317 /** |
4952 * Return the element on which the parameterized element was created. | 5318 * Return the element on which the parameterized element was created. |
| 5319 * |
4953 * @return the element on which the parameterized element was created | 5320 * @return the element on which the parameterized element was created |
4954 */ | 5321 */ |
4955 Element get baseElement => _baseElement; | 5322 Element get baseElement => _baseElement; |
4956 AnalysisContext get context => _baseElement.context; | 5323 AnalysisContext get context => _baseElement.context; |
4957 String get displayName => _baseElement.displayName; | 5324 String get displayName => _baseElement.displayName; |
4958 ElementKind get kind => _baseElement.kind; | 5325 ElementKind get kind => _baseElement.kind; |
4959 LibraryElement get library => _baseElement.library; | 5326 LibraryElement get library => _baseElement.library; |
4960 ElementLocation get location => _baseElement.location; | 5327 ElementLocation get location => _baseElement.location; |
4961 List<ElementAnnotation> get metadata => _baseElement.metadata; | 5328 List<ElementAnnotation> get metadata => _baseElement.metadata; |
4962 String get name => _baseElement.name; | 5329 String get name => _baseElement.name; |
4963 int get nameOffset => _baseElement.nameOffset; | 5330 int get nameOffset => _baseElement.nameOffset; |
4964 Source get source => _baseElement.source; | 5331 Source get source => _baseElement.source; |
4965 bool isAccessibleIn(LibraryElement library) => _baseElement.isAccessibleIn(lib
rary); | 5332 bool isAccessibleIn(LibraryElement library) => _baseElement.isAccessibleIn(lib
rary); |
4966 bool get isSynthetic => _baseElement.isSynthetic; | 5333 bool get isSynthetic => _baseElement.isSynthetic; |
4967 void visitChildren(ElementVisitor<Object> visitor) { | 5334 void visitChildren(ElementVisitor<Object> visitor) { |
4968 } | 5335 } |
4969 | 5336 |
4970 /** | 5337 /** |
4971 * Return the type in which the element is defined. | 5338 * Return the type in which the element is defined. |
| 5339 * |
4972 * @return the type in which the element is defined | 5340 * @return the type in which the element is defined |
4973 */ | 5341 */ |
4974 ParameterizedType get definingType => _definingType; | 5342 ParameterizedType get definingType => _definingType; |
4975 | 5343 |
4976 /** | 5344 /** |
4977 * If the given child is not `null`, use the given visitor to visit it. | 5345 * If the given child is not `null`, use the given visitor to visit it. |
| 5346 * |
4978 * @param child the child to be visited | 5347 * @param child the child to be visited |
4979 * @param visitor the visitor to be used to visit the child | 5348 * @param visitor the visitor to be used to visit the child |
4980 */ | 5349 */ |
4981 void safelyVisitChild(Element child, ElementVisitor<Object> visitor) { | 5350 void safelyVisitChild(Element child, ElementVisitor<Object> visitor) { |
4982 if (child != null) { | 5351 if (child != null) { |
4983 child.accept(visitor); | 5352 child.accept(visitor); |
4984 } | 5353 } |
4985 } | 5354 } |
4986 | 5355 |
4987 /** | 5356 /** |
4988 * Use the given visitor to visit all of the children in the given array. | 5357 * Use the given visitor to visit all of the children in the given array. |
| 5358 * |
4989 * @param children the children to be visited | 5359 * @param children the children to be visited |
4990 * @param visitor the visitor being used to visit the children | 5360 * @param visitor the visitor being used to visit the children |
4991 */ | 5361 */ |
4992 void safelyVisitChildren(List<Element> children, ElementVisitor<Object> visito
r) { | 5362 void safelyVisitChildren(List<Element> children, ElementVisitor<Object> visito
r) { |
4993 if (children != null) { | 5363 if (children != null) { |
4994 for (Element child in children) { | 5364 for (Element child in children) { |
4995 child.accept(visitor); | 5365 child.accept(visitor); |
4996 } | 5366 } |
4997 } | 5367 } |
4998 } | 5368 } |
4999 | 5369 |
5000 /** | 5370 /** |
5001 * Return the type that results from replacing the type parameters in the give
n type with the type | 5371 * Return the type that results from replacing the type parameters in the give
n type with the type |
5002 * arguments. | 5372 * arguments. |
| 5373 * |
5003 * @param type the type to be transformed | 5374 * @param type the type to be transformed |
5004 * @return the result of transforming the type | 5375 * @return the result of transforming the type |
5005 */ | 5376 */ |
5006 Type2 substituteFor(Type2 type) { | 5377 Type2 substituteFor(Type2 type) { |
5007 List<Type2> argumentTypes = _definingType.typeArguments; | 5378 List<Type2> argumentTypes = _definingType.typeArguments; |
5008 List<Type2> parameterTypes = TypeVariableTypeImpl.getTypes(_definingType.typ
eVariables); | 5379 List<Type2> parameterTypes = TypeVariableTypeImpl.getTypes(_definingType.typ
eVariables); |
5009 return type.substitute2(argumentTypes, parameterTypes) as Type2; | 5380 return type.substitute2(argumentTypes, parameterTypes) as Type2; |
5010 } | 5381 } |
5011 | 5382 |
5012 /** | 5383 /** |
5013 * Return the array of types that results from replacing the type parameters i
n the given types | 5384 * Return the array of types that results from replacing the type parameters i
n the given types |
5014 * with the type arguments. | 5385 * with the type arguments. |
| 5386 * |
5015 * @param types the types to be transformed | 5387 * @param types the types to be transformed |
5016 * @return the result of transforming the types | 5388 * @return the result of transforming the types |
5017 */ | 5389 */ |
5018 List<InterfaceType> substituteFor2(List<InterfaceType> types) { | 5390 List<InterfaceType> substituteFor2(List<InterfaceType> types) { |
5019 int count = types.length; | 5391 int count = types.length; |
5020 List<InterfaceType> substitutedTypes = new List<InterfaceType>(count); | 5392 List<InterfaceType> substitutedTypes = new List<InterfaceType>(count); |
5021 for (int i = 0; i < count; i++) { | 5393 for (int i = 0; i < count; i++) { |
5022 substitutedTypes[i] = substituteFor(types[i]); | 5394 substitutedTypes[i] = substituteFor(types[i]); |
5023 } | 5395 } |
5024 return substitutedTypes; | 5396 return substitutedTypes; |
5025 } | 5397 } |
5026 } | 5398 } |
5027 /** | 5399 /** |
5028 * Instances of the class `MethodMember` represent a method element defined in a
parameterized | 5400 * Instances of the class `MethodMember` represent a method element defined in a
parameterized |
5029 * type where the values of the type parameters are known. | 5401 * type where the values of the type parameters are known. |
5030 */ | 5402 */ |
5031 class MethodMember extends ExecutableMember implements MethodElement { | 5403 class MethodMember extends ExecutableMember implements MethodElement { |
5032 | 5404 |
5033 /** | 5405 /** |
5034 * If the given method's type is different when any type parameters from the d
efining type's | 5406 * If the given method's type is different when any type parameters from the d
efining type's |
5035 * declaration are replaced with the actual type arguments from the defining t
ype, create a method | 5407 * declaration are replaced with the actual type arguments from the defining t
ype, create a method |
5036 * member representing the given method. Return the member that was created, o
r the base method if | 5408 * member representing the given method. Return the member that was created, o
r the base method if |
5037 * no member was created. | 5409 * no member was created. |
| 5410 * |
5038 * @param baseMethod the base method for which a member might be created | 5411 * @param baseMethod the base method for which a member might be created |
5039 * @param definingType the type defining the parameters and arguments to be us
ed in the | 5412 * @param definingType the type defining the parameters and arguments to be us
ed in the |
5040 * substitution | 5413 * substitution |
5041 * @return the method element that will return the correctly substituted types | 5414 * @return the method element that will return the correctly substituted types |
5042 */ | 5415 */ |
5043 static MethodElement from(MethodElement baseMethod, InterfaceType definingType
) { | 5416 static MethodElement from(MethodElement baseMethod, InterfaceType definingType
) { |
5044 if (baseMethod == null || definingType.typeArguments.length == 0) { | 5417 if (baseMethod == null || definingType.typeArguments.length == 0) { |
5045 return baseMethod; | 5418 return baseMethod; |
5046 } | 5419 } |
5047 FunctionType baseType = baseMethod.type; | 5420 FunctionType baseType = baseMethod.type; |
5048 List<Type2> argumentTypes = definingType.typeArguments; | 5421 List<Type2> argumentTypes = definingType.typeArguments; |
5049 List<Type2> parameterTypes = definingType.element.type.typeArguments; | 5422 List<Type2> parameterTypes = definingType.element.type.typeArguments; |
5050 FunctionType substitutedType = baseType.substitute2(argumentTypes, parameter
Types); | 5423 FunctionType substitutedType = baseType.substitute2(argumentTypes, parameter
Types); |
5051 if (baseType == substitutedType) { | 5424 if (baseType == substitutedType) { |
5052 return baseMethod; | 5425 return baseMethod; |
5053 } | 5426 } |
5054 return new MethodMember(baseMethod, definingType); | 5427 return new MethodMember(baseMethod, definingType); |
5055 } | 5428 } |
5056 | 5429 |
5057 /** | 5430 /** |
5058 * Initialize a newly created element to represent a method of the given param
eterized type. | 5431 * Initialize a newly created element to represent a method of the given param
eterized type. |
| 5432 * |
5059 * @param baseElement the element on which the parameterized element was creat
ed | 5433 * @param baseElement the element on which the parameterized element was creat
ed |
5060 * @param definingType the type in which the element is defined | 5434 * @param definingType the type in which the element is defined |
5061 */ | 5435 */ |
5062 MethodMember(MethodElement baseElement, InterfaceType definingType) : super(ba
seElement, definingType) { | 5436 MethodMember(MethodElement baseElement, InterfaceType definingType) : super(ba
seElement, definingType) { |
5063 } | 5437 } |
5064 accept(ElementVisitor visitor) => visitor.visitMethodElement(this); | 5438 accept(ElementVisitor visitor) => visitor.visitMethodElement(this); |
5065 MethodElement get baseElement => super.baseElement as MethodElement; | 5439 MethodElement get baseElement => super.baseElement as MethodElement; |
5066 ClassElement get enclosingElement => baseElement.enclosingElement; | 5440 ClassElement get enclosingElement => baseElement.enclosingElement; |
5067 bool get isAbstract => baseElement.isAbstract; | 5441 bool get isAbstract => baseElement.isAbstract; |
5068 String toString() { | 5442 String toString() { |
(...skipping 24 matching lines...) Expand all Loading... |
5093 * Instances of the class `ParameterMember` represent a parameter element define
d in a | 5467 * Instances of the class `ParameterMember` represent a parameter element define
d in a |
5094 * parameterized type where the values of the type parameters are known. | 5468 * parameterized type where the values of the type parameters are known. |
5095 */ | 5469 */ |
5096 class ParameterMember extends VariableMember implements ParameterElement { | 5470 class ParameterMember extends VariableMember implements ParameterElement { |
5097 | 5471 |
5098 /** | 5472 /** |
5099 * If the given parameter's type is different when any type parameters from th
e defining type's | 5473 * If the given parameter's type is different when any type parameters from th
e defining type's |
5100 * declaration are replaced with the actual type arguments from the defining t
ype, create a | 5474 * declaration are replaced with the actual type arguments from the defining t
ype, create a |
5101 * parameter member representing the given parameter. Return the member that w
as created, or the | 5475 * parameter member representing the given parameter. Return the member that w
as created, or the |
5102 * base parameter if no member was created. | 5476 * base parameter if no member was created. |
| 5477 * |
5103 * @param baseParameter the base parameter for which a member might be created | 5478 * @param baseParameter the base parameter for which a member might be created |
5104 * @param definingType the type defining the parameters and arguments to be us
ed in the | 5479 * @param definingType the type defining the parameters and arguments to be us
ed in the |
5105 * substitution | 5480 * substitution |
5106 * @return the parameter element that will return the correctly substituted ty
pes | 5481 * @return the parameter element that will return the correctly substituted ty
pes |
5107 */ | 5482 */ |
5108 static ParameterElement from(ParameterElement baseParameter, ParameterizedType
definingType) { | 5483 static ParameterElement from(ParameterElement baseParameter, ParameterizedType
definingType) { |
5109 if (baseParameter == null || definingType.typeArguments.length == 0) { | 5484 if (baseParameter == null || definingType.typeArguments.length == 0) { |
5110 return baseParameter; | 5485 return baseParameter; |
5111 } | 5486 } |
5112 Type2 baseType = baseParameter.type; | 5487 Type2 baseType = baseParameter.type; |
5113 List<Type2> argumentTypes = definingType.typeArguments; | 5488 List<Type2> argumentTypes = definingType.typeArguments; |
5114 List<Type2> parameterTypes = TypeVariableTypeImpl.getTypes(definingType.type
Variables); | 5489 List<Type2> parameterTypes = TypeVariableTypeImpl.getTypes(definingType.type
Variables); |
5115 Type2 substitutedType = baseType.substitute2(argumentTypes, parameterTypes); | 5490 Type2 substitutedType = baseType.substitute2(argumentTypes, parameterTypes); |
5116 if (baseType == substitutedType) { | 5491 if (baseType == substitutedType) { |
5117 return baseParameter; | 5492 return baseParameter; |
5118 } | 5493 } |
5119 return new ParameterMember(baseParameter, definingType); | 5494 return new ParameterMember(baseParameter, definingType); |
5120 } | 5495 } |
5121 | 5496 |
5122 /** | 5497 /** |
5123 * Initialize a newly created element to represent a parameter of the given pa
rameterized type. | 5498 * Initialize a newly created element to represent a parameter of the given pa
rameterized type. |
| 5499 * |
5124 * @param baseElement the element on which the parameterized element was creat
ed | 5500 * @param baseElement the element on which the parameterized element was creat
ed |
5125 * @param definingType the type in which the element is defined | 5501 * @param definingType the type in which the element is defined |
5126 */ | 5502 */ |
5127 ParameterMember(ParameterElement baseElement, ParameterizedType definingType)
: super(baseElement, definingType) { | 5503 ParameterMember(ParameterElement baseElement, ParameterizedType definingType)
: super(baseElement, definingType) { |
5128 } | 5504 } |
5129 accept(ElementVisitor visitor) => visitor.visitParameterElement(this); | 5505 accept(ElementVisitor visitor) => visitor.visitParameterElement(this); |
5130 Element getAncestor(Type elementClass) { | 5506 Element getAncestor(Type elementClass) { |
5131 Element element = baseElement.getAncestor(elementClass); | 5507 Element element = baseElement.getAncestor(elementClass); |
5132 ParameterizedType definingType = this.definingType; | 5508 ParameterizedType definingType = this.definingType; |
5133 if (definingType is InterfaceType) { | 5509 if (definingType is InterfaceType) { |
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
5191 * Instances of the class `PropertyAccessorMember` represent a property accessor
element | 5567 * Instances of the class `PropertyAccessorMember` represent a property accessor
element |
5192 * defined in a parameterized type where the values of the type parameters are k
nown. | 5568 * defined in a parameterized type where the values of the type parameters are k
nown. |
5193 */ | 5569 */ |
5194 class PropertyAccessorMember extends ExecutableMember implements PropertyAccesso
rElement { | 5570 class PropertyAccessorMember extends ExecutableMember implements PropertyAccesso
rElement { |
5195 | 5571 |
5196 /** | 5572 /** |
5197 * If the given property accessor's type is different when any type parameters
from the defining | 5573 * If the given property accessor's type is different when any type parameters
from the defining |
5198 * type's declaration are replaced with the actual type arguments from the def
ining type, create a | 5574 * type's declaration are replaced with the actual type arguments from the def
ining type, create a |
5199 * property accessor member representing the given property accessor. Return t
he member that was | 5575 * property accessor member representing the given property accessor. Return t
he member that was |
5200 * created, or the base accessor if no member was created. | 5576 * created, or the base accessor if no member was created. |
| 5577 * |
5201 * @param baseAccessor the base property accessor for which a member might be
created | 5578 * @param baseAccessor the base property accessor for which a member might be
created |
5202 * @param definingType the type defining the parameters and arguments to be us
ed in the | 5579 * @param definingType the type defining the parameters and arguments to be us
ed in the |
5203 * substitution | 5580 * substitution |
5204 * @return the property accessor element that will return the correctly substi
tuted types | 5581 * @return the property accessor element that will return the correctly substi
tuted types |
5205 */ | 5582 */ |
5206 static PropertyAccessorElement from(PropertyAccessorElement baseAccessor, Inte
rfaceType definingType) { | 5583 static PropertyAccessorElement from(PropertyAccessorElement baseAccessor, Inte
rfaceType definingType) { |
5207 if (baseAccessor == null || definingType.typeArguments.length == 0) { | 5584 if (baseAccessor == null || definingType.typeArguments.length == 0) { |
5208 return baseAccessor; | 5585 return baseAccessor; |
5209 } | 5586 } |
5210 FunctionType baseType = baseAccessor.type; | 5587 FunctionType baseType = baseAccessor.type; |
5211 List<Type2> argumentTypes = definingType.typeArguments; | 5588 List<Type2> argumentTypes = definingType.typeArguments; |
5212 List<Type2> parameterTypes = definingType.element.type.typeArguments; | 5589 List<Type2> parameterTypes = definingType.element.type.typeArguments; |
5213 FunctionType substitutedType = baseType.substitute2(argumentTypes, parameter
Types); | 5590 FunctionType substitutedType = baseType.substitute2(argumentTypes, parameter
Types); |
5214 if (baseType == substitutedType) { | 5591 if (baseType == substitutedType) { |
5215 return baseAccessor; | 5592 return baseAccessor; |
5216 } | 5593 } |
5217 return new PropertyAccessorMember(baseAccessor, definingType); | 5594 return new PropertyAccessorMember(baseAccessor, definingType); |
5218 } | 5595 } |
5219 | 5596 |
5220 /** | 5597 /** |
5221 * Initialize a newly created element to represent a property accessor of the
given parameterized | 5598 * Initialize a newly created element to represent a property accessor of the
given parameterized |
5222 * type. | 5599 * type. |
| 5600 * |
5223 * @param baseElement the element on which the parameterized element was creat
ed | 5601 * @param baseElement the element on which the parameterized element was creat
ed |
5224 * @param definingType the type in which the element is defined | 5602 * @param definingType the type in which the element is defined |
5225 */ | 5603 */ |
5226 PropertyAccessorMember(PropertyAccessorElement baseElement, InterfaceType defi
ningType) : super(baseElement, definingType) { | 5604 PropertyAccessorMember(PropertyAccessorElement baseElement, InterfaceType defi
ningType) : super(baseElement, definingType) { |
5227 } | 5605 } |
5228 accept(ElementVisitor visitor) => visitor.visitPropertyAccessorElement(this); | 5606 accept(ElementVisitor visitor) => visitor.visitPropertyAccessorElement(this); |
5229 PropertyAccessorElement get baseElement => super.baseElement as PropertyAccess
orElement; | 5607 PropertyAccessorElement get baseElement => super.baseElement as PropertyAccess
orElement; |
5230 PropertyAccessorElement get correspondingGetter => from(baseElement.correspond
ingGetter, definingType); | 5608 PropertyAccessorElement get correspondingGetter => from(baseElement.correspond
ingGetter, definingType); |
5231 PropertyAccessorElement get correspondingSetter => from(baseElement.correspond
ingSetter, definingType); | 5609 PropertyAccessorElement get correspondingSetter => from(baseElement.correspond
ingSetter, definingType); |
5232 Element get enclosingElement => baseElement.enclosingElement; | 5610 Element get enclosingElement => baseElement.enclosingElement; |
(...skipping 12 matching lines...) Expand all Loading... |
5245 /** | 5623 /** |
5246 * The abstract class `VariableMember` defines the behavior common to members th
at represent a | 5624 * The abstract class `VariableMember` defines the behavior common to members th
at represent a |
5247 * variable element defined in a parameterized type where the values of the type
parameters are | 5625 * variable element defined in a parameterized type where the values of the type
parameters are |
5248 * known. | 5626 * known. |
5249 */ | 5627 */ |
5250 abstract class VariableMember extends Member implements VariableElement { | 5628 abstract class VariableMember extends Member implements VariableElement { |
5251 | 5629 |
5252 /** | 5630 /** |
5253 * Initialize a newly created element to represent an executable element of th
e given | 5631 * Initialize a newly created element to represent an executable element of th
e given |
5254 * parameterized type. | 5632 * parameterized type. |
| 5633 * |
5255 * @param baseElement the element on which the parameterized element was creat
ed | 5634 * @param baseElement the element on which the parameterized element was creat
ed |
5256 * @param definingType the type in which the element is defined | 5635 * @param definingType the type in which the element is defined |
5257 */ | 5636 */ |
5258 VariableMember(VariableElement baseElement, ParameterizedType definingType) :
super(baseElement, definingType) { | 5637 VariableMember(VariableElement baseElement, ParameterizedType definingType) :
super(baseElement, definingType) { |
5259 } | 5638 } |
5260 VariableElement get baseElement => super.baseElement as VariableElement; | 5639 VariableElement get baseElement => super.baseElement as VariableElement; |
5261 FunctionElement get initializer { | 5640 FunctionElement get initializer { |
5262 throw new UnsupportedOperationException(); | 5641 throw new UnsupportedOperationException(); |
5263 } | 5642 } |
5264 Type2 get type => substituteFor(baseElement.type); | 5643 Type2 get type => substituteFor(baseElement.type); |
5265 bool get isConst => baseElement.isConst; | 5644 bool get isConst => baseElement.isConst; |
5266 bool get isFinal => baseElement.isFinal; | 5645 bool get isFinal => baseElement.isFinal; |
5267 void visitChildren(ElementVisitor<Object> visitor) { | 5646 void visitChildren(ElementVisitor<Object> visitor) { |
5268 super.visitChildren(visitor); | 5647 super.visitChildren(visitor); |
5269 safelyVisitChild(baseElement.initializer, visitor); | 5648 safelyVisitChild(baseElement.initializer, visitor); |
5270 } | 5649 } |
5271 } | 5650 } |
5272 /** | 5651 /** |
5273 * The unique instance of the class `BottomTypeImpl` implements the type `bottom
`. | 5652 * The unique instance of the class `BottomTypeImpl` implements the type `bottom
`. |
| 5653 * |
5274 * @coverage dart.engine.type | 5654 * @coverage dart.engine.type |
5275 */ | 5655 */ |
5276 class BottomTypeImpl extends TypeImpl { | 5656 class BottomTypeImpl extends TypeImpl { |
5277 | 5657 |
5278 /** | 5658 /** |
5279 * The unique instance of this class. | 5659 * The unique instance of this class. |
5280 */ | 5660 */ |
5281 static BottomTypeImpl _INSTANCE = new BottomTypeImpl(); | 5661 static BottomTypeImpl _INSTANCE = new BottomTypeImpl(); |
5282 | 5662 |
5283 /** | 5663 /** |
5284 * Return the unique instance of this class. | 5664 * Return the unique instance of this class. |
| 5665 * |
5285 * @return the unique instance of this class | 5666 * @return the unique instance of this class |
5286 */ | 5667 */ |
5287 static BottomTypeImpl get instance => _INSTANCE; | 5668 static BottomTypeImpl get instance => _INSTANCE; |
5288 | 5669 |
5289 /** | 5670 /** |
5290 * Prevent the creation of instances of this class. | 5671 * Prevent the creation of instances of this class. |
5291 */ | 5672 */ |
5292 BottomTypeImpl() : super(null, "<bottom>") { | 5673 BottomTypeImpl() : super(null, "<bottom>") { |
5293 } | 5674 } |
5294 bool operator ==(Object object) => identical(object, this); | 5675 bool operator ==(Object object) => identical(object, this); |
5295 bool isMoreSpecificThan(Type2 type) => true; | 5676 bool isMoreSpecificThan(Type2 type) => true; |
5296 bool isSubtypeOf(Type2 type) => true; | 5677 bool isSubtypeOf(Type2 type) => true; |
5297 bool isSupertypeOf(Type2 type) => false; | 5678 bool isSupertypeOf(Type2 type) => false; |
5298 BottomTypeImpl substitute2(List<Type2> argumentTypes, List<Type2> parameterTyp
es) => this; | 5679 BottomTypeImpl substitute2(List<Type2> argumentTypes, List<Type2> parameterTyp
es) => this; |
5299 } | 5680 } |
5300 /** | 5681 /** |
5301 * The unique instance of the class `DynamicTypeImpl` implements the type `dynam
ic`. | 5682 * The unique instance of the class `DynamicTypeImpl` implements the type `dynam
ic`. |
| 5683 * |
5302 * @coverage dart.engine.type | 5684 * @coverage dart.engine.type |
5303 */ | 5685 */ |
5304 class DynamicTypeImpl extends TypeImpl { | 5686 class DynamicTypeImpl extends TypeImpl { |
5305 | 5687 |
5306 /** | 5688 /** |
5307 * The unique instance of this class. | 5689 * The unique instance of this class. |
5308 */ | 5690 */ |
5309 static DynamicTypeImpl _INSTANCE = new DynamicTypeImpl(); | 5691 static DynamicTypeImpl _INSTANCE = new DynamicTypeImpl(); |
5310 | 5692 |
5311 /** | 5693 /** |
5312 * Return the unique instance of this class. | 5694 * Return the unique instance of this class. |
| 5695 * |
5313 * @return the unique instance of this class | 5696 * @return the unique instance of this class |
5314 */ | 5697 */ |
5315 static DynamicTypeImpl get instance => _INSTANCE; | 5698 static DynamicTypeImpl get instance => _INSTANCE; |
5316 | 5699 |
5317 /** | 5700 /** |
5318 * Prevent the creation of instances of this class. | 5701 * Prevent the creation of instances of this class. |
5319 */ | 5702 */ |
5320 DynamicTypeImpl() : super(new DynamicElementImpl(), Keyword.DYNAMIC.syntax) { | 5703 DynamicTypeImpl() : super(new DynamicElementImpl(), Keyword.DYNAMIC.syntax) { |
5321 ((element as DynamicElementImpl)).type = this; | 5704 ((element as DynamicElementImpl)).type = this; |
5322 } | 5705 } |
5323 bool operator ==(Object object) => object is DynamicTypeImpl; | 5706 bool operator ==(Object object) => object is DynamicTypeImpl; |
5324 bool get isDynamic => true; | 5707 bool get isDynamic => true; |
5325 bool isMoreSpecificThan(Type2 type) => false; | 5708 bool isMoreSpecificThan(Type2 type) => false; |
5326 bool isSubtypeOf(Type2 type) => identical(this, type); | 5709 bool isSubtypeOf(Type2 type) => identical(this, type); |
5327 bool isSupertypeOf(Type2 type) => true; | 5710 bool isSupertypeOf(Type2 type) => true; |
5328 DynamicTypeImpl substitute2(List<Type2> argumentTypes, List<Type2> parameterTy
pes) => this; | 5711 Type2 substitute2(List<Type2> argumentTypes, List<Type2> parameterTypes) { |
| 5712 int length = parameterTypes.length; |
| 5713 for (int i = 0; i < length; i++) { |
| 5714 if (parameterTypes[i] == this) { |
| 5715 return argumentTypes[i]; |
| 5716 } |
| 5717 } |
| 5718 return this; |
| 5719 } |
5329 } | 5720 } |
5330 /** | 5721 /** |
5331 * Instances of the class `FunctionTypeImpl` defines the behavior common to obje
cts | 5722 * Instances of the class `FunctionTypeImpl` defines the behavior common to obje
cts |
5332 * representing the type of a function, method, constructor, getter, or setter. | 5723 * representing the type of a function, method, constructor, getter, or setter. |
| 5724 * |
5333 * @coverage dart.engine.type | 5725 * @coverage dart.engine.type |
5334 */ | 5726 */ |
5335 class FunctionTypeImpl extends TypeImpl implements FunctionType { | 5727 class FunctionTypeImpl extends TypeImpl implements FunctionType { |
5336 | 5728 |
5337 /** | 5729 /** |
5338 * Return `true` if all of the name/type pairs in the first map are equal to t
he | 5730 * Return `true` if all of the name/type pairs in the first map are equal to t
he |
5339 * corresponding name/type pairs in the second map. The maps are expected to i
terate over their | 5731 * corresponding name/type pairs in the second map. The maps are expected to i
terate over their |
5340 * entries in the same order in which those entries were added to the map. | 5732 * entries in the same order in which those entries were added to the map. |
| 5733 * |
5341 * @param firstTypes the first map of name/type pairs being compared | 5734 * @param firstTypes the first map of name/type pairs being compared |
5342 * @param secondTypes the second map of name/type pairs being compared | 5735 * @param secondTypes the second map of name/type pairs being compared |
5343 * @return `true` if all of the name/type pairs in the first map are equal to
the | 5736 * @return `true` if all of the name/type pairs in the first map are equal to
the |
5344 * corresponding name/type pairs in the second map | 5737 * corresponding name/type pairs in the second map |
5345 */ | 5738 */ |
5346 static bool equals2(Map<String, Type2> firstTypes, Map<String, Type2> secondTy
pes) { | 5739 static bool equals2(Map<String, Type2> firstTypes, Map<String, Type2> secondTy
pes) { |
5347 if (secondTypes.length != firstTypes.length) { | 5740 if (secondTypes.length != firstTypes.length) { |
5348 return false; | 5741 return false; |
5349 } | 5742 } |
5350 JavaIterator<MapEntry<String, Type2>> firstIterator = new JavaIterator(getMa
pEntrySet(firstTypes)); | 5743 JavaIterator<MapEntry<String, Type2>> firstIterator = new JavaIterator(getMa
pEntrySet(firstTypes)); |
5351 JavaIterator<MapEntry<String, Type2>> secondIterator = new JavaIterator(getM
apEntrySet(secondTypes)); | 5744 JavaIterator<MapEntry<String, Type2>> secondIterator = new JavaIterator(getM
apEntrySet(secondTypes)); |
5352 while (firstIterator.hasNext) { | 5745 while (firstIterator.hasNext) { |
5353 MapEntry<String, Type2> firstEntry = firstIterator.next(); | 5746 MapEntry<String, Type2> firstEntry = firstIterator.next(); |
5354 MapEntry<String, Type2> secondEntry = secondIterator.next(); | 5747 MapEntry<String, Type2> secondEntry = secondIterator.next(); |
5355 if (firstEntry.getKey() != secondEntry.getKey() || firstEntry.getValue() !
= secondEntry.getValue()) { | 5748 if (firstEntry.getKey() != secondEntry.getKey() || firstEntry.getValue() !
= secondEntry.getValue()) { |
5356 return false; | 5749 return false; |
5357 } | 5750 } |
5358 } | 5751 } |
5359 return true; | 5752 return true; |
5360 } | 5753 } |
5361 | 5754 |
5362 /** | 5755 /** |
5363 * Return a map containing the results of using the given argument types and p
arameter types to | 5756 * Return a map containing the results of using the given argument types and p
arameter types to |
5364 * perform a substitution on all of the values in the given map. The order of
the entries will be | 5757 * perform a substitution on all of the values in the given map. The order of
the entries will be |
5365 * preserved. | 5758 * preserved. |
| 5759 * |
5366 * @param types the types on which a substitution is to be performed | 5760 * @param types the types on which a substitution is to be performed |
5367 * @param argumentTypes the argument types for the substitution | 5761 * @param argumentTypes the argument types for the substitution |
5368 * @param parameterTypes the parameter types for the substitution | 5762 * @param parameterTypes the parameter types for the substitution |
5369 * @return the result of performing the substitution on each of the types | 5763 * @return the result of performing the substitution on each of the types |
5370 */ | 5764 */ |
5371 static Map<String, Type2> substitute3(Map<String, Type2> types, List<Type2> ar
gumentTypes, List<Type2> parameterTypes) { | 5765 static Map<String, Type2> substitute3(Map<String, Type2> types, List<Type2> ar
gumentTypes, List<Type2> parameterTypes) { |
5372 if (types.isEmpty) { | 5766 if (types.isEmpty) { |
5373 return types; | 5767 return types; |
5374 } | 5768 } |
5375 LinkedHashMap<String, Type2> newTypes = new LinkedHashMap<String, Type2>(); | 5769 LinkedHashMap<String, Type2> newTypes = new LinkedHashMap<String, Type2>(); |
5376 for (MapEntry<String, Type2> entry in getMapEntrySet(types)) { | 5770 for (MapEntry<String, Type2> entry in getMapEntrySet(types)) { |
5377 newTypes[entry.getKey()] = entry.getValue().substitute2(argumentTypes, par
ameterTypes); | 5771 newTypes[entry.getKey()] = entry.getValue().substitute2(argumentTypes, par
ameterTypes); |
5378 } | 5772 } |
5379 return newTypes; | 5773 return newTypes; |
5380 } | 5774 } |
5381 | 5775 |
5382 /** | 5776 /** |
5383 * An array containing the actual types of the type arguments. | 5777 * An array containing the actual types of the type arguments. |
5384 */ | 5778 */ |
5385 List<Type2> _typeArguments = TypeImpl.EMPTY_ARRAY; | 5779 List<Type2> _typeArguments = TypeImpl.EMPTY_ARRAY; |
5386 | 5780 |
5387 /** | 5781 /** |
5388 * An array containing the types of the normal parameters of this type of func
tion. The parameter | 5782 * An array containing the types of the normal parameters of this type of func
tion. The parameter |
5389 * types are in the same order as they appear in the declaration of the functi
on. | 5783 * types are in the same order as they appear in the declaration of the functi
on. |
| 5784 * |
5390 * @return the types of the normal parameters of this type of function | 5785 * @return the types of the normal parameters of this type of function |
5391 */ | 5786 */ |
5392 List<Type2> _normalParameterTypes = TypeImpl.EMPTY_ARRAY; | 5787 List<Type2> _normalParameterTypes = TypeImpl.EMPTY_ARRAY; |
5393 | 5788 |
5394 /** | 5789 /** |
5395 * A table mapping the names of optional (positional) parameters to the types
of the optional | 5790 * A table mapping the names of optional (positional) parameters to the types
of the optional |
5396 * parameters of this type of function. | 5791 * parameters of this type of function. |
5397 */ | 5792 */ |
5398 List<Type2> _optionalParameterTypes = TypeImpl.EMPTY_ARRAY; | 5793 List<Type2> _optionalParameterTypes = TypeImpl.EMPTY_ARRAY; |
5399 | 5794 |
5400 /** | 5795 /** |
5401 * A table mapping the names of named parameters to the types of the named par
ameters of this type | 5796 * A table mapping the names of named parameters to the types of the named par
ameters of this type |
5402 * of function. | 5797 * of function. |
5403 */ | 5798 */ |
5404 Map<String, Type2> _namedParameterTypes = new Map(); | 5799 Map<String, Type2> _namedParameterTypes = new Map(); |
5405 | 5800 |
5406 /** | 5801 /** |
5407 * Initialize a newly created function type to be declared by the given elemen
t and to have the | 5802 * Initialize a newly created function type to be declared by the given elemen
t and to have the |
5408 * given name. | 5803 * given name. |
| 5804 * |
5409 * @param element the element representing the declaration of the function typ
e | 5805 * @param element the element representing the declaration of the function typ
e |
5410 */ | 5806 */ |
5411 FunctionTypeImpl.con1(ExecutableElement element) : super(element, element == n
ull ? null : element.name) { | 5807 FunctionTypeImpl.con1(ExecutableElement element) : super(element, element == n
ull ? null : element.name) { |
5412 _jtd_constructor_299_impl(element); | 5808 _jtd_constructor_299_impl(element); |
5413 } | 5809 } |
5414 _jtd_constructor_299_impl(ExecutableElement element) { | 5810 _jtd_constructor_299_impl(ExecutableElement element) { |
5415 } | 5811 } |
5416 | 5812 |
5417 /** | 5813 /** |
5418 * Initialize a newly created function type to be declared by the given elemen
t and to have the | 5814 * Initialize a newly created function type to be declared by the given elemen
t and to have the |
5419 * given name. | 5815 * given name. |
| 5816 * |
5420 * @param element the element representing the declaration of the function typ
e | 5817 * @param element the element representing the declaration of the function typ
e |
5421 */ | 5818 */ |
5422 FunctionTypeImpl.con2(FunctionTypeAliasElement element) : super(element, eleme
nt == null ? null : element.name) { | 5819 FunctionTypeImpl.con2(FunctionTypeAliasElement element) : super(element, eleme
nt == null ? null : element.name) { |
5423 _jtd_constructor_300_impl(element); | 5820 _jtd_constructor_300_impl(element); |
5424 } | 5821 } |
5425 _jtd_constructor_300_impl(FunctionTypeAliasElement element) { | 5822 _jtd_constructor_300_impl(FunctionTypeAliasElement element) { |
5426 } | 5823 } |
5427 bool operator ==(Object object) { | 5824 bool operator ==(Object object) { |
5428 if (object is! FunctionTypeImpl) { | 5825 if (object is! FunctionTypeImpl) { |
5429 return false; | 5826 return false; |
(...skipping 148 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
5578 } | 5975 } |
5579 } | 5976 } |
5580 } else if (s.namedParameterTypes.length > 0) { | 5977 } else if (s.namedParameterTypes.length > 0) { |
5581 return false; | 5978 return false; |
5582 } else { | 5979 } else { |
5583 int tArgLength = tTypes.length + tOpTypes.length; | 5980 int tArgLength = tTypes.length + tOpTypes.length; |
5584 int sArgLength = sTypes.length + sOpTypes.length; | 5981 int sArgLength = sTypes.length + sOpTypes.length; |
5585 if (tArgLength < sArgLength || sTypes.length < tTypes.length) { | 5982 if (tArgLength < sArgLength || sTypes.length < tTypes.length) { |
5586 return false; | 5983 return false; |
5587 } | 5984 } |
5588 List<Type2> tAllTypes = new List<Type2>(sArgLength); | 5985 if (tOpTypes.length == 0 && sOpTypes.length == 0) { |
5589 for (int i = 0; i < tTypes.length; i++) { | 5986 for (int i = 0; i < sTypes.length; i++) { |
5590 tAllTypes[i] = tTypes[i]; | 5987 if (!sTypes[i].isAssignableTo(tTypes[i])) { |
5591 } | 5988 return false; |
5592 for (int i = tTypes.length, j = 0; i < sArgLength; i++, j++) { | 5989 } |
5593 tAllTypes[i] = tOpTypes[j]; | 5990 } |
5594 } | 5991 } else { |
5595 List<Type2> sAllTypes = new List<Type2>(sArgLength); | 5992 List<Type2> tAllTypes = new List<Type2>(sArgLength); |
5596 for (int i = 0; i < sTypes.length; i++) { | 5993 for (int i = 0; i < tTypes.length; i++) { |
5597 sAllTypes[i] = sTypes[i]; | 5994 tAllTypes[i] = tTypes[i]; |
5598 } | 5995 } |
5599 for (int i = sTypes.length, j = 0; i < sArgLength; i++, j++) { | 5996 for (int i = tTypes.length, j = 0; i < sArgLength; i++, j++) { |
5600 sAllTypes[i] = sOpTypes[j]; | 5997 tAllTypes[i] = tOpTypes[j]; |
5601 } | 5998 } |
5602 for (int i = 0; i < sAllTypes.length; i++) { | 5999 List<Type2> sAllTypes = new List<Type2>(sArgLength); |
5603 if (!sAllTypes[i].isAssignableTo(tAllTypes[i])) { | 6000 for (int i = 0; i < sTypes.length; i++) { |
5604 return false; | 6001 sAllTypes[i] = sTypes[i]; |
| 6002 } |
| 6003 for (int i = sTypes.length, j = 0; i < sArgLength; i++, j++) { |
| 6004 sAllTypes[i] = sOpTypes[j]; |
| 6005 } |
| 6006 for (int i = 0; i < sAllTypes.length; i++) { |
| 6007 if (!sAllTypes[i].isAssignableTo(tAllTypes[i])) { |
| 6008 return false; |
| 6009 } |
5605 } | 6010 } |
5606 } | 6011 } |
5607 } | 6012 } |
5608 return s.returnType == VoidTypeImpl.instance || t.returnType.isAssignableTo(
s.returnType); | 6013 return s.returnType == VoidTypeImpl.instance || t.returnType.isAssignableTo(
s.returnType); |
5609 } | 6014 } |
5610 | 6015 |
5611 /** | 6016 /** |
5612 * Set the mapping of the names of named parameters to the types of the named
parameters of this | 6017 * Set the mapping of the names of named parameters to the types of the named
parameters of this |
5613 * type of function to the given mapping. | 6018 * type of function to the given mapping. |
| 6019 * |
5614 * @param namedParameterTypes the mapping of the names of named parameters to
the types of the | 6020 * @param namedParameterTypes the mapping of the names of named parameters to
the types of the |
5615 * named parameters of this type of function | 6021 * named parameters of this type of function |
5616 */ | 6022 */ |
5617 void set namedParameterTypes(LinkedHashMap<String, Type2> namedParameterTypes2
) { | 6023 void set namedParameterTypes(LinkedHashMap<String, Type2> namedParameterTypes2
) { |
5618 this._namedParameterTypes = namedParameterTypes2; | 6024 this._namedParameterTypes = namedParameterTypes2; |
5619 } | 6025 } |
5620 | 6026 |
5621 /** | 6027 /** |
5622 * Set the types of the normal parameters of this type of function to the type
s in the given | 6028 * Set the types of the normal parameters of this type of function to the type
s in the given |
5623 * array. | 6029 * array. |
| 6030 * |
5624 * @param normalParameterTypes the types of the normal parameters of this type
of function | 6031 * @param normalParameterTypes the types of the normal parameters of this type
of function |
5625 */ | 6032 */ |
5626 void set normalParameterTypes(List<Type2> normalParameterTypes2) { | 6033 void set normalParameterTypes(List<Type2> normalParameterTypes2) { |
5627 this._normalParameterTypes = normalParameterTypes2; | 6034 this._normalParameterTypes = normalParameterTypes2; |
5628 } | 6035 } |
5629 | 6036 |
5630 /** | 6037 /** |
5631 * Set the types of the optional parameters of this type of function to the ty
pes in the given | 6038 * Set the types of the optional parameters of this type of function to the ty
pes in the given |
5632 * array. | 6039 * array. |
| 6040 * |
5633 * @param optionalParameterTypes the types of the optional parameters of this
type of function | 6041 * @param optionalParameterTypes the types of the optional parameters of this
type of function |
5634 */ | 6042 */ |
5635 void set optionalParameterTypes(List<Type2> optionalParameterTypes2) { | 6043 void set optionalParameterTypes(List<Type2> optionalParameterTypes2) { |
5636 this._optionalParameterTypes = optionalParameterTypes2; | 6044 this._optionalParameterTypes = optionalParameterTypes2; |
5637 } | 6045 } |
5638 | 6046 |
5639 /** | 6047 /** |
5640 * Set the actual types of the type arguments to the given types. | 6048 * Set the actual types of the type arguments to the given types. |
| 6049 * |
5641 * @param typeArguments the actual types of the type arguments | 6050 * @param typeArguments the actual types of the type arguments |
5642 */ | 6051 */ |
5643 void set typeArguments(List<Type2> typeArguments2) { | 6052 void set typeArguments(List<Type2> typeArguments2) { |
5644 this._typeArguments = typeArguments2; | 6053 this._typeArguments = typeArguments2; |
5645 } | 6054 } |
5646 FunctionTypeImpl substitute4(List<Type2> argumentTypes) => substitute2(argumen
tTypes, typeArguments); | 6055 FunctionTypeImpl substitute4(List<Type2> argumentTypes) => substitute2(argumen
tTypes, typeArguments); |
5647 FunctionTypeImpl substitute2(List<Type2> argumentTypes, List<Type2> parameterT
ypes) { | 6056 FunctionTypeImpl substitute2(List<Type2> argumentTypes, List<Type2> parameterT
ypes) { |
5648 if (argumentTypes.length != parameterTypes.length) { | 6057 if (argumentTypes.length != parameterTypes.length) { |
5649 throw new IllegalArgumentException("argumentTypes.length (${argumentTypes.
length}) != parameterTypes.length (${parameterTypes.length})"); | 6058 throw new IllegalArgumentException("argumentTypes.length (${argumentTypes.
length}) != parameterTypes.length (${parameterTypes.length})"); |
5650 } | 6059 } |
(...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
5724 Element element = this.element; | 6133 Element element = this.element; |
5725 if (element is ExecutableElement) { | 6134 if (element is ExecutableElement) { |
5726 return ((element as ExecutableElement)).parameters; | 6135 return ((element as ExecutableElement)).parameters; |
5727 } else { | 6136 } else { |
5728 return ((element as FunctionTypeAliasElement)).parameters; | 6137 return ((element as FunctionTypeAliasElement)).parameters; |
5729 } | 6138 } |
5730 } | 6139 } |
5731 | 6140 |
5732 /** | 6141 /** |
5733 * Return the return type defined by this function's element. | 6142 * Return the return type defined by this function's element. |
| 6143 * |
5734 * @return the return type defined by this function's element | 6144 * @return the return type defined by this function's element |
5735 */ | 6145 */ |
5736 Type2 get baseReturnType { | 6146 Type2 get baseReturnType { |
5737 Element element = this.element; | 6147 Element element = this.element; |
5738 if (element is ExecutableElement) { | 6148 if (element is ExecutableElement) { |
5739 return ((element as ExecutableElement)).returnType; | 6149 return ((element as ExecutableElement)).returnType; |
5740 } else { | 6150 } else { |
5741 return ((element as FunctionTypeAliasElement)).returnType; | 6151 return ((element as FunctionTypeAliasElement)).returnType; |
5742 } | 6152 } |
5743 } | 6153 } |
5744 } | 6154 } |
5745 /** | 6155 /** |
5746 * Instances of the class `InterfaceTypeImpl` defines the behavior common to obj
ects | 6156 * Instances of the class `InterfaceTypeImpl` defines the behavior common to obj
ects |
5747 * representing the type introduced by either a class or an interface, or a refe
rence to such a | 6157 * representing the type introduced by either a class or an interface, or a refe
rence to such a |
5748 * type. | 6158 * type. |
| 6159 * |
5749 * @coverage dart.engine.type | 6160 * @coverage dart.engine.type |
5750 */ | 6161 */ |
5751 class InterfaceTypeImpl extends TypeImpl implements InterfaceType { | 6162 class InterfaceTypeImpl extends TypeImpl implements InterfaceType { |
5752 | 6163 |
5753 /** | 6164 /** |
5754 * An empty array of types. | 6165 * An empty array of types. |
5755 */ | 6166 */ |
5756 static List<InterfaceType> EMPTY_ARRAY = new List<InterfaceType>(0); | 6167 static List<InterfaceType> EMPTY_ARRAY = new List<InterfaceType>(0); |
5757 | 6168 |
5758 /** | 6169 /** |
5759 * This method computes the longest inheritance path from some passed [Type] t
o Object. | 6170 * This method computes the longest inheritance path from some passed [Type] t
o Object. |
5760 * @param type the [Type] to compute the longest inheritance path of from the
passed[Type] to Object | 6171 * |
| 6172 * @param type the [Type] to compute the longest inheritance path of from the
passed |
| 6173 * [Type] to Object |
5761 * @return the computed longest inheritance path to Object | 6174 * @return the computed longest inheritance path to Object |
5762 * @see InterfaceType#getLeastUpperBound(Type) | 6175 * @see InterfaceType#getLeastUpperBound(Type) |
5763 */ | 6176 */ |
5764 static int computeLongestInheritancePathToObject(InterfaceType type) => comput
eLongestInheritancePathToObject2(type, 0, new Set<ClassElement>()); | 6177 static int computeLongestInheritancePathToObject(InterfaceType type) => comput
eLongestInheritancePathToObject2(type, 0, new Set<ClassElement>()); |
5765 | 6178 |
5766 /** | 6179 /** |
5767 * Returns the set of all superinterfaces of the passed [Type]. | 6180 * Returns the set of all superinterfaces of the passed [Type]. |
| 6181 * |
5768 * @param type the [Type] to compute the set of superinterfaces of | 6182 * @param type the [Type] to compute the set of superinterfaces of |
5769 * @return the [Set] of superinterfaces of the passed [Type] | 6183 * @return the [Set] of superinterfaces of the passed [Type] |
5770 * @see #getLeastUpperBound(Type) | 6184 * @see #getLeastUpperBound(Type) |
5771 */ | 6185 */ |
5772 static Set<InterfaceType> computeSuperinterfaceSet(InterfaceType type) => comp
uteSuperinterfaceSet2(type, new Set<InterfaceType>()); | 6186 static Set<InterfaceType> computeSuperinterfaceSet(InterfaceType type) => comp
uteSuperinterfaceSet2(type, new Set<InterfaceType>()); |
5773 | 6187 |
5774 /** | 6188 /** |
5775 * This method computes the longest inheritance path from some passed [Type] t
o Object. This | 6189 * This method computes the longest inheritance path from some passed [Type] t
o Object. This |
5776 * method calls itself recursively, callers should use the public method[compu
teLongestInheritancePathToObject]. | 6190 * method calls itself recursively, callers should use the public method |
5777 * @param type the [Type] to compute the longest inheritance path of from the
passed[Type] to Object | 6191 * [computeLongestInheritancePathToObject]. |
| 6192 * |
| 6193 * @param type the [Type] to compute the longest inheritance path of from the
passed |
| 6194 * [Type] to Object |
5778 * @param depth a field used recursively | 6195 * @param depth a field used recursively |
5779 * @param visitedClasses the classes that have already been visited | 6196 * @param visitedClasses the classes that have already been visited |
5780 * @return the computed longest inheritance path to Object | 6197 * @return the computed longest inheritance path to Object |
5781 * @see #computeLongestInheritancePathToObject(Type) | 6198 * @see #computeLongestInheritancePathToObject(Type) |
5782 * @see #getLeastUpperBound(Type) | 6199 * @see #getLeastUpperBound(Type) |
5783 */ | 6200 */ |
5784 static int computeLongestInheritancePathToObject2(InterfaceType type, int dept
h, Set<ClassElement> visitedClasses) { | 6201 static int computeLongestInheritancePathToObject2(InterfaceType type, int dept
h, Set<ClassElement> visitedClasses) { |
5785 ClassElement classElement = type.element; | 6202 ClassElement classElement = type.element; |
5786 if (classElement.supertype == null || visitedClasses.contains(classElement))
{ | 6203 if (classElement.supertype == null || visitedClasses.contains(classElement))
{ |
5787 return depth; | 6204 return depth; |
(...skipping 18 matching lines...) Expand all Loading... |
5806 } | 6223 } |
5807 } finally { | 6224 } finally { |
5808 visitedClasses.remove(classElement); | 6225 visitedClasses.remove(classElement); |
5809 } | 6226 } |
5810 return longestPath; | 6227 return longestPath; |
5811 } | 6228 } |
5812 | 6229 |
5813 /** | 6230 /** |
5814 * Returns the set of all superinterfaces of the passed [Type]. This is a recu
rsive method, | 6231 * Returns the set of all superinterfaces of the passed [Type]. This is a recu
rsive method, |
5815 * callers should call the public [computeSuperinterfaceSet]. | 6232 * callers should call the public [computeSuperinterfaceSet]. |
| 6233 * |
5816 * @param type the [Type] to compute the set of superinterfaces of | 6234 * @param type the [Type] to compute the set of superinterfaces of |
5817 * @param set a [HashSet] used recursively by this method | 6235 * @param set a [HashSet] used recursively by this method |
5818 * @return the [Set] of superinterfaces of the passed [Type] | 6236 * @return the [Set] of superinterfaces of the passed [Type] |
5819 * @see #computeSuperinterfaceSet(Type) | 6237 * @see #computeSuperinterfaceSet(Type) |
5820 * @see #getLeastUpperBound(Type) | 6238 * @see #getLeastUpperBound(Type) |
5821 */ | 6239 */ |
5822 static Set<InterfaceType> computeSuperinterfaceSet2(InterfaceType type, Set<In
terfaceType> set) { | 6240 static Set<InterfaceType> computeSuperinterfaceSet2(InterfaceType type, Set<In
terfaceType> set) { |
5823 Element element = type.element; | 6241 Element element = type.element; |
5824 if (element != null && element is ClassElement) { | 6242 if (element != null && element is ClassElement) { |
5825 ClassElement classElement = element as ClassElement; | 6243 ClassElement classElement = element as ClassElement; |
(...skipping 12 matching lines...) Expand all Loading... |
5838 } | 6256 } |
5839 return set; | 6257 return set; |
5840 } | 6258 } |
5841 | 6259 |
5842 /** | 6260 /** |
5843 * Return the intersection of the given sets of types, where intersection is b
ased on the equality | 6261 * Return the intersection of the given sets of types, where intersection is b
ased on the equality |
5844 * of the elements of the types rather than on the equality of the types thems
elves. In cases | 6262 * of the elements of the types rather than on the equality of the types thems
elves. In cases |
5845 * where two non-equal types have equal elements, which only happens when the
class is | 6263 * where two non-equal types have equal elements, which only happens when the
class is |
5846 * parameterized, the type that is added to the intersection is the base type
with type arguments | 6264 * parameterized, the type that is added to the intersection is the base type
with type arguments |
5847 * that are the least upper bound of the type arguments of the two types. | 6265 * that are the least upper bound of the type arguments of the two types. |
| 6266 * |
5848 * @param first the first set of types to be intersected | 6267 * @param first the first set of types to be intersected |
5849 * @param second the second set of types to be intersected | 6268 * @param second the second set of types to be intersected |
5850 * @return the intersection of the given sets of types | 6269 * @return the intersection of the given sets of types |
5851 */ | 6270 */ |
5852 static List<InterfaceType> intersection(Set<InterfaceType> first, Set<Interfac
eType> second) { | 6271 static List<InterfaceType> intersection(Set<InterfaceType> first, Set<Interfac
eType> second) { |
5853 Map<ClassElement, InterfaceType> firstMap = new Map<ClassElement, InterfaceT
ype>(); | 6272 Map<ClassElement, InterfaceType> firstMap = new Map<ClassElement, InterfaceT
ype>(); |
5854 for (InterfaceType firstType in first) { | 6273 for (InterfaceType firstType in first) { |
5855 firstMap[firstType.element] = firstType; | 6274 firstMap[firstType.element] = firstType; |
5856 } | 6275 } |
5857 Set<InterfaceType> result = new Set<InterfaceType>(); | 6276 Set<InterfaceType> result = new Set<InterfaceType>(); |
5858 for (InterfaceType secondType in second) { | 6277 for (InterfaceType secondType in second) { |
5859 InterfaceType firstType = firstMap[secondType.element]; | 6278 InterfaceType firstType = firstMap[secondType.element]; |
5860 if (firstType != null) { | 6279 if (firstType != null) { |
5861 javaSetAdd(result, leastUpperBound(firstType, secondType)); | 6280 javaSetAdd(result, leastUpperBound(firstType, secondType)); |
5862 } | 6281 } |
5863 } | 6282 } |
5864 return new List.from(result); | 6283 return new List.from(result); |
5865 } | 6284 } |
5866 | 6285 |
5867 /** | 6286 /** |
5868 * Return the "least upper bound" of the given types under the assumption that
the types have the | 6287 * Return the "least upper bound" of the given types under the assumption that
the types have the |
5869 * same element and differ only in terms of the type arguments. The resulting
type is composed by | 6288 * same element and differ only in terms of the type arguments. The resulting
type is composed by |
5870 * comparing the corresponding type arguments, keeping those that are the same
, and using | 6289 * comparing the corresponding type arguments, keeping those that are the same
, and using |
5871 * 'dynamic' for those that are different. | 6290 * 'dynamic' for those that are different. |
| 6291 * |
5872 * @param firstType the first type | 6292 * @param firstType the first type |
5873 * @param secondType the second type | 6293 * @param secondType the second type |
5874 * @return the "least upper bound" of the given types | 6294 * @return the "least upper bound" of the given types |
5875 */ | 6295 */ |
5876 static InterfaceType leastUpperBound(InterfaceType firstType, InterfaceType se
condType) { | 6296 static InterfaceType leastUpperBound(InterfaceType firstType, InterfaceType se
condType) { |
5877 if (firstType == secondType) { | 6297 if (firstType == secondType) { |
5878 return firstType; | 6298 return firstType; |
5879 } | 6299 } |
5880 List<Type2> firstArguments = firstType.typeArguments; | 6300 List<Type2> firstArguments = firstType.typeArguments; |
5881 List<Type2> secondArguments = secondType.typeArguments; | 6301 List<Type2> secondArguments = secondType.typeArguments; |
(...skipping 15 matching lines...) Expand all Loading... |
5897 return lub; | 6317 return lub; |
5898 } | 6318 } |
5899 | 6319 |
5900 /** | 6320 /** |
5901 * An array containing the actual types of the type arguments. | 6321 * An array containing the actual types of the type arguments. |
5902 */ | 6322 */ |
5903 List<Type2> _typeArguments = TypeImpl.EMPTY_ARRAY; | 6323 List<Type2> _typeArguments = TypeImpl.EMPTY_ARRAY; |
5904 | 6324 |
5905 /** | 6325 /** |
5906 * Initialize a newly created type to be declared by the given element. | 6326 * Initialize a newly created type to be declared by the given element. |
| 6327 * |
5907 * @param element the element representing the declaration of the type | 6328 * @param element the element representing the declaration of the type |
5908 */ | 6329 */ |
5909 InterfaceTypeImpl.con1(ClassElement element) : super(element, element.displayN
ame) { | 6330 InterfaceTypeImpl.con1(ClassElement element) : super(element, element.displayN
ame) { |
5910 _jtd_constructor_301_impl(element); | 6331 _jtd_constructor_301_impl(element); |
5911 } | 6332 } |
5912 _jtd_constructor_301_impl(ClassElement element) { | 6333 _jtd_constructor_301_impl(ClassElement element) { |
5913 } | 6334 } |
5914 | 6335 |
5915 /** | 6336 /** |
5916 * Initialize a newly created type to have the given name. This constructor sh
ould only be used in | 6337 * Initialize a newly created type to have the given name. This constructor sh
ould only be used in |
5917 * cases where there is no declaration of the type. | 6338 * cases where there is no declaration of the type. |
| 6339 * |
5918 * @param name the name of the type | 6340 * @param name the name of the type |
5919 */ | 6341 */ |
5920 InterfaceTypeImpl.con2(String name) : super(null, name) { | 6342 InterfaceTypeImpl.con2(String name) : super(null, name) { |
5921 _jtd_constructor_302_impl(name); | 6343 _jtd_constructor_302_impl(name); |
5922 } | 6344 } |
5923 _jtd_constructor_302_impl(String name) { | 6345 _jtd_constructor_302_impl(String name) { |
5924 } | 6346 } |
5925 bool operator ==(Object object) { | 6347 bool operator ==(Object object) { |
5926 if (object is! InterfaceTypeImpl) { | 6348 if (object is! InterfaceTypeImpl) { |
5927 return false; | 6349 return false; |
(...skipping 158 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
6086 MethodElement callMethod = element.lookUpMethod("call", element.library); | 6508 MethodElement callMethod = element.lookUpMethod("call", element.library); |
6087 if (callMethod != null) { | 6509 if (callMethod != null) { |
6088 return callMethod.type.isSubtypeOf(type2); | 6510 return callMethod.type.isSubtypeOf(type2); |
6089 } | 6511 } |
6090 return false; | 6512 return false; |
6091 } else if (type2 is! InterfaceType) { | 6513 } else if (type2 is! InterfaceType) { |
6092 return false; | 6514 return false; |
6093 } else if (this == type2) { | 6515 } else if (this == type2) { |
6094 return true; | 6516 return true; |
6095 } | 6517 } |
6096 return isSubtypeOf2((type2 as InterfaceType), new Set<ClassElement>()); | 6518 InterfaceTypeImpl thisType = substitute2(<Type2> [BottomTypeImpl.instance],
<Type2> [DynamicTypeImpl.instance]); |
| 6519 return thisType.isSubtypeOf2((type2 as InterfaceType), new Set<ClassElement>
()); |
6097 } | 6520 } |
6098 ConstructorElement lookUpConstructor(String constructorName, LibraryElement li
brary) { | 6521 ConstructorElement lookUpConstructor(String constructorName, LibraryElement li
brary) { |
6099 ConstructorElement constructorElement; | 6522 ConstructorElement constructorElement; |
6100 if (constructorName == null) { | 6523 if (constructorName == null) { |
6101 constructorElement = element.unnamedConstructor; | 6524 constructorElement = element.unnamedConstructor; |
6102 } else { | 6525 } else { |
6103 constructorElement = element.getNamedConstructor(constructorName); | 6526 constructorElement = element.getNamedConstructor(constructorName); |
6104 } | 6527 } |
6105 if (constructorElement == null || !constructorElement.isAccessibleIn(library
)) { | 6528 if (constructorElement == null || !constructorElement.isAccessibleIn(library
)) { |
6106 return null; | 6529 return null; |
(...skipping 98 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
6205 } | 6628 } |
6206 } | 6629 } |
6207 supertype = supertype.superclass; | 6630 supertype = supertype.superclass; |
6208 supertypeElement = supertype == null ? null : supertype.element; | 6631 supertypeElement = supertype == null ? null : supertype.element; |
6209 } | 6632 } |
6210 return null; | 6633 return null; |
6211 } | 6634 } |
6212 | 6635 |
6213 /** | 6636 /** |
6214 * Set the actual types of the type arguments to those in the given array. | 6637 * Set the actual types of the type arguments to those in the given array. |
| 6638 * |
6215 * @param typeArguments the actual types of the type arguments | 6639 * @param typeArguments the actual types of the type arguments |
6216 */ | 6640 */ |
6217 void set typeArguments(List<Type2> typeArguments2) { | 6641 void set typeArguments(List<Type2> typeArguments2) { |
6218 this._typeArguments = typeArguments2; | 6642 this._typeArguments = typeArguments2; |
6219 } | 6643 } |
6220 InterfaceTypeImpl substitute5(List<Type2> argumentTypes) => substitute2(argume
ntTypes, typeArguments); | 6644 InterfaceTypeImpl substitute5(List<Type2> argumentTypes) => substitute2(argume
ntTypes, typeArguments); |
6221 InterfaceTypeImpl substitute2(List<Type2> argumentTypes, List<Type2> parameter
Types) { | 6645 InterfaceTypeImpl substitute2(List<Type2> argumentTypes, List<Type2> parameter
Types) { |
6222 if (argumentTypes.length != parameterTypes.length) { | 6646 if (argumentTypes.length != parameterTypes.length) { |
6223 throw new IllegalArgumentException("argumentTypes.length (${argumentTypes.
length}) != parameterTypes.length (${parameterTypes.length})"); | 6647 throw new IllegalArgumentException("argumentTypes.length (${argumentTypes.
length}) != parameterTypes.length (${parameterTypes.length})"); |
6224 } | 6648 } |
(...skipping 102 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
6327 if (((mixinType as InterfaceTypeImpl)).isSubtypeOf2(typeS, visitedClasses)
) { | 6751 if (((mixinType as InterfaceTypeImpl)).isSubtypeOf2(typeS, visitedClasses)
) { |
6328 return true; | 6752 return true; |
6329 } | 6753 } |
6330 } | 6754 } |
6331 return false; | 6755 return false; |
6332 } | 6756 } |
6333 } | 6757 } |
6334 /** | 6758 /** |
6335 * The abstract class `TypeImpl` implements the behavior common to objects repre
senting the | 6759 * The abstract class `TypeImpl` implements the behavior common to objects repre
senting the |
6336 * declared type of elements in the element model. | 6760 * declared type of elements in the element model. |
| 6761 * |
6337 * @coverage dart.engine.type | 6762 * @coverage dart.engine.type |
6338 */ | 6763 */ |
6339 abstract class TypeImpl implements Type2 { | 6764 abstract class TypeImpl implements Type2 { |
6340 | 6765 |
6341 /** | 6766 /** |
6342 * Return an array containing the results of using the given argument types an
d parameter types to | 6767 * Return an array containing the results of using the given argument types an
d parameter types to |
6343 * perform a substitution on all of the given types. | 6768 * perform a substitution on all of the given types. |
| 6769 * |
6344 * @param types the types on which a substitution is to be performed | 6770 * @param types the types on which a substitution is to be performed |
6345 * @param argumentTypes the argument types for the substitution | 6771 * @param argumentTypes the argument types for the substitution |
6346 * @param parameterTypes the parameter types for the substitution | 6772 * @param parameterTypes the parameter types for the substitution |
6347 * @return the result of performing the substitution on each of the types | 6773 * @return the result of performing the substitution on each of the types |
6348 */ | 6774 */ |
6349 static List<Type2> substitute(List<Type2> types, List<Type2> argumentTypes, Li
st<Type2> parameterTypes) { | 6775 static List<Type2> substitute(List<Type2> types, List<Type2> argumentTypes, Li
st<Type2> parameterTypes) { |
6350 int length = types.length; | 6776 int length = types.length; |
6351 if (length == 0) { | 6777 if (length == 0) { |
6352 return types; | 6778 return types; |
6353 } | 6779 } |
(...skipping 15 matching lines...) Expand all Loading... |
6369 */ | 6795 */ |
6370 String _name; | 6796 String _name; |
6371 | 6797 |
6372 /** | 6798 /** |
6373 * An empty array of types. | 6799 * An empty array of types. |
6374 */ | 6800 */ |
6375 static List<Type2> EMPTY_ARRAY = new List<Type2>(0); | 6801 static List<Type2> EMPTY_ARRAY = new List<Type2>(0); |
6376 | 6802 |
6377 /** | 6803 /** |
6378 * Initialize a newly created type to be declared by the given element and to
have the given name. | 6804 * Initialize a newly created type to be declared by the given element and to
have the given name. |
| 6805 * |
6379 * @param element the element representing the declaration of the type | 6806 * @param element the element representing the declaration of the type |
6380 * @param name the name of the type | 6807 * @param name the name of the type |
6381 */ | 6808 */ |
6382 TypeImpl(Element element, String name) { | 6809 TypeImpl(Element element, String name) { |
6383 this._element = element; | 6810 this._element = element; |
6384 this._name = name; | 6811 this._name = name; |
6385 } | 6812 } |
6386 String get displayName => name; | 6813 String get displayName => name; |
6387 Element get element => _element; | 6814 Element get element => _element; |
6388 Type2 getLeastUpperBound(Type2 type) => null; | 6815 Type2 getLeastUpperBound(Type2 type) => null; |
6389 String get name => _name; | 6816 String get name => _name; |
6390 bool isAssignableTo(Type2 type) => this.isSubtypeOf(type) || type.isSubtypeOf(
this); | 6817 bool isAssignableTo(Type2 type) => this.isSubtypeOf(type) || type.isSubtypeOf(
this); |
6391 bool get isDartCoreFunction => false; | 6818 bool get isDartCoreFunction => false; |
6392 bool get isDynamic => false; | 6819 bool get isDynamic => false; |
6393 bool isMoreSpecificThan(Type2 type) => false; | 6820 bool isMoreSpecificThan(Type2 type) => false; |
6394 bool get isObject => false; | 6821 bool get isObject => false; |
6395 bool isSupertypeOf(Type2 type) => type.isSubtypeOf(this); | 6822 bool isSupertypeOf(Type2 type) => type.isSubtypeOf(this); |
6396 bool get isVoid => false; | 6823 bool get isVoid => false; |
6397 String toString() { | 6824 String toString() { |
6398 JavaStringBuilder builder = new JavaStringBuilder(); | 6825 JavaStringBuilder builder = new JavaStringBuilder(); |
6399 appendTo(builder); | 6826 appendTo(builder); |
6400 return builder.toString(); | 6827 return builder.toString(); |
6401 } | 6828 } |
6402 | 6829 |
6403 /** | 6830 /** |
6404 * Append a textual representation of this type to the given builder. | 6831 * Append a textual representation of this type to the given builder. |
| 6832 * |
6405 * @param builder the builder to which the text is to be appended | 6833 * @param builder the builder to which the text is to be appended |
6406 */ | 6834 */ |
6407 void appendTo(JavaStringBuilder builder) { | 6835 void appendTo(JavaStringBuilder builder) { |
6408 if (_name == null) { | 6836 if (_name == null) { |
6409 builder.append("<unnamed type>"); | 6837 builder.append("<unnamed type>"); |
6410 } else { | 6838 } else { |
6411 builder.append(_name); | 6839 builder.append(_name); |
6412 } | 6840 } |
6413 } | 6841 } |
6414 } | 6842 } |
6415 /** | 6843 /** |
6416 * Instances of the class `TypeVariableTypeImpl` defines the behavior of objects
representing | 6844 * Instances of the class `TypeVariableTypeImpl` defines the behavior of objects
representing |
6417 * the type introduced by a type variable. | 6845 * the type introduced by a type variable. |
| 6846 * |
6418 * @coverage dart.engine.type | 6847 * @coverage dart.engine.type |
6419 */ | 6848 */ |
6420 class TypeVariableTypeImpl extends TypeImpl implements TypeVariableType { | 6849 class TypeVariableTypeImpl extends TypeImpl implements TypeVariableType { |
6421 | 6850 |
6422 /** | 6851 /** |
6423 * An empty array of type variable types. | 6852 * An empty array of type variable types. |
6424 */ | 6853 */ |
6425 static List<TypeVariableType> EMPTY_ARRAY = new List<TypeVariableType>(0); | 6854 static List<TypeVariableType> EMPTY_ARRAY = new List<TypeVariableType>(0); |
6426 | 6855 |
6427 /** | 6856 /** |
6428 * Return an array containing the type variable types defined by the given arr
ay of type variable | 6857 * Return an array containing the type variable types defined by the given arr
ay of type variable |
6429 * elements. | 6858 * elements. |
| 6859 * |
6430 * @param typeVariables the type variable elements defining the type variable
types to be returned | 6860 * @param typeVariables the type variable elements defining the type variable
types to be returned |
6431 * @return the type variable types defined by the type variable elements | 6861 * @return the type variable types defined by the type variable elements |
6432 */ | 6862 */ |
6433 static List<TypeVariableType> getTypes(List<TypeVariableElement> typeVariables
) { | 6863 static List<TypeVariableType> getTypes(List<TypeVariableElement> typeVariables
) { |
6434 int count = typeVariables.length; | 6864 int count = typeVariables.length; |
6435 if (count == 0) { | 6865 if (count == 0) { |
6436 return EMPTY_ARRAY; | 6866 return EMPTY_ARRAY; |
6437 } | 6867 } |
6438 List<TypeVariableType> types = new List<TypeVariableType>(count); | 6868 List<TypeVariableType> types = new List<TypeVariableType>(count); |
6439 for (int i = 0; i < count; i++) { | 6869 for (int i = 0; i < count; i++) { |
6440 types[i] = typeVariables[i].type; | 6870 types[i] = typeVariables[i].type; |
6441 } | 6871 } |
6442 return types; | 6872 return types; |
6443 } | 6873 } |
6444 | 6874 |
6445 /** | 6875 /** |
6446 * Initialize a newly created type variable to be declared by the given elemen
t and to have the | 6876 * Initialize a newly created type variable to be declared by the given elemen
t and to have the |
6447 * given name. | 6877 * given name. |
| 6878 * |
6448 * @param element the element representing the declaration of the type variabl
e | 6879 * @param element the element representing the declaration of the type variabl
e |
6449 */ | 6880 */ |
6450 TypeVariableTypeImpl(TypeVariableElement element) : super(element, element.nam
e) { | 6881 TypeVariableTypeImpl(TypeVariableElement element) : super(element, element.nam
e) { |
6451 } | 6882 } |
6452 bool operator ==(Object object) => object is TypeVariableTypeImpl && element =
= ((object as TypeVariableTypeImpl)).element; | 6883 bool operator ==(Object object) => object is TypeVariableTypeImpl && element =
= ((object as TypeVariableTypeImpl)).element; |
6453 TypeVariableElement get element => super.element as TypeVariableElement; | 6884 TypeVariableElement get element => super.element as TypeVariableElement; |
6454 int get hashCode => element.hashCode; | 6885 int get hashCode => element.hashCode; |
6455 bool isMoreSpecificThan(Type2 type) { | 6886 bool isMoreSpecificThan(Type2 type) { |
6456 Type2 upperBound = element.bound; | 6887 Type2 upperBound = element.bound; |
6457 return type == upperBound; | 6888 return type == upperBound; |
6458 } | 6889 } |
6459 bool isSubtypeOf(Type2 type) => true; | 6890 bool isSubtypeOf(Type2 type) => true; |
6460 Type2 substitute2(List<Type2> argumentTypes, List<Type2> parameterTypes) { | 6891 Type2 substitute2(List<Type2> argumentTypes, List<Type2> parameterTypes) { |
6461 int length = parameterTypes.length; | 6892 int length = parameterTypes.length; |
6462 for (int i = 0; i < length; i++) { | 6893 for (int i = 0; i < length; i++) { |
6463 if (parameterTypes[i] == this) { | 6894 if (parameterTypes[i] == this) { |
6464 return argumentTypes[i]; | 6895 return argumentTypes[i]; |
6465 } | 6896 } |
6466 } | 6897 } |
6467 return this; | 6898 return this; |
6468 } | 6899 } |
6469 } | 6900 } |
6470 /** | 6901 /** |
6471 * The unique instance of the class `VoidTypeImpl` implements the type `void`. | 6902 * The unique instance of the class `VoidTypeImpl` implements the type `void`. |
| 6903 * |
6472 * @coverage dart.engine.type | 6904 * @coverage dart.engine.type |
6473 */ | 6905 */ |
6474 class VoidTypeImpl extends TypeImpl implements VoidType { | 6906 class VoidTypeImpl extends TypeImpl implements VoidType { |
6475 | 6907 |
6476 /** | 6908 /** |
6477 * The unique instance of this class. | 6909 * The unique instance of this class. |
6478 */ | 6910 */ |
6479 static VoidTypeImpl _INSTANCE = new VoidTypeImpl(); | 6911 static VoidTypeImpl _INSTANCE = new VoidTypeImpl(); |
6480 | 6912 |
6481 /** | 6913 /** |
6482 * Return the unique instance of this class. | 6914 * Return the unique instance of this class. |
| 6915 * |
6483 * @return the unique instance of this class | 6916 * @return the unique instance of this class |
6484 */ | 6917 */ |
6485 static VoidTypeImpl get instance => _INSTANCE; | 6918 static VoidTypeImpl get instance => _INSTANCE; |
6486 | 6919 |
6487 /** | 6920 /** |
6488 * Prevent the creation of instances of this class. | 6921 * Prevent the creation of instances of this class. |
6489 */ | 6922 */ |
6490 VoidTypeImpl() : super(null, Keyword.VOID.syntax) { | 6923 VoidTypeImpl() : super(null, Keyword.VOID.syntax) { |
6491 } | 6924 } |
6492 bool operator ==(Object object) => identical(object, this); | 6925 bool operator ==(Object object) => identical(object, this); |
6493 bool isSubtypeOf(Type2 type) => identical(type, this) || identical(type, Dynam
icTypeImpl.instance); | 6926 bool isSubtypeOf(Type2 type) => identical(type, this) || identical(type, Dynam
icTypeImpl.instance); |
6494 bool get isVoid => true; | 6927 bool get isVoid => true; |
6495 VoidTypeImpl substitute2(List<Type2> argumentTypes, List<Type2> parameterTypes
) => this; | 6928 VoidTypeImpl substitute2(List<Type2> argumentTypes, List<Type2> parameterTypes
) => this; |
6496 } | 6929 } |
6497 /** | 6930 /** |
6498 * The interface `FunctionType` defines the behavior common to objects represent
ing the type | 6931 * The interface `FunctionType` defines the behavior common to objects represent
ing the type |
6499 * of a function, method, constructor, getter, or setter. Function types come in
three variations: | 6932 * of a function, method, constructor, getter, or setter. Function types come in
three variations: |
6500 * <ol> | 6933 * <ol> |
6501 * * The types of functions that only have required parameters. These have the g
eneral form | 6934 * * The types of functions that only have required parameters. These have the g
eneral form |
6502 * <i>(T<sub>1</sub>, …, T<sub>n</sub>) → T</i>. | 6935 * <i>(T<sub>1</sub>, …, T<sub>n</sub>) → T</i>. |
6503 * * The types of functions with optional positional parameters. These have the
general form | 6936 * * The types of functions with optional positional parameters. These have the
general form |
6504 * <i>(T<sub>1</sub>, …, T<sub>n</sub>, \[T<sub>n+1</sub>, …, T<su
b>n+k</sub>\]) → | 6937 * <i>(T<sub>1</sub>, …, T<sub>n</sub>, [T<sub>n+1</sub>, …, T<sub
>n+k</sub>]) → |
6505 * T</i>. | 6938 * T</i>. |
6506 * * The types of functions with named parameters. These have the general form <
i>(T<sub>1</sub>, | 6939 * * The types of functions with named parameters. These have the general form <
i>(T<sub>1</sub>, |
6507 * …, T<sub>n</sub>, {T<sub>x1</sub> x1, …, T<sub>xk</sub> xk}) &r
arr; T</i>. | 6940 * …, T<sub>n</sub>, {T<sub>x1</sub> x1, …, T<sub>xk</sub> xk}) &r
arr; T</i>. |
6508 * </ol> | 6941 * </ol> |
| 6942 * |
6509 * @coverage dart.engine.type | 6943 * @coverage dart.engine.type |
6510 */ | 6944 */ |
6511 abstract class FunctionType implements ParameterizedType { | 6945 abstract class FunctionType implements ParameterizedType { |
6512 | 6946 |
6513 /** | 6947 /** |
6514 * Return a map from the names of named parameters to the types of the named p
arameters of this | 6948 * Return a map from the names of named parameters to the types of the named p
arameters of this |
6515 * type of function. The entries in the map will be iterated in the same order
as the order in | 6949 * type of function. The entries in the map will be iterated in the same order
as the order in |
6516 * which the named parameters were defined. If there were no named parameters
declared then the | 6950 * which the named parameters were defined. If there were no named parameters
declared then the |
6517 * map will be empty. | 6951 * map will be empty. |
| 6952 * |
6518 * @return a map from the name to the types of the named parameters of this ty
pe of function | 6953 * @return a map from the name to the types of the named parameters of this ty
pe of function |
6519 */ | 6954 */ |
6520 Map<String, Type2> get namedParameterTypes; | 6955 Map<String, Type2> get namedParameterTypes; |
6521 | 6956 |
6522 /** | 6957 /** |
6523 * Return an array containing the types of the normal parameters of this type
of function. The | 6958 * Return an array containing the types of the normal parameters of this type
of function. The |
6524 * parameter types are in the same order as they appear in the declaration of
the function. | 6959 * parameter types are in the same order as they appear in the declaration of
the function. |
| 6960 * |
6525 * @return the types of the normal parameters of this type of function | 6961 * @return the types of the normal parameters of this type of function |
6526 */ | 6962 */ |
6527 List<Type2> get normalParameterTypes; | 6963 List<Type2> get normalParameterTypes; |
6528 | 6964 |
6529 /** | 6965 /** |
6530 * Return a map from the names of optional (positional) parameters to the type
s of the optional | 6966 * Return a map from the names of optional (positional) parameters to the type
s of the optional |
6531 * parameters of this type of function. The entries in the map will be iterate
d in the same order | 6967 * parameters of this type of function. The entries in the map will be iterate
d in the same order |
6532 * as the order in which the optional parameters were defined. If there were n
o optional | 6968 * as the order in which the optional parameters were defined. If there were n
o optional |
6533 * parameters declared then the map will be empty. | 6969 * parameters declared then the map will be empty. |
| 6970 * |
6534 * @return a map from the name to the types of the optional parameters of this
type of function | 6971 * @return a map from the name to the types of the optional parameters of this
type of function |
6535 */ | 6972 */ |
6536 List<Type2> get optionalParameterTypes; | 6973 List<Type2> get optionalParameterTypes; |
6537 | 6974 |
6538 /** | 6975 /** |
6539 * Return an array containing the parameters elements of this type of function
. The parameter | 6976 * Return an array containing the parameters elements of this type of function
. The parameter |
6540 * types are in the same order as they appear in the declaration of the functi
on. | 6977 * types are in the same order as they appear in the declaration of the functi
on. |
| 6978 * |
6541 * @return the parameters elements of this type of function | 6979 * @return the parameters elements of this type of function |
6542 */ | 6980 */ |
6543 List<ParameterElement> get parameters; | 6981 List<ParameterElement> get parameters; |
6544 | 6982 |
6545 /** | 6983 /** |
6546 * Return the type of object returned by this type of function. | 6984 * Return the type of object returned by this type of function. |
| 6985 * |
6547 * @return the type of object returned by this type of function | 6986 * @return the type of object returned by this type of function |
6548 */ | 6987 */ |
6549 Type2 get returnType; | 6988 Type2 get returnType; |
6550 | 6989 |
6551 /** | 6990 /** |
6552 * Return `true` if this type is a subtype of the given type. | 6991 * Return `true` if this type is a subtype of the given type. |
6553 * | 6992 * |
6554 * A function type <i>(T<sub>1</sub>, …, T<sub>n</sub>) → T</i> is
a subtype of the | 6993 * A function type <i>(T<sub>1</sub>, …, T<sub>n</sub>) → T</i> is
a subtype of the |
6555 * function type <i>(S<sub>1</sub>, …, S<sub>n</sub>) → S</i>, if
all of the following | 6994 * function type <i>(S<sub>1</sub>, …, S<sub>n</sub>) → S</i>, if
all of the following |
6556 * conditions are met: | 6995 * conditions are met: |
6557 * | 6996 * |
6558 * * Either | 6997 * * Either |
6559 * | 6998 * |
6560 * * <i>S</i> is void, or | 6999 * * <i>S</i> is void, or |
6561 * * <i>T ⇔ S</i>. | 7000 * * <i>T ⇔ S</i>. |
6562 * | 7001 * |
6563 * | 7002 * |
6564 * * For all <i>i</i>, 1 <= <i>i</i> <= <i>n</i>, <i>T<sub>i</sub> ⇔ S<su
b>i</sub></i>. | 7003 * * For all <i>i</i>, 1 <= <i>i</i> <= <i>n</i>, <i>T<sub>i</sub> ⇔ S<su
b>i</sub></i>. |
6565 * | 7004 * |
6566 * A function type <i>(T<sub>1</sub>, …, T<sub>n</sub>, \[T<sub>n+1</su
b>, …, | 7005 * A function type <i>(T<sub>1</sub>, …, T<sub>n</sub>, [T<sub>n+1</sub
>, …, |
6567 * T<sub>n+k</sub>\]) → T</i> is a subtype of the function type <i>(S<sub
>1</sub>, …, | 7006 * T<sub>n+k</sub>]) → T</i> is a subtype of the function type <i>(S<sub>
1</sub>, …, |
6568 * S<sub>n</sub>, \[S<sub>n+1</sub>, …, S<sub>n+m</sub>\]) → S</i>
, if all of the | 7007 * S<sub>n</sub>, [S<sub>n+1</sub>, …, S<sub>n+m</sub>]) → S</i>,
if all of the |
6569 * following conditions are met: | 7008 * following conditions are met: |
6570 * | 7009 * |
6571 * * Either | 7010 * * Either |
6572 * | 7011 * |
6573 * * <i>S</i> is void, or | 7012 * * <i>S</i> is void, or |
6574 * * <i>T ⇔ S</i>. | 7013 * * <i>T ⇔ S</i>. |
6575 * | 7014 * |
6576 * | 7015 * |
6577 * * <i>k</i> >= <i>m</i> and for all <i>i</i>, 1 <= <i>i</i> <= <i>n+m</i>, <
i>T<sub>i</sub> | 7016 * * <i>k</i> >= <i>m</i> and for all <i>i</i>, 1 <= <i>i</i> <= <i>n+m</i>, <
i>T<sub>i</sub> |
6578 * ⇔ S<sub>i</sub></i>. | 7017 * ⇔ S<sub>i</sub></i>. |
(...skipping 10 matching lines...) Expand all Loading... |
6589 * | 7028 * |
6590 * | 7029 * |
6591 * * For all <i>i</i>, 1 <= <i>i</i> <= <i>n</i>, <i>T<sub>i</sub> ⇔ S<su
b>i</sub></i>. | 7030 * * For all <i>i</i>, 1 <= <i>i</i> <= <i>n</i>, <i>T<sub>i</sub> ⇔ S<su
b>i</sub></i>. |
6592 * * <i>k</i> >= <i>m</i> and <i>y<sub>i</sub></i> in <i>{x<sub>1</sub>, &hell
ip;, | 7031 * * <i>k</i> >= <i>m</i> and <i>y<sub>i</sub></i> in <i>{x<sub>1</sub>, &hell
ip;, |
6593 * x<sub>k</sub>}</i>, 1 <= <i>i</i> <= <i>m</i>. | 7032 * x<sub>k</sub>}</i>, 1 <= <i>i</i> <= <i>m</i>. |
6594 * * For all <i>y<sub>i</sub></i> in <i>{y<sub>1</sub>, …, y<sub>m</sub
>}</i>, | 7033 * * For all <i>y<sub>i</sub></i> in <i>{y<sub>1</sub>, …, y<sub>m</sub
>}</i>, |
6595 * <i>y<sub>i</sub> = x<sub>j</sub> => Tj ⇔ Si</i>. | 7034 * <i>y<sub>i</sub> = x<sub>j</sub> => Tj ⇔ Si</i>. |
6596 * | 7035 * |
6597 * In addition, the following subtype rules apply: | 7036 * In addition, the following subtype rules apply: |
6598 * | 7037 * |
6599 * <i>(T<sub>1</sub>, …, T<sub>n</sub>, \[\]) → T <: (T<sub>1</sub
>, …, | 7038 * <i>(T<sub>1</sub>, …, T<sub>n</sub>, []) → T <: (T<sub>1</sub>,
…, |
6600 * T<sub>n</sub>) → T.</i><br> | 7039 * T<sub>n</sub>) → T.</i><br> |
6601 * <i>(T<sub>1</sub>, …, T<sub>n</sub>) → T <: (T<sub>1</sub>, &he
llip;, | 7040 * <i>(T<sub>1</sub>, …, T<sub>n</sub>) → T <: (T<sub>1</sub>, &he
llip;, |
6602 * T<sub>n</sub>, {}) → T.</i><br> | 7041 * T<sub>n</sub>, {}) → T.</i><br> |
6603 * <i>(T<sub>1</sub>, …, T<sub>n</sub>, {}) → T <: (T<sub>1</sub>,
…, | 7042 * <i>(T<sub>1</sub>, …, T<sub>n</sub>, {}) → T <: (T<sub>1</sub>,
…, |
6604 * T<sub>n</sub>) → T.</i><br> | 7043 * T<sub>n</sub>) → T.</i><br> |
6605 * <i>(T<sub>1</sub>, …, T<sub>n</sub>) → T <: (T<sub>1</sub>, &he
llip;, | 7044 * <i>(T<sub>1</sub>, …, T<sub>n</sub>) → T <: (T<sub>1</sub>, &he
llip;, |
6606 * T<sub>n</sub>, \[\]) → T.</i> | 7045 * T<sub>n</sub>, []) → T.</i> |
6607 * | 7046 * |
6608 * All functions implement the class `Function`. However not all function type
s are a | 7047 * All functions implement the class `Function`. However not all function type
s are a |
6609 * subtype of `Function`. If an interface type <i>I</i> includes a method name
d`call()`, and the type of `call()` is the function type <i>F</i>, then <i>I</i>
is | 7048 * subtype of `Function`. If an interface type <i>I</i> includes a method name
d |
| 7049 * `call()`, and the type of `call()` is the function type <i>F</i>, then <i>I
</i> is |
6610 * considered to be a subtype of <i>F</i>. | 7050 * considered to be a subtype of <i>F</i>. |
| 7051 * |
6611 * @param type the type being compared with this type | 7052 * @param type the type being compared with this type |
6612 * @return `true` if this type is a subtype of the given type | 7053 * @return `true` if this type is a subtype of the given type |
6613 */ | 7054 */ |
6614 bool isSubtypeOf(Type2 type); | 7055 bool isSubtypeOf(Type2 type); |
6615 | 7056 |
6616 /** | 7057 /** |
6617 * Return the type resulting from substituting the given arguments for this ty
pe's parameters. | 7058 * Return the type resulting from substituting the given arguments for this ty
pe's parameters. |
6618 * This is fully equivalent to `substitute(argumentTypes, getTypeArguments())`
. | 7059 * This is fully equivalent to `substitute(argumentTypes, getTypeArguments())`
. |
| 7060 * |
6619 * @param argumentTypes the actual type arguments being substituted for the ty
pe parameters | 7061 * @param argumentTypes the actual type arguments being substituted for the ty
pe parameters |
6620 * @return the result of performing the substitution | 7062 * @return the result of performing the substitution |
6621 */ | 7063 */ |
6622 FunctionType substitute4(List<Type2> argumentTypes); | 7064 FunctionType substitute4(List<Type2> argumentTypes); |
6623 FunctionType substitute2(List<Type2> argumentTypes, List<Type2> parameterTypes
); | 7065 FunctionType substitute2(List<Type2> argumentTypes, List<Type2> parameterTypes
); |
6624 } | 7066 } |
6625 /** | 7067 /** |
6626 * The interface `InterfaceType` defines the behavior common to objects represen
ting the type | 7068 * The interface `InterfaceType` defines the behavior common to objects represen
ting the type |
6627 * introduced by either a class or an interface, or a reference to such a type. | 7069 * introduced by either a class or an interface, or a reference to such a type. |
| 7070 * |
6628 * @coverage dart.engine.type | 7071 * @coverage dart.engine.type |
6629 */ | 7072 */ |
6630 abstract class InterfaceType implements ParameterizedType { | 7073 abstract class InterfaceType implements ParameterizedType { |
6631 | 7074 |
6632 /** | 7075 /** |
6633 * Return an array containing all of the accessors (getters and setters) decla
red in this type. | 7076 * Return an array containing all of the accessors (getters and setters) decla
red in this type. |
| 7077 * |
6634 * @return the accessors declared in this type | 7078 * @return the accessors declared in this type |
6635 */ | 7079 */ |
6636 List<PropertyAccessorElement> get accessors; | 7080 List<PropertyAccessorElement> get accessors; |
6637 ClassElement get element; | 7081 ClassElement get element; |
6638 | 7082 |
6639 /** | 7083 /** |
6640 * Return the element representing the getter with the given name that is decl
ared in this class, | 7084 * Return the element representing the getter with the given name that is decl
ared in this class, |
6641 * or `null` if this class does not declare a getter with the given name. | 7085 * or `null` if this class does not declare a getter with the given name. |
| 7086 * |
6642 * @param getterName the name of the getter to be returned | 7087 * @param getterName the name of the getter to be returned |
6643 * @return the getter declared in this class with the given name | 7088 * @return the getter declared in this class with the given name |
6644 */ | 7089 */ |
6645 PropertyAccessorElement getGetter(String getterName); | 7090 PropertyAccessorElement getGetter(String getterName); |
6646 | 7091 |
6647 /** | 7092 /** |
6648 * Return an array containing all of the interfaces that are implemented by th
is interface. Note | 7093 * Return an array containing all of the interfaces that are implemented by th
is interface. Note |
6649 * that this is <b>not</b>, in general, equivalent to getting the interfaces f
rom this type's | 7094 * that this is <b>not</b>, in general, equivalent to getting the interfaces f
rom this type's |
6650 * element because the types returned by this method will have had their type
parameters replaced. | 7095 * element because the types returned by this method will have had their type
parameters replaced. |
| 7096 * |
6651 * @return the interfaces that are implemented by this type | 7097 * @return the interfaces that are implemented by this type |
6652 */ | 7098 */ |
6653 List<InterfaceType> get interfaces; | 7099 List<InterfaceType> get interfaces; |
6654 | 7100 |
6655 /** | 7101 /** |
6656 * Return the least upper bound of this type and the given type, or `null` if
there is no | 7102 * Return the least upper bound of this type and the given type, or `null` if
there is no |
6657 * least upper bound. | 7103 * least upper bound. |
6658 * | 7104 * |
6659 * Given two interfaces <i>I</i> and <i>J</i>, let <i>S<sub>I</sub></i> be the
set of | 7105 * Given two interfaces <i>I</i> and <i>J</i>, let <i>S<sub>I</sub></i> be the
set of |
6660 * superinterfaces of <i>I<i>, let <i>S<sub>J</sub></i> be the set of superint
erfaces of <i>J</i> | 7106 * superinterfaces of <i>I<i>, let <i>S<sub>J</sub></i> be the set of superint
erfaces of <i>J</i> |
6661 * and let <i>S = (I ∪ S<sub>I</sub>) ∩ (J ∪ S<sub>J</sub>)</i>. F
urthermore, we | 7107 * and let <i>S = (I ∪ S<sub>I</sub>) ∩ (J ∪ S<sub>J</sub>)</i>. F
urthermore, we |
6662 * define <i>S<sub>n</sub> = {T | T ∈ S ∧ depth(T) = n}</i> for any f
inite <i>n</i>, | 7108 * define <i>S<sub>n</sub> = {T | T ∈ S ∧ depth(T) = n}</i> for any f
inite <i>n</i>, |
6663 * where <i>depth(T)</i> is the number of steps in the longest inheritance pat
h from <i>T</i> to | 7109 * where <i>depth(T)</i> is the number of steps in the longest inheritance pat
h from <i>T</i> to |
6664 * <i>Object</i>. Let <i>q</i> be the largest number such that <i>S<sub>q</sub
></i> has | 7110 * <i>Object</i>. Let <i>q</i> be the largest number such that <i>S<sub>q</sub
></i> has |
6665 * cardinality one. The least upper bound of <i>I</i> and <i>J</i> is the sole
element of | 7111 * cardinality one. The least upper bound of <i>I</i> and <i>J</i> is the sole
element of |
6666 * <i>S<sub>q</sub></i>. | 7112 * <i>S<sub>q</sub></i>. |
| 7113 * |
6667 * @param type the other type used to compute the least upper bound | 7114 * @param type the other type used to compute the least upper bound |
6668 * @return the least upper bound of this type and the given type | 7115 * @return the least upper bound of this type and the given type |
6669 */ | 7116 */ |
6670 Type2 getLeastUpperBound(Type2 type); | 7117 Type2 getLeastUpperBound(Type2 type); |
6671 | 7118 |
6672 /** | 7119 /** |
6673 * Return the element representing the method with the given name that is decl
ared in this class, | 7120 * Return the element representing the method with the given name that is decl
ared in this class, |
6674 * or `null` if this class does not declare a method with the given name. | 7121 * or `null` if this class does not declare a method with the given name. |
| 7122 * |
6675 * @param methodName the name of the method to be returned | 7123 * @param methodName the name of the method to be returned |
6676 * @return the method declared in this class with the given name | 7124 * @return the method declared in this class with the given name |
6677 */ | 7125 */ |
6678 MethodElement getMethod(String methodName); | 7126 MethodElement getMethod(String methodName); |
6679 | 7127 |
6680 /** | 7128 /** |
6681 * Return an array containing all of the methods declared in this type. | 7129 * Return an array containing all of the methods declared in this type. |
| 7130 * |
6682 * @return the methods declared in this type | 7131 * @return the methods declared in this type |
6683 */ | 7132 */ |
6684 List<MethodElement> get methods; | 7133 List<MethodElement> get methods; |
6685 | 7134 |
6686 /** | 7135 /** |
6687 * Return an array containing all of the mixins that are applied to the class
being extended in | 7136 * Return an array containing all of the mixins that are applied to the class
being extended in |
6688 * order to derive the superclass of this class. Note that this is <b>not</b>,
in general, | 7137 * order to derive the superclass of this class. Note that this is <b>not</b>,
in general, |
6689 * equivalent to getting the mixins from this type's element because the types
returned by this | 7138 * equivalent to getting the mixins from this type's element because the types
returned by this |
6690 * method will have had their type parameters replaced. | 7139 * method will have had their type parameters replaced. |
| 7140 * |
6691 * @return the mixins that are applied to derive the superclass of this class | 7141 * @return the mixins that are applied to derive the superclass of this class |
6692 */ | 7142 */ |
6693 List<InterfaceType> get mixins; | 7143 List<InterfaceType> get mixins; |
6694 | 7144 |
6695 /** | 7145 /** |
6696 * Return the element representing the setter with the given name that is decl
ared in this class, | 7146 * Return the element representing the setter with the given name that is decl
ared in this class, |
6697 * or `null` if this class does not declare a setter with the given name. | 7147 * or `null` if this class does not declare a setter with the given name. |
| 7148 * |
6698 * @param setterName the name of the setter to be returned | 7149 * @param setterName the name of the setter to be returned |
6699 * @return the setter declared in this class with the given name | 7150 * @return the setter declared in this class with the given name |
6700 */ | 7151 */ |
6701 PropertyAccessorElement getSetter(String setterName); | 7152 PropertyAccessorElement getSetter(String setterName); |
6702 | 7153 |
6703 /** | 7154 /** |
6704 * Return the type representing the superclass of this type, or null if this t
ype represents the | 7155 * Return the type representing the superclass of this type, or null if this t
ype represents the |
6705 * class 'Object'. Note that this is <b>not</b>, in general, equivalent to get
ting the superclass | 7156 * class 'Object'. Note that this is <b>not</b>, in general, equivalent to get
ting the superclass |
6706 * from this type's element because the type returned by this method will have
had it's type | 7157 * from this type's element because the type returned by this method will have
had it's type |
6707 * parameters replaced. | 7158 * parameters replaced. |
| 7159 * |
6708 * @return the superclass of this type | 7160 * @return the superclass of this type |
6709 */ | 7161 */ |
6710 InterfaceType get superclass; | 7162 InterfaceType get superclass; |
6711 | 7163 |
6712 /** | 7164 /** |
6713 * Return `true` if this type is a direct supertype of the given type. The imp
licit | 7165 * Return `true` if this type is a direct supertype of the given type. The imp
licit |
6714 * interface of class <i>I</i> is a direct supertype of the implicit interface
of class <i>J</i> | 7166 * interface of class <i>I</i> is a direct supertype of the implicit interface
of class <i>J</i> |
6715 * iff: | 7167 * iff: |
6716 * | 7168 * |
6717 * * <i>I</i> is Object, and <i>J</i> has no extends clause. | 7169 * * <i>I</i> is Object, and <i>J</i> has no extends clause. |
6718 * * <i>I</i> is listed in the extends clause of <i>J</i>. | 7170 * * <i>I</i> is listed in the extends clause of <i>J</i>. |
6719 * * <i>I</i> is listed in the implements clause of <i>J</i>. | 7171 * * <i>I</i> is listed in the implements clause of <i>J</i>. |
6720 * * <i>I</i> is listed in the with clause of <i>J</i>. | 7172 * * <i>I</i> is listed in the with clause of <i>J</i>. |
6721 * * <i>J</i> is a mixin application of the mixin of <i>I</i>. | 7173 * * <i>J</i> is a mixin application of the mixin of <i>I</i>. |
6722 * | 7174 * |
| 7175 * |
6723 * @param type the type being compared with this type | 7176 * @param type the type being compared with this type |
6724 * @return `true` if this type is a direct supertype of the given type | 7177 * @return `true` if this type is a direct supertype of the given type |
6725 */ | 7178 */ |
6726 bool isDirectSupertypeOf(InterfaceType type); | 7179 bool isDirectSupertypeOf(InterfaceType type); |
6727 | 7180 |
6728 /** | 7181 /** |
6729 * Return `true` if this type is more specific than the given type. An interfa
ce type | 7182 * Return `true` if this type is more specific than the given type. An interfa
ce type |
6730 * <i>T</i> is more specific than an interface type <i>S</i>, written <i>T &la
quo; S</i>, if one | 7183 * <i>T</i> is more specific than an interface type <i>S</i>, written <i>T &la
quo; S</i>, if one |
6731 * of the following conditions is met: | 7184 * of the following conditions is met: |
6732 * | 7185 * |
6733 * * Reflexivity: <i>T</i> is <i>S</i>. | 7186 * * Reflexivity: <i>T</i> is <i>S</i>. |
6734 * * <i>T</i> is bottom. | 7187 * * <i>T</i> is bottom. |
6735 * * <i>S</i> is dynamic. | 7188 * * <i>S</i> is dynamic. |
6736 * * Direct supertype: <i>S</i> is a direct supertype of <i>T</i>. | 7189 * * Direct supertype: <i>S</i> is a direct supertype of <i>T</i>. |
6737 * * <i>T</i> is a type variable and <i>S</i> is the upper bound of <i>T</i>. | 7190 * * <i>T</i> is a type variable and <i>S</i> is the upper bound of <i>T</i>. |
6738 * * Covariance: <i>T</i> is of the form <i>I<T<sub>1</sub>, …, T<su
b>n</sub>></i> | 7191 * * Covariance: <i>T</i> is of the form <i>I<T<sub>1</sub>, …, T<su
b>n</sub>></i> |
6739 * and S</i> is of the form <i>I<S<sub>1</sub>, …, S<sub>n</sub>>
</i> and | 7192 * and S</i> is of the form <i>I<S<sub>1</sub>, …, S<sub>n</sub>>
</i> and |
6740 * <i>T<sub>i</sub> « S<sub>i</sub></i>, <i>1 <= i <= n</i>. | 7193 * <i>T<sub>i</sub> « S<sub>i</sub></i>, <i>1 <= i <= n</i>. |
6741 * * Transitivity: <i>T « U</i> and <i>U « S</i>. | 7194 * * Transitivity: <i>T « U</i> and <i>U « S</i>. |
6742 * | 7195 * |
| 7196 * |
6743 * @param type the type being compared with this type | 7197 * @param type the type being compared with this type |
6744 * @return `true` if this type is more specific than the given type | 7198 * @return `true` if this type is more specific than the given type |
6745 */ | 7199 */ |
6746 bool isMoreSpecificThan(Type2 type); | 7200 bool isMoreSpecificThan(Type2 type); |
6747 | 7201 |
6748 /** | 7202 /** |
6749 * Return `true` if this type is a subtype of the given type. An interface typ
e <i>T</i> is | 7203 * Return `true` if this type is a subtype of the given type. An interface typ
e <i>T</i> is |
6750 * a subtype of an interface type <i>S</i>, written <i>T</i> <: <i>S</i>, iff | 7204 * a subtype of an interface type <i>S</i>, written <i>T</i> <: <i>S</i>, iff |
6751 * <i>\[bottom/dynamic\]T</i> « <i>S</i> (<i>T</i> is more specific than
<i>S</i>). If an | 7205 * <i>[bottom/dynamic]T</i> « <i>S</i> (<i>T</i> is more specific than <
i>S</i>). If an |
6752 * interface type <i>I</i> includes a method named <i>call()</i>, and the type
of <i>call()</i> is | 7206 * interface type <i>I</i> includes a method named <i>call()</i>, and the type
of <i>call()</i> is |
6753 * the function type <i>F</i>, then <i>I</i> is considered to be a subtype of
<i>F</i>. | 7207 * the function type <i>F</i>, then <i>I</i> is considered to be a subtype of
<i>F</i>. |
| 7208 * |
6754 * @param type the type being compared with this type | 7209 * @param type the type being compared with this type |
6755 * @return `true` if this type is a subtype of the given type | 7210 * @return `true` if this type is a subtype of the given type |
6756 */ | 7211 */ |
6757 bool isSubtypeOf(Type2 type); | 7212 bool isSubtypeOf(Type2 type); |
6758 | 7213 |
6759 /** | 7214 /** |
6760 * Return the element representing the constructor that results from looking u
p the given | 7215 * Return the element representing the constructor that results from looking u
p the given |
6761 * constructor in this class with respect to the given library, or `null` if t
he look up | 7216 * constructor in this class with respect to the given library, or `null` if t
he look up |
6762 * fails. The behavior of this method is defined by the Dart Language Specific
ation in section | 7217 * fails. The behavior of this method is defined by the Dart Language Specific
ation in section |
6763 * 12.11.1: <blockquote>If <i>e</i> is of the form <b>new</b> <i>T.id()</i> th
en let <i>q<i> be | 7218 * 12.11.1: <blockquote>If <i>e</i> is of the form <b>new</b> <i>T.id()</i> th
en let <i>q<i> be |
6764 * the constructor <i>T.id</i>, otherwise let <i>q<i> be the constructor <i>T<
i>. Otherwise, if | 7219 * the constructor <i>T.id</i>, otherwise let <i>q<i> be the constructor <i>T<
i>. Otherwise, if |
6765 * <i>q</i> is not defined or not accessible, a NoSuchMethodException is throw
n. </blockquote> | 7220 * <i>q</i> is not defined or not accessible, a NoSuchMethodException is throw
n. </blockquote> |
| 7221 * |
6766 * @param constructorName the name of the constructor being looked up | 7222 * @param constructorName the name of the constructor being looked up |
6767 * @param library the library with respect to which the lookup is being perfor
med | 7223 * @param library the library with respect to which the lookup is being perfor
med |
6768 * @return the result of looking up the given constructor in this class with r
espect to the given | 7224 * @return the result of looking up the given constructor in this class with r
espect to the given |
6769 * library | 7225 * library |
6770 */ | 7226 */ |
6771 ConstructorElement lookUpConstructor(String constructorName, LibraryElement li
brary); | 7227 ConstructorElement lookUpConstructor(String constructorName, LibraryElement li
brary); |
6772 | 7228 |
6773 /** | 7229 /** |
6774 * Return the element representing the getter that results from looking up the
given getter in | 7230 * Return the element representing the getter that results from looking up the
given getter in |
6775 * this class with respect to the given library, or `null` if the look up fail
s. The | 7231 * this class with respect to the given library, or `null` if the look up fail
s. The |
6776 * behavior of this method is defined by the Dart Language Specification in se
ction 12.15.1: | 7232 * behavior of this method is defined by the Dart Language Specification in se
ction 12.15.1: |
6777 * <blockquote>The result of looking up getter (respectively setter) <i>m</i>
in class <i>C</i> | 7233 * <blockquote>The result of looking up getter (respectively setter) <i>m</i>
in class <i>C</i> |
6778 * with respect to library <i>L</i> is: | 7234 * with respect to library <i>L</i> is: |
6779 * | 7235 * |
6780 * * If <i>C</i> declares an instance getter (respectively setter) named <i>m<
/i> that is | 7236 * * If <i>C</i> declares an instance getter (respectively setter) named <i>m<
/i> that is |
6781 * accessible to <i>L</i>, then that getter (respectively setter) is the resul
t of the lookup. | 7237 * accessible to <i>L</i>, then that getter (respectively setter) is the resul
t of the lookup. |
6782 * Otherwise, if <i>C</i> has a superclass <i>S</i>, then the result of the lo
okup is the result | 7238 * Otherwise, if <i>C</i> has a superclass <i>S</i>, then the result of the lo
okup is the result |
6783 * of looking up getter (respectively setter) <i>m</i> in <i>S</i> with respec
t to <i>L</i>. | 7239 * of looking up getter (respectively setter) <i>m</i> in <i>S</i> with respec
t to <i>L</i>. |
6784 * Otherwise, we say that the lookup has failed. | 7240 * Otherwise, we say that the lookup has failed. |
6785 * | 7241 * |
6786 * </blockquote> | 7242 * </blockquote> |
| 7243 * |
6787 * @param getterName the name of the getter being looked up | 7244 * @param getterName the name of the getter being looked up |
6788 * @param library the library with respect to which the lookup is being perfor
med | 7245 * @param library the library with respect to which the lookup is being perfor
med |
6789 * @return the result of looking up the given getter in this class with respec
t to the given | 7246 * @return the result of looking up the given getter in this class with respec
t to the given |
6790 * library | 7247 * library |
6791 */ | 7248 */ |
6792 PropertyAccessorElement lookUpGetter(String getterName, LibraryElement library
); | 7249 PropertyAccessorElement lookUpGetter(String getterName, LibraryElement library
); |
6793 | 7250 |
6794 /** | 7251 /** |
6795 * Return the element representing the getter that results from looking up the
given getter in the | 7252 * Return the element representing the getter that results from looking up the
given getter in the |
6796 * superclass of this class with respect to the given library, or `null` if th
e look up | 7253 * superclass of this class with respect to the given library, or `null` if th
e look up |
6797 * fails. The behavior of this method is defined by the Dart Language Specific
ation in section | 7254 * fails. The behavior of this method is defined by the Dart Language Specific
ation in section |
6798 * 12.15.1: <blockquote>The result of looking up getter (respectively setter)
<i>m</i> in class | 7255 * 12.15.1: <blockquote>The result of looking up getter (respectively setter)
<i>m</i> in class |
6799 * <i>C</i> with respect to library <i>L</i> is: | 7256 * <i>C</i> with respect to library <i>L</i> is: |
6800 * | 7257 * |
6801 * * If <i>C</i> declares an instance getter (respectively setter) named <i>m<
/i> that is | 7258 * * If <i>C</i> declares an instance getter (respectively setter) named <i>m<
/i> that is |
6802 * accessible to <i>L</i>, then that getter (respectively setter) is the resul
t of the lookup. | 7259 * accessible to <i>L</i>, then that getter (respectively setter) is the resul
t of the lookup. |
6803 * Otherwise, if <i>C</i> has a superclass <i>S</i>, then the result of the lo
okup is the result | 7260 * Otherwise, if <i>C</i> has a superclass <i>S</i>, then the result of the lo
okup is the result |
6804 * of looking up getter (respectively setter) <i>m</i> in <i>S</i> with respec
t to <i>L</i>. | 7261 * of looking up getter (respectively setter) <i>m</i> in <i>S</i> with respec
t to <i>L</i>. |
6805 * Otherwise, we say that the lookup has failed. | 7262 * Otherwise, we say that the lookup has failed. |
6806 * | 7263 * |
6807 * </blockquote> | 7264 * </blockquote> |
| 7265 * |
6808 * @param getterName the name of the getter being looked up | 7266 * @param getterName the name of the getter being looked up |
6809 * @param library the library with respect to which the lookup is being perfor
med | 7267 * @param library the library with respect to which the lookup is being perfor
med |
6810 * @return the result of looking up the given getter in this class with respec
t to the given | 7268 * @return the result of looking up the given getter in this class with respec
t to the given |
6811 * library | 7269 * library |
6812 */ | 7270 */ |
6813 PropertyAccessorElement lookUpGetterInSuperclass(String getterName, LibraryEle
ment library); | 7271 PropertyAccessorElement lookUpGetterInSuperclass(String getterName, LibraryEle
ment library); |
6814 | 7272 |
6815 /** | 7273 /** |
6816 * Return the element representing the method that results from looking up the
given method in | 7274 * Return the element representing the method that results from looking up the
given method in |
6817 * this class with respect to the given library, or `null` if the look up fail
s. The | 7275 * this class with respect to the given library, or `null` if the look up fail
s. The |
6818 * behavior of this method is defined by the Dart Language Specification in se
ction 12.15.1: | 7276 * behavior of this method is defined by the Dart Language Specification in se
ction 12.15.1: |
6819 * <blockquote> The result of looking up method <i>m</i> in class <i>C</i> wit
h respect to library | 7277 * <blockquote> The result of looking up method <i>m</i> in class <i>C</i> wit
h respect to library |
6820 * <i>L</i> is: | 7278 * <i>L</i> is: |
6821 * | 7279 * |
6822 * * If <i>C</i> declares an instance method named <i>m</i> that is accessible
to <i>L</i>, then | 7280 * * If <i>C</i> declares an instance method named <i>m</i> that is accessible
to <i>L</i>, then |
6823 * that method is the result of the lookup. Otherwise, if <i>C</i> has a super
class <i>S</i>, then | 7281 * that method is the result of the lookup. Otherwise, if <i>C</i> has a super
class <i>S</i>, then |
6824 * the result of the lookup is the result of looking up method <i>m</i> in <i>
S</i> with respect | 7282 * the result of the lookup is the result of looking up method <i>m</i> in <i>
S</i> with respect |
6825 * to <i>L</i>. Otherwise, we say that the lookup has failed. | 7283 * to <i>L</i>. Otherwise, we say that the lookup has failed. |
6826 * | 7284 * |
6827 * </blockquote> | 7285 * </blockquote> |
| 7286 * |
6828 * @param methodName the name of the method being looked up | 7287 * @param methodName the name of the method being looked up |
6829 * @param library the library with respect to which the lookup is being perfor
med | 7288 * @param library the library with respect to which the lookup is being perfor
med |
6830 * @return the result of looking up the given method in this class with respec
t to the given | 7289 * @return the result of looking up the given method in this class with respec
t to the given |
6831 * library | 7290 * library |
6832 */ | 7291 */ |
6833 MethodElement lookUpMethod(String methodName, LibraryElement library); | 7292 MethodElement lookUpMethod(String methodName, LibraryElement library); |
6834 | 7293 |
6835 /** | 7294 /** |
6836 * Return the element representing the method that results from looking up the
given method in the | 7295 * Return the element representing the method that results from looking up the
given method in the |
6837 * superclass of this class with respect to the given library, or `null` if th
e look up | 7296 * superclass of this class with respect to the given library, or `null` if th
e look up |
6838 * fails. The behavior of this method is defined by the Dart Language Specific
ation in section | 7297 * fails. The behavior of this method is defined by the Dart Language Specific
ation in section |
6839 * 12.15.1: <blockquote> The result of looking up method <i>m</i> in class <i>
C</i> with respect | 7298 * 12.15.1: <blockquote> The result of looking up method <i>m</i> in class <i>
C</i> with respect |
6840 * to library <i>L</i> is: | 7299 * to library <i>L</i> is: |
6841 * | 7300 * |
6842 * * If <i>C</i> declares an instance method named <i>m</i> that is accessible
to <i>L</i>, then | 7301 * * If <i>C</i> declares an instance method named <i>m</i> that is accessible
to <i>L</i>, then |
6843 * that method is the result of the lookup. Otherwise, if <i>C</i> has a super
class <i>S</i>, then | 7302 * that method is the result of the lookup. Otherwise, if <i>C</i> has a super
class <i>S</i>, then |
6844 * the result of the lookup is the result of looking up method <i>m</i> in <i>
S</i> with respect | 7303 * the result of the lookup is the result of looking up method <i>m</i> in <i>
S</i> with respect |
6845 * to <i>L</i>. Otherwise, we say that the lookup has failed. | 7304 * to <i>L</i>. Otherwise, we say that the lookup has failed. |
6846 * | 7305 * |
6847 * </blockquote> | 7306 * </blockquote> |
| 7307 * |
6848 * @param methodName the name of the method being looked up | 7308 * @param methodName the name of the method being looked up |
6849 * @param library the library with respect to which the lookup is being perfor
med | 7309 * @param library the library with respect to which the lookup is being perfor
med |
6850 * @return the result of looking up the given method in this class with respec
t to the given | 7310 * @return the result of looking up the given method in this class with respec
t to the given |
6851 * library | 7311 * library |
6852 */ | 7312 */ |
6853 MethodElement lookUpMethodInSuperclass(String methodName, LibraryElement libra
ry); | 7313 MethodElement lookUpMethodInSuperclass(String methodName, LibraryElement libra
ry); |
6854 | 7314 |
6855 /** | 7315 /** |
6856 * Return the element representing the setter that results from looking up the
given setter in | 7316 * Return the element representing the setter that results from looking up the
given setter in |
6857 * this class with respect to the given library, or `null` if the look up fail
s. The | 7317 * this class with respect to the given library, or `null` if the look up fail
s. The |
6858 * behavior of this method is defined by the Dart Language Specification in se
ction 12.16: | 7318 * behavior of this method is defined by the Dart Language Specification in se
ction 12.16: |
6859 * <blockquote> The result of looking up getter (respectively setter) <i>m</i>
in class <i>C</i> | 7319 * <blockquote> The result of looking up getter (respectively setter) <i>m</i>
in class <i>C</i> |
6860 * with respect to library <i>L</i> is: | 7320 * with respect to library <i>L</i> is: |
6861 * | 7321 * |
6862 * * If <i>C</i> declares an instance getter (respectively setter) named <i>m<
/i> that is | 7322 * * If <i>C</i> declares an instance getter (respectively setter) named <i>m<
/i> that is |
6863 * accessible to <i>L</i>, then that getter (respectively setter) is the resul
t of the lookup. | 7323 * accessible to <i>L</i>, then that getter (respectively setter) is the resul
t of the lookup. |
6864 * Otherwise, if <i>C</i> has a superclass <i>S</i>, then the result of the lo
okup is the result | 7324 * Otherwise, if <i>C</i> has a superclass <i>S</i>, then the result of the lo
okup is the result |
6865 * of looking up getter (respectively setter) <i>m</i> in <i>S</i> with respec
t to <i>L</i>. | 7325 * of looking up getter (respectively setter) <i>m</i> in <i>S</i> with respec
t to <i>L</i>. |
6866 * Otherwise, we say that the lookup has failed. | 7326 * Otherwise, we say that the lookup has failed. |
6867 * | 7327 * |
6868 * </blockquote> | 7328 * </blockquote> |
| 7329 * |
6869 * @param setterName the name of the setter being looked up | 7330 * @param setterName the name of the setter being looked up |
6870 * @param library the library with respect to which the lookup is being perfor
med | 7331 * @param library the library with respect to which the lookup is being perfor
med |
6871 * @return the result of looking up the given setter in this class with respec
t to the given | 7332 * @return the result of looking up the given setter in this class with respec
t to the given |
6872 * library | 7333 * library |
6873 */ | 7334 */ |
6874 PropertyAccessorElement lookUpSetter(String setterName, LibraryElement library
); | 7335 PropertyAccessorElement lookUpSetter(String setterName, LibraryElement library
); |
6875 | 7336 |
6876 /** | 7337 /** |
6877 * Return the element representing the setter that results from looking up the
given setter in the | 7338 * Return the element representing the setter that results from looking up the
given setter in the |
6878 * superclass of this class with respect to the given library, or `null` if th
e look up | 7339 * superclass of this class with respect to the given library, or `null` if th
e look up |
6879 * fails. The behavior of this method is defined by the Dart Language Specific
ation in section | 7340 * fails. The behavior of this method is defined by the Dart Language Specific
ation in section |
6880 * 12.16: <blockquote> The result of looking up getter (respectively setter) <
i>m</i> in class | 7341 * 12.16: <blockquote> The result of looking up getter (respectively setter) <
i>m</i> in class |
6881 * <i>C</i> with respect to library <i>L</i> is: | 7342 * <i>C</i> with respect to library <i>L</i> is: |
6882 * | 7343 * |
6883 * * If <i>C</i> declares an instance getter (respectively setter) named <i>m<
/i> that is | 7344 * * If <i>C</i> declares an instance getter (respectively setter) named <i>m<
/i> that is |
6884 * accessible to <i>L</i>, then that getter (respectively setter) is the resul
t of the lookup. | 7345 * accessible to <i>L</i>, then that getter (respectively setter) is the resul
t of the lookup. |
6885 * Otherwise, if <i>C</i> has a superclass <i>S</i>, then the result of the lo
okup is the result | 7346 * Otherwise, if <i>C</i> has a superclass <i>S</i>, then the result of the lo
okup is the result |
6886 * of looking up getter (respectively setter) <i>m</i> in <i>S</i> with respec
t to <i>L</i>. | 7347 * of looking up getter (respectively setter) <i>m</i> in <i>S</i> with respec
t to <i>L</i>. |
6887 * Otherwise, we say that the lookup has failed. | 7348 * Otherwise, we say that the lookup has failed. |
6888 * | 7349 * |
6889 * </blockquote> | 7350 * </blockquote> |
| 7351 * |
6890 * @param setterName the name of the setter being looked up | 7352 * @param setterName the name of the setter being looked up |
6891 * @param library the library with respect to which the lookup is being perfor
med | 7353 * @param library the library with respect to which the lookup is being perfor
med |
6892 * @return the result of looking up the given setter in this class with respec
t to the given | 7354 * @return the result of looking up the given setter in this class with respec
t to the given |
6893 * library | 7355 * library |
6894 */ | 7356 */ |
6895 PropertyAccessorElement lookUpSetterInSuperclass(String setterName, LibraryEle
ment library); | 7357 PropertyAccessorElement lookUpSetterInSuperclass(String setterName, LibraryEle
ment library); |
6896 | 7358 |
6897 /** | 7359 /** |
6898 * Return the type resulting from substituting the given arguments for this ty
pe's parameters. | 7360 * Return the type resulting from substituting the given arguments for this ty
pe's parameters. |
6899 * This is fully equivalent to `substitute(argumentTypes, getTypeArguments())`
. | 7361 * This is fully equivalent to `substitute(argumentTypes, getTypeArguments())`
. |
| 7362 * |
6900 * @param argumentTypes the actual type arguments being substituted for the ty
pe parameters | 7363 * @param argumentTypes the actual type arguments being substituted for the ty
pe parameters |
6901 * @return the result of performing the substitution | 7364 * @return the result of performing the substitution |
6902 */ | 7365 */ |
6903 InterfaceType substitute5(List<Type2> argumentTypes); | 7366 InterfaceType substitute5(List<Type2> argumentTypes); |
6904 InterfaceType substitute2(List<Type2> argumentTypes, List<Type2> parameterType
s); | 7367 InterfaceType substitute2(List<Type2> argumentTypes, List<Type2> parameterType
s); |
6905 } | 7368 } |
6906 /** | 7369 /** |
6907 * The interface `ParameterizedType` defines the behavior common to objects repr
esenting the | 7370 * The interface `ParameterizedType` defines the behavior common to objects repr
esenting the |
6908 * type with type parameters, such as class and function type alias. | 7371 * type with type parameters, such as class and function type alias. |
| 7372 * |
6909 * @coverage dart.engine.type | 7373 * @coverage dart.engine.type |
6910 */ | 7374 */ |
6911 abstract class ParameterizedType implements Type2 { | 7375 abstract class ParameterizedType implements Type2 { |
6912 | 7376 |
6913 /** | 7377 /** |
6914 * Return an array containing the actual types of the type arguments. If this
type's element does | 7378 * Return an array containing the actual types of the type arguments. If this
type's element does |
6915 * not have type parameters, then the array should be empty (although it is po
ssible for type | 7379 * not have type parameters, then the array should be empty (although it is po
ssible for type |
6916 * arguments to be erroneously declared). If the element has type parameters a
nd the actual type | 7380 * arguments to be erroneously declared). If the element has type parameters a
nd the actual type |
6917 * does not explicitly include argument values, then the type "dynamic" will b
e automatically | 7381 * does not explicitly include argument values, then the type "dynamic" will b
e automatically |
6918 * provided. | 7382 * provided. |
| 7383 * |
6919 * @return the actual types of the type arguments | 7384 * @return the actual types of the type arguments |
6920 */ | 7385 */ |
6921 List<Type2> get typeArguments; | 7386 List<Type2> get typeArguments; |
6922 | 7387 |
6923 /** | 7388 /** |
6924 * Return an array containing all of the type variables declared for this type
. | 7389 * Return an array containing all of the type variables declared for this type
. |
| 7390 * |
6925 * @return the type variables declared for this type | 7391 * @return the type variables declared for this type |
6926 */ | 7392 */ |
6927 List<TypeVariableElement> get typeVariables; | 7393 List<TypeVariableElement> get typeVariables; |
6928 } | 7394 } |
6929 /** | 7395 /** |
6930 * The interface `Type` defines the behavior of objects representing the declare
d type of | 7396 * The interface `Type` defines the behavior of objects representing the declare
d type of |
6931 * elements in the element model. | 7397 * elements in the element model. |
| 7398 * |
6932 * @coverage dart.engine.type | 7399 * @coverage dart.engine.type |
6933 */ | 7400 */ |
6934 abstract class Type2 { | 7401 abstract class Type2 { |
6935 | 7402 |
6936 /** | 7403 /** |
6937 * Return the name of this type as it should appear when presented to users in
contexts such as | 7404 * Return the name of this type as it should appear when presented to users in
contexts such as |
6938 * error messages. | 7405 * error messages. |
| 7406 * |
6939 * @return the name of this type | 7407 * @return the name of this type |
6940 */ | 7408 */ |
6941 String get displayName; | 7409 String get displayName; |
6942 | 7410 |
6943 /** | 7411 /** |
6944 * Return the element representing the declaration of this type, or `null` if
the type has | 7412 * Return the element representing the declaration of this type, or `null` if
the type has |
6945 * not, or cannot, be associated with an element. The former case will occur i
f the element model | 7413 * not, or cannot, be associated with an element. The former case will occur i
f the element model |
6946 * is not yet complete; the latter case will occur if this object represents a
n undefined type. | 7414 * is not yet complete; the latter case will occur if this object represents a
n undefined type. |
| 7415 * |
6947 * @return the element representing the declaration of this type | 7416 * @return the element representing the declaration of this type |
6948 */ | 7417 */ |
6949 Element get element; | 7418 Element get element; |
6950 | 7419 |
6951 /** | 7420 /** |
6952 * Return the least upper bound of this type and the given type, or `null` if
there is no | 7421 * Return the least upper bound of this type and the given type, or `null` if
there is no |
6953 * least upper bound. | 7422 * least upper bound. |
| 7423 * |
6954 * @param type the other type used to compute the least upper bound | 7424 * @param type the other type used to compute the least upper bound |
6955 * @return the least upper bound of this type and the given type | 7425 * @return the least upper bound of this type and the given type |
6956 */ | 7426 */ |
6957 Type2 getLeastUpperBound(Type2 type); | 7427 Type2 getLeastUpperBound(Type2 type); |
6958 | 7428 |
6959 /** | 7429 /** |
6960 * Return the name of this type, or `null` if the type does not have a name, s
uch as when | 7430 * Return the name of this type, or `null` if the type does not have a name, s
uch as when |
6961 * the type represents the type of an unnamed function. | 7431 * the type represents the type of an unnamed function. |
| 7432 * |
6962 * @return the name of this type | 7433 * @return the name of this type |
6963 */ | 7434 */ |
6964 String get name; | 7435 String get name; |
6965 | 7436 |
6966 /** | 7437 /** |
6967 * Return `true` if this type is assignable to the given type. A type <i>T</i>
may be | 7438 * Return `true` if this type is assignable to the given type. A type <i>T</i>
may be |
6968 * assigned to a type <i>S</i>, written <i>T</i> ⇔ <i>S</i>, iff either <
i>T</i> <: <i>S</i> | 7439 * assigned to a type <i>S</i>, written <i>T</i> ⇔ <i>S</i>, iff either <
i>T</i> <: <i>S</i> |
6969 * or <i>S</i> <: <i>T</i>. | 7440 * or <i>S</i> <: <i>T</i>. |
| 7441 * |
6970 * @param type the type being compared with this type | 7442 * @param type the type being compared with this type |
6971 * @return `true` if this type is assignable to the given type | 7443 * @return `true` if this type is assignable to the given type |
6972 */ | 7444 */ |
6973 bool isAssignableTo(Type2 type); | 7445 bool isAssignableTo(Type2 type); |
6974 | 7446 |
6975 /** | 7447 /** |
6976 * Return `true` if this type represents the type 'Function' defined in the da
rt:core | 7448 * Return `true` if this type represents the type 'Function' defined in the da
rt:core |
6977 * library. | 7449 * library. |
| 7450 * |
6978 * @return `true` if this type represents the type 'Function' defined in the d
art:core | 7451 * @return `true` if this type represents the type 'Function' defined in the d
art:core |
6979 * library | 7452 * library |
6980 */ | 7453 */ |
6981 bool get isDartCoreFunction; | 7454 bool get isDartCoreFunction; |
6982 | 7455 |
6983 /** | 7456 /** |
6984 * Return `true` if this type represents the type 'dynamic'. | 7457 * Return `true` if this type represents the type 'dynamic'. |
| 7458 * |
6985 * @return `true` if this type represents the type 'dynamic' | 7459 * @return `true` if this type represents the type 'dynamic' |
6986 */ | 7460 */ |
6987 bool get isDynamic; | 7461 bool get isDynamic; |
6988 | 7462 |
6989 /** | 7463 /** |
6990 * Return `true` if this type is more specific than the given type. | 7464 * Return `true` if this type is more specific than the given type. |
| 7465 * |
6991 * @param type the type being compared with this type | 7466 * @param type the type being compared with this type |
6992 * @return `true` if this type is more specific than the given type | 7467 * @return `true` if this type is more specific than the given type |
6993 */ | 7468 */ |
6994 bool isMoreSpecificThan(Type2 type); | 7469 bool isMoreSpecificThan(Type2 type); |
6995 | 7470 |
6996 /** | 7471 /** |
6997 * Return `true` if this type represents the type 'Object'. | 7472 * Return `true` if this type represents the type 'Object'. |
| 7473 * |
6998 * @return `true` if this type represents the type 'Object' | 7474 * @return `true` if this type represents the type 'Object' |
6999 */ | 7475 */ |
7000 bool get isObject; | 7476 bool get isObject; |
7001 | 7477 |
7002 /** | 7478 /** |
7003 * Return `true` if this type is a subtype of the given type. | 7479 * Return `true` if this type is a subtype of the given type. |
| 7480 * |
7004 * @param type the type being compared with this type | 7481 * @param type the type being compared with this type |
7005 * @return `true` if this type is a subtype of the given type | 7482 * @return `true` if this type is a subtype of the given type |
7006 */ | 7483 */ |
7007 bool isSubtypeOf(Type2 type); | 7484 bool isSubtypeOf(Type2 type); |
7008 | 7485 |
7009 /** | 7486 /** |
7010 * Return `true` if this type is a supertype of the given type. A type <i>S</i
> is a | 7487 * Return `true` if this type is a supertype of the given type. A type <i>S</i
> is a |
7011 * supertype of <i>T</i>, written <i>S</i> :> <i>T</i>, iff <i>T</i> is a subt
ype of <i>S</i>. | 7488 * supertype of <i>T</i>, written <i>S</i> :> <i>T</i>, iff <i>T</i> is a subt
ype of <i>S</i>. |
| 7489 * |
7012 * @param type the type being compared with this type | 7490 * @param type the type being compared with this type |
7013 * @return `true` if this type is a supertype of the given type | 7491 * @return `true` if this type is a supertype of the given type |
7014 */ | 7492 */ |
7015 bool isSupertypeOf(Type2 type); | 7493 bool isSupertypeOf(Type2 type); |
7016 | 7494 |
7017 /** | 7495 /** |
7018 * Return `true` if this type represents the type 'void'. | 7496 * Return `true` if this type represents the type 'void'. |
| 7497 * |
7019 * @return `true` if this type represents the type 'void' | 7498 * @return `true` if this type represents the type 'void' |
7020 */ | 7499 */ |
7021 bool get isVoid; | 7500 bool get isVoid; |
7022 | 7501 |
7023 /** | 7502 /** |
7024 * Return the type resulting from substituting the given arguments for the giv
en parameters in | 7503 * Return the type resulting from substituting the given arguments for the giv
en parameters in |
7025 * this type. The specification defines this operation in section 2: <blockquo
te> The notation | 7504 * this type. The specification defines this operation in section 2: <blockquo
te> The notation |
7026 * <i>\[x<sub>1</sub>, ..., x<sub>n</sub>/y<sub>1</sub>, ..., y<sub>n</sub>\]E
</i> denotes a copy of | 7505 * <i>[x<sub>1</sub>, ..., x<sub>n</sub>/y<sub>1</sub>, ..., y<sub>n</sub>]E</
i> denotes a copy of |
7027 * <i>E</i> in which all occurrences of <i>y<sub>i</sub>, 1 <= i <= n</i> have
been replaced with | 7506 * <i>E</i> in which all occurrences of <i>y<sub>i</sub>, 1 <= i <= n</i> have
been replaced with |
7028 * <i>x<sub>i</sub></i>.</blockquote> Note that, contrary to the specification
, this method will | 7507 * <i>x<sub>i</sub></i>.</blockquote> Note that, contrary to the specification
, this method will |
7029 * not create a copy of this type if no substitutions were required, but will
return this type | 7508 * not create a copy of this type if no substitutions were required, but will
return this type |
7030 * directly. | 7509 * directly. |
| 7510 * |
7031 * @param argumentTypes the actual type arguments being substituted for the pa
rameters | 7511 * @param argumentTypes the actual type arguments being substituted for the pa
rameters |
7032 * @param parameterTypes the parameters to be replaced | 7512 * @param parameterTypes the parameters to be replaced |
7033 * @return the result of performing the substitution | 7513 * @return the result of performing the substitution |
7034 */ | 7514 */ |
7035 Type2 substitute2(List<Type2> argumentTypes, List<Type2> parameterTypes); | 7515 Type2 substitute2(List<Type2> argumentTypes, List<Type2> parameterTypes); |
7036 } | 7516 } |
7037 /** | 7517 /** |
7038 * The interface `TypeVariableType` defines the behavior of objects representing
the type | 7518 * The interface `TypeVariableType` defines the behavior of objects representing
the type |
7039 * introduced by a type variable. | 7519 * introduced by a type variable. |
| 7520 * |
7040 * @coverage dart.engine.type | 7521 * @coverage dart.engine.type |
7041 */ | 7522 */ |
7042 abstract class TypeVariableType implements Type2 { | 7523 abstract class TypeVariableType implements Type2 { |
7043 TypeVariableElement get element; | 7524 TypeVariableElement get element; |
7044 } | 7525 } |
7045 /** | 7526 /** |
7046 * The interface `VoidType` defines the behavior of the unique object representi
ng the type`void`. | 7527 * The interface `VoidType` defines the behavior of the unique object representi
ng the type |
| 7528 * `void`. |
| 7529 * |
7047 * @coverage dart.engine.type | 7530 * @coverage dart.engine.type |
7048 */ | 7531 */ |
7049 abstract class VoidType implements Type2 { | 7532 abstract class VoidType implements Type2 { |
7050 VoidType substitute2(List<Type2> argumentTypes, List<Type2> parameterTypes); | 7533 VoidType substitute2(List<Type2> argumentTypes, List<Type2> parameterTypes); |
7051 } | 7534 } |
OLD | NEW |