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

Side by Side Diff: pkg/analyzer/lib/src/summary/format.fbs

Issue 1743713002: Generate a ".fbs" file representing the summary format. (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: Created 4 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « no previous file | pkg/analyzer/tool/summary/check_test.dart » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a 2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file. 3 // BSD-style license that can be found in the LICENSE file.
4 //
5 // This file has been automatically generated. Please do not edit it manually.
6 // To regenerate the file, use the script "pkg/analyzer/tool/generate_files".
4 7
5 /**
6 * This file is an "idl" style description of the summary format. It
7 * contains abstract classes which declare the interface for reading data from
8 * summaries. It is parsed and transformed into code that implements the
9 * summary format.
10 *
11 * The code generation process introduces the following semantics:
12 * - Getters of type List never return null, and have a default value of the
13 * empty list.
14 * - Getters of type int return unsigned 32-bit integers, never null, and have
15 * a default value of zero.
16 * - Getters of type String never return null, and have a default value of ''.
17 * - Getters of type bool never return null, and have a default value of false.
18 * - Getters whose type is an enum never return null, and have a default value
19 * of the first value declared in the enum.
20 *
21 * Terminology used in this document:
22 * - "Unlinked" refers to information that can be determined from reading a
23 * single .dart file in isolation.
24 * - "Prelinked" refers to information that can be determined from the defining
25 * compilation unit of a library, plus direct imports, plus the transitive
26 * closure of exports reachable from those libraries, plus all part files
27 * constituting those libraries.
28 * - "Linked" refers to all other information; in theory, this information may
29 * depend on all files in the transitive import/export closure. However, in
30 * practice we expect that the number of additional dependencies will usually
31 * be small, since the additional dependencies only need to be consulted for
32 * type propagation, type inference, and constant evaluation, which typically
33 * have short dependency chains.
34 *
35 * Since we expect "linked" and "prelinked" dependencies to be similar, we only
36 * rarely distinguish between them; most information is that is not "unlinked"
37 * is typically considered "linked" for simplicity.
38 *
39 * Except as otherwise noted, synthetic elements are not stored in the summary;
40 * they are re-synthesized at the time the summary is read.
41 */
42 library analyzer.tool.summary.idl;
43
44 import 'base.dart' as base;
45 import 'base.dart' show Id, TopLevel;
46 import 'format.dart' as generated;
47
48 /**
49 * Annotation describing information which is not part of Dart semantics; in
50 * other words, if this information (or any information it refers to) changes,
51 * static analysis and runtime behavior of the library are unaffected.
52 */
53 const informative = null;
54
55 /**
56 * Summary information about a reference to a an entity such as a type, top
57 * level executable, or executable within a class.
58 */
59 abstract class EntityRef extends base.SummaryClass {
60 /**
61 * If this is a reference to a function type implicitly defined by a
62 * function-typed parameter, a list of zero-based indices indicating the path
63 * from the entity referred to by [reference] to the appropriate type
64 * parameter. Otherwise the empty list.
65 *
66 * If there are N indices in this list, then the entity being referred to is
67 * the function type implicitly defined by a function-typed parameter of a
68 * function-typed parameter, to N levels of nesting. The first index in the
69 * list refers to the outermost level of nesting; for example if [reference]
70 * refers to the entity defined by:
71 *
72 * void f(x, void g(y, z, int h(String w))) { ... }
73 *
74 * Then to refer to the function type implicitly defined by parameter `h`
75 * (which is parameter 2 of parameter 1 of `f`), then
76 * [implicitFunctionTypeIndices] should be [1, 2].
77 *
78 * Note that if the entity being referred to is a generic method inside a
79 * generic class, then the type arguments in [typeArguments] are applied
80 * first to the class and then to the method.
81 */
82 @Id(4)
83 List<int> get implicitFunctionTypeIndices;
84
85 /**
86 * If this is a reference to a type parameter, one-based index into the list
87 * of [UnlinkedTypeParam]s currently in effect. Indexing is done using De
88 * Bruijn index conventions; that is, innermost parameters come first, and
89 * if a class or method has multiple parameters, they are indexed from right
90 * to left. So for instance, if the enclosing declaration is
91 *
92 * class C<T,U> {
93 * m<V,W> {
94 * ...
95 * }
96 * }
97 *
98 * Then [paramReference] values of 1, 2, 3, and 4 represent W, V, U, and T,
99 * respectively.
100 *
101 * If the type being referred to is not a type parameter, [paramReference] is
102 * zero.
103 */
104 @Id(3)
105 int get paramReference;
106
107 /**
108 * Index into [UnlinkedUnit.references] for the entity being referred to, or
109 * zero if this is a reference to a type parameter.
110 */
111 @Id(0)
112 int get reference;
113
114 /**
115 * If this [EntityRef] is contained within [LinkedUnit.types], slot id (which
116 * is unique within the compilation unit) identifying the target of type
117 * propagation or type inference with which this [EntityRef] is associated.
118 *
119 * Otherwise zero.
120 */
121 @Id(2)
122 int get slot;
123
124 /**
125 * If this [EntityRef] is a reference to a function type whose
126 * [FunctionElement] is not in any library (e.g. a function type that was
127 * synthesized by a LUB computation), the function parameters. Otherwise
128 * empty.
129 */
130 @Id(6)
131 List<UnlinkedParam> get syntheticParams;
132
133 /**
134 * If this [EntityRef] is a reference to a function type whose
135 * [FunctionElement] is not in any library (e.g. a function type that was
136 * synthesized by a LUB computation), the return type of the function.
137 * Otherwise `null`.
138 */
139 @Id(5)
140 EntityRef get syntheticReturnType;
141
142 /**
143 * If this is an instantiation of a generic type or generic executable, the
144 * type arguments used to instantiate it. Trailing type arguments of type
145 * `dynamic` are omitted.
146 */
147 @Id(1)
148 List<EntityRef> get typeArguments;
149 }
150 8
151 /** 9 /**
152 * Enum used to indicate the kind of index relation. 10 * Enum used to indicate the kind of index relation.
153 */ 11 */
154 enum IndexRelationKind { 12 enum IndexRelationKind : byte {
155 /** 13 /**
156 * Left: class. 14 * Left: class.
157 * Is extended by. 15 * Is extended by.
158 * Right: other class declaration. 16 * Right: other class declaration.
159 */ 17 */
160 IS_EXTENDED_BY, 18 IS_EXTENDED_BY,
161 19
162 /** 20 /**
163 * Left: class. 21 * Left: class.
164 * Is implemented by. 22 * Is implemented by.
(...skipping 17 matching lines...) Expand all
182 40
183 /** 41 /**
184 * Left: any element. 42 * Left: any element.
185 * Is referenced (and not invoked, read/written) at. 43 * Is referenced (and not invoked, read/written) at.
186 * Right: location. 44 * Right: location.
187 */ 45 */
188 IS_REFERENCED_BY 46 IS_REFERENCED_BY
189 } 47 }
190 48
191 /** 49 /**
192 * Information about a dependency that exists between one library and another
193 * due to an "import" declaration.
194 */
195 abstract class LinkedDependency extends base.SummaryClass {
196 /**
197 * URI for the compilation units listed in the library's `part` declarations.
198 * These URIs are relative to the importing library.
199 */
200 @Id(1)
201 List<String> get parts;
202
203 /**
204 * The relative URI of the dependent library. This URI is relative to the
205 * importing library, even if there are intervening `export` declarations.
206 * So, for example, if `a.dart` imports `b/c.dart` and `b/c.dart` exports
207 * `d/e.dart`, the URI listed for `a.dart`'s dependency on `e.dart` will be
208 * `b/d/e.dart`.
209 */
210 @Id(0)
211 String get uri;
212 }
213
214 /**
215 * Information about a single name in the export namespace of the library that
216 * is not in the public namespace.
217 */
218 abstract class LinkedExportName extends base.SummaryClass {
219 /**
220 * Index into [LinkedLibrary.dependencies] for the library in which the
221 * entity is defined.
222 */
223 @Id(0)
224 int get dependency;
225
226 /**
227 * The kind of the entity being referred to.
228 */
229 @Id(3)
230 ReferenceKind get kind;
231
232 /**
233 * Name of the exported entity. For an exported setter, this name includes
234 * the trailing '='.
235 */
236 @Id(1)
237 String get name;
238
239 /**
240 * Integer index indicating which unit in the exported library contains the
241 * definition of the entity. As with indices into [LinkedLibrary.units],
242 * zero represents the defining compilation unit, and nonzero values
243 * represent parts in the order of the corresponding `part` declarations.
244 */
245 @Id(2)
246 int get unit;
247 }
248
249 /**
250 * Linked summary of a library.
251 */
252 @TopLevel('LLib')
253 abstract class LinkedLibrary extends base.SummaryClass {
254 factory LinkedLibrary.fromBuffer(List<int> buffer) =>
255 generated.readLinkedLibrary(buffer);
256
257 /**
258 * The libraries that this library depends on (either via an explicit import
259 * statement or via the implicit dependencies on `dart:core` and
260 * `dart:async`). The first element of this array is a pseudo-dependency
261 * representing the library itself (it is also used for `dynamic` and
262 * `void`). This is followed by elements representing "prelinked"
263 * dependencies (direct imports and the transitive closure of exports).
264 * After the prelinked dependencies are elements representing "linked"
265 * dependencies.
266 *
267 * A library is only included as a "linked" dependency if it is a true
268 * dependency (e.g. a propagated or inferred type or constant value
269 * implicitly refers to an element declared in the library) or
270 * anti-dependency (e.g. the result of type propagation or type inference
271 * depends on the lack of a certain declaration in the library).
272 */
273 @Id(0)
274 List<LinkedDependency> get dependencies;
275
276 /**
277 * Information about entities in the export namespace of the library that are
278 * not in the public namespace of the library (that is, entities that are
279 * brought into the namespace via `export` directives).
280 *
281 * Sorted by name.
282 */
283 @Id(4)
284 List<LinkedExportName> get exportNames;
285
286 /**
287 * For each import in [UnlinkedUnit.imports], an index into [dependencies]
288 * of the library being imported.
289 */
290 @Id(1)
291 List<int> get importDependencies;
292
293 /**
294 * The number of elements in [dependencies] which are not "linked"
295 * dependencies (that is, the number of libraries in the direct imports plus
296 * the transitive closure of exports, plus the library itself).
297 */
298 @Id(2)
299 int get numPrelinkedDependencies;
300
301 /**
302 * The linked summary of all the compilation units constituting the
303 * library. The summary of the defining compilation unit is listed first,
304 * followed by the summary of each part, in the order of the `part`
305 * declarations in the defining compilation unit.
306 */
307 @Id(3)
308 List<LinkedUnit> get units;
309 }
310
311 /**
312 * Information about the resolution of an [UnlinkedReference].
313 */
314 abstract class LinkedReference extends base.SummaryClass {
315 /**
316 * If this [LinkedReference] doesn't have an associated [UnlinkedReference],
317 * and the entity being referred to is contained within another entity, index
318 * of the containing entity. This behaves similarly to
319 * [UnlinkedReference.prefixReference], however it is only used for class
320 * members, not for prefixed imports.
321 *
322 * Containing references must always point backward; that is, for all i, if
323 * LinkedUnit.references[i].containingReference != 0, then
324 * LinkedUnit.references[i].containingReference < i.
325 */
326 @Id(5)
327 int get containingReference;
328
329 /**
330 * Index into [LinkedLibrary.dependencies] indicating which imported library
331 * declares the entity being referred to.
332 *
333 * Zero if this entity is contained within another entity (e.g. a class
334 * member), or if [kind] is [ReferenceKind.prefix].
335 */
336 @Id(1)
337 int get dependency;
338
339 /**
340 * The kind of the entity being referred to. For the pseudo-types `dynamic`
341 * and `void`, the kind is [ReferenceKind.classOrEnum].
342 */
343 @Id(2)
344 ReferenceKind get kind;
345
346 /**
347 * If [kind] is [ReferenceKind.function] (that is, the entity being referred
348 * to is a local function), the index of the function within
349 * [UnlinkedExecutable.localFunctions]. If [kind] is
350 * [ReferenceKind.variable], the index of the variable within
351 * [UnlinkedExecutable.localVariables]. Otherwise zero.
352 */
353 @Id(6)
354 int get localIndex;
355
356 /**
357 * If this [LinkedReference] doesn't have an associated [UnlinkedReference],
358 * name of the entity being referred to. For the pseudo-type `dynamic`, the
359 * string is "dynamic". For the pseudo-type `void`, the string is "void".
360 */
361 @Id(3)
362 String get name;
363
364 /**
365 * If the entity being referred to is generic, the number of type parameters
366 * it declares (does not include type parameters of enclosing entities).
367 * Otherwise zero.
368 */
369 @Id(4)
370 int get numTypeParameters;
371
372 /**
373 * Integer index indicating which unit in the imported library contains the
374 * definition of the entity. As with indices into [LinkedLibrary.units],
375 * zero represents the defining compilation unit, and nonzero values
376 * represent parts in the order of the corresponding `part` declarations.
377 *
378 * Zero if this entity is contained within another entity (e.g. a class
379 * member).
380 */
381 @Id(0)
382 int get unit;
383 }
384
385 /**
386 * Linked summary of a compilation unit.
387 */
388 abstract class LinkedUnit extends base.SummaryClass {
389 /**
390 * Information about the resolution of references within the compilation
391 * unit. Each element of [UnlinkedUnit.references] has a corresponding
392 * element in this list (at the same index). If this list has additional
393 * elements beyond the number of elements in [UnlinkedUnit.references], those
394 * additional elements are references that are only referred to implicitly
395 * (e.g. elements involved in inferred or propagated types).
396 */
397 @Id(0)
398 List<LinkedReference> get references;
399
400 /**
401 * List associating slot ids found inside the unlinked summary for the
402 * compilation unit with propagated and inferred types.
403 */
404 @Id(1)
405 List<EntityRef> get types;
406 }
407
408 /**
409 * Summary information about a package.
410 */
411 @TopLevel('PBdl')
412 abstract class PackageBundle extends base.SummaryClass {
413 factory PackageBundle.fromBuffer(List<int> buffer) =>
414 generated.readPackageBundle(buffer);
415
416 /**
417 * Linked libraries.
418 */
419 @Id(0)
420 List<LinkedLibrary> get linkedLibraries;
421
422 /**
423 * The list of URIs of items in [linkedLibraries], e.g. `dart:core` or
424 * `package:foo/bar.dart`.
425 */
426 @Id(1)
427 List<String> get linkedLibraryUris;
428
429 /**
430 * List of MD5 hashes of the files listed in [unlinkedUnitUris]. Each hash
431 * is encoded as a hexadecimal string using lower case letters.
432 */
433 @Id(4)
434 List<String> get unlinkedUnitHashes;
435
436 /**
437 * Unlinked information for the compilation units constituting the package.
438 */
439 @Id(2)
440 List<UnlinkedUnit> get unlinkedUnits;
441
442 /**
443 * The list of URIs of items in [unlinkedUnits], e.g. `dart:core/bool.dart`.
444 */
445 @Id(3)
446 List<String> get unlinkedUnitUris;
447 }
448
449 /**
450 * Index information about a package.
451 */
452 @TopLevel('Indx')
453 abstract class PackageIndex extends base.SummaryClass {
454 factory PackageIndex.fromBuffer(List<int> buffer) =>
455 generated.readPackageIndex(buffer);
456
457 /**
458 * Each item of this list corresponds to a unique library URI with an element
459 * referenced in the [PackageIndex]. It is an index into [uris] list.
460 */
461 @Id(2)
462 List<int> get elementLibraryUris;
463
464 /**
465 * Each item of this list corresponds to a unique referenced element. It is
466 * the offset of the element name relative to the beginning of the file. The
467 * list is sorted in ascending order, so that the client can quickly check
468 * whether an element is referenced in this [PackageIndex].
469 */
470 @Id(1)
471 List<int> get elementOffsets;
472
473 /**
474 * Each item of this list corresponds to a unique referenced element. It is
475 * the index into [elementLibraryUris] and [elementUnitUris] for the library
476 * specific unit where the element is declared.
477 */
478 @Id(0)
479 List<int> get elementUnits;
480
481 /**
482 * Each item of this list corresponds to a unique unit URI with an element
483 * referenced in the [PackageIndex]. It is an index into [uris] list.
484 */
485 @Id(3)
486 List<int> get elementUnitUris;
487
488 /**
489 * List of units indexed in this [PackageIndex].
490 */
491 @Id(5)
492 List<UnitIndex> get units;
493
494 /**
495 * List of unique URIs used in this [PackageIndex].
496 */
497 @Id(4)
498 List<String> get uris;
499 }
500
501 /**
502 * Enum used to indicate the kind of entity referred to by a 50 * Enum used to indicate the kind of entity referred to by a
503 * [LinkedReference]. 51 * [LinkedReference].
504 */ 52 */
505 enum ReferenceKind { 53 enum ReferenceKind : byte {
506 /** 54 /**
507 * The entity is a class or enum. 55 * The entity is a class or enum.
508 */ 56 */
509 classOrEnum, 57 classOrEnum,
510 58
511 /** 59 /**
512 * The entity is a constructor. 60 * The entity is a constructor.
513 */ 61 */
514 constructor, 62 constructor,
515 63
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
560 */ 108 */
561 prefix, 109 prefix,
562 110
563 /** 111 /**
564 * The entity being referred to does not exist. 112 * The entity being referred to does not exist.
565 */ 113 */
566 unresolved 114 unresolved
567 } 115 }
568 116
569 /** 117 /**
570 * Index information about a unit in a [PackageIndex].
571 */
572 abstract class UnitIndex extends base.SummaryClass {
573 /**
574 * Each item of this list is the index into [PackageIndex.elementUnits] and
575 * [PackageIndex.elementOffsets]. The list is sorted in ascending order, so
576 * that the client can quickly find element references in this [UnitIndex].
577 */
578 @Id(4)
579 List<int> get elements;
580
581 /**
582 * Each item of this list is the kind of the element usage.
583 */
584 @Id(5)
585 List<IndexRelationKind> get kinds;
586
587 /**
588 * The library source URI of this unit, e.g. `dart:core` or
589 * `package:foo/bar.dart`, as index into [PackageIndex.uris].
590 */
591 @Id(0)
592 int get libraryUri;
593
594 /**
595 * Each item of this list is the length of the element usage.
596 */
597 @Id(2)
598 List<int> get locationLengths;
599
600 /**
601 * Each item of this list is the offset of the element usage relative to the
602 * beginning of the file.
603 */
604 @Id(3)
605 List<int> get locationOffsets;
606
607 /**
608 * The unit source URI of this unit, e.g. `dart:core/int.dart` or
609 * `package:foo/bar/baz.dart`, as index into [PackageIndex.uris].
610 */
611 @Id(1)
612 int get unitUri;
613 }
614
615 /**
616 * Unlinked summary information about a class declaration.
617 */
618 abstract class UnlinkedClass extends base.SummaryClass {
619 /**
620 * Annotations for this class.
621 */
622 @Id(5)
623 List<UnlinkedConst> get annotations;
624
625 /**
626 * Documentation comment for the class, or `null` if there is no
627 * documentation comment.
628 */
629 @informative
630 @Id(6)
631 UnlinkedDocumentationComment get documentationComment;
632
633 /**
634 * Executable objects (methods, getters, and setters) contained in the class.
635 */
636 @Id(2)
637 List<UnlinkedExecutable> get executables;
638
639 /**
640 * Field declarations contained in the class.
641 */
642 @Id(4)
643 List<UnlinkedVariable> get fields;
644
645 /**
646 * Indicates whether this class is the core "Object" class (and hence has no
647 * supertype)
648 */
649 @Id(12)
650 bool get hasNoSupertype;
651
652 /**
653 * Interfaces appearing in an `implements` clause, if any.
654 */
655 @Id(7)
656 List<EntityRef> get interfaces;
657
658 /**
659 * Indicates whether the class is declared with the `abstract` keyword.
660 */
661 @Id(8)
662 bool get isAbstract;
663
664 /**
665 * Indicates whether the class is declared using mixin application syntax.
666 */
667 @Id(11)
668 bool get isMixinApplication;
669
670 /**
671 * Mixins appearing in a `with` clause, if any.
672 */
673 @Id(10)
674 List<EntityRef> get mixins;
675
676 /**
677 * Name of the class.
678 */
679 @Id(0)
680 String get name;
681
682 /**
683 * Offset of the class name relative to the beginning of the file.
684 */
685 @informative
686 @Id(1)
687 int get nameOffset;
688
689 /**
690 * Supertype of the class, or `null` if either (a) the class doesn't
691 * explicitly declare a supertype (and hence has supertype `Object`), or (b)
692 * the class *is* `Object` (and hence has no supertype).
693 */
694 @Id(3)
695 EntityRef get supertype;
696
697 /**
698 * Type parameters of the class, if any.
699 */
700 @Id(9)
701 List<UnlinkedTypeParam> get typeParameters;
702 }
703
704 /**
705 * Unlinked summary information about a `show` or `hide` combinator in an
706 * import or export declaration.
707 */
708 abstract class UnlinkedCombinator extends base.SummaryClass {
709 /**
710 * If this is a `show` combinator, offset of the end of the list of shown
711 * names. Otherwise zero.
712 */
713 @informative
714 @Id(3)
715 int get end;
716
717 /**
718 * List of names which are hidden. Empty if this is a `show` combinator.
719 */
720 @Id(1)
721 List<String> get hides;
722
723 /**
724 * If this is a `show` combinator, offset of the `show` keyword. Otherwise
725 * zero.
726 */
727 @informative
728 @Id(2)
729 int get offset;
730
731 /**
732 * List of names which are shown. Empty if this is a `hide` combinator.
733 */
734 @Id(0)
735 List<String> get shows;
736 }
737
738 /**
739 * Unlinked summary information about a compile-time constant expression, or a
740 * potentially constant expression.
741 *
742 * Constant expressions are represented using a simple stack-based language
743 * where [operations] is a sequence of operations to execute starting with an
744 * empty stack. Once all operations have been executed, the stack should
745 * contain a single value which is the value of the constant. Note that some
746 * operations consume additional data from the other fields of this class.
747 */
748 abstract class UnlinkedConst extends base.SummaryClass {
749 /**
750 * Sequence of 64-bit doubles consumed by the operation `pushDouble`.
751 */
752 @Id(4)
753 List<double> get doubles;
754
755 /**
756 * Sequence of unsigned 32-bit integers consumed by the operations
757 * `pushArgument`, `pushInt`, `shiftOr`, `concatenate`, `invokeConstructor`,
758 * `makeList`, and `makeMap`.
759 */
760 @Id(1)
761 List<int> get ints;
762
763 /**
764 * Indicates whether the expression is not a valid potentially constant
765 * expression.
766 */
767 @Id(5)
768 bool get isInvalid;
769
770 /**
771 * Sequence of operations to execute (starting with an empty stack) to form
772 * the constant value.
773 */
774 @Id(0)
775 List<UnlinkedConstOperation> get operations;
776
777 /**
778 * Sequence of language constructs consumed by the operations
779 * `pushReference`, `invokeConstructor`, `makeList`, and `makeMap`. Note
780 * that in the case of `pushReference` (and sometimes `invokeConstructor` the
781 * actual entity being referred to may be something other than a type.
782 */
783 @Id(2)
784 List<EntityRef> get references;
785
786 /**
787 * Sequence of strings consumed by the operations `pushString` and
788 * `invokeConstructor`.
789 */
790 @Id(3)
791 List<String> get strings;
792 }
793
794 /**
795 * Enum representing the various kinds of operations which may be performed to 118 * Enum representing the various kinds of operations which may be performed to
796 * produce a constant value. These options are assumed to execute in the 119 * produce a constant value. These options are assumed to execute in the
797 * context of a stack which is initially empty. 120 * context of a stack which is initially empty.
798 */ 121 */
799 enum UnlinkedConstOperation { 122 enum UnlinkedConstOperation : byte {
800 /** 123 /**
801 * Push the next value from [UnlinkedConst.ints] (a 32-bit unsigned integer) 124 * Push the next value from [UnlinkedConst.ints] (a 32-bit unsigned integer)
802 * onto the stack. 125 * onto the stack.
803 * 126 *
804 * Note that Dart supports integers larger than 32 bits; these are 127 * Note that Dart supports integers larger than 32 bits; these are
805 * represented by composing 32-bit values using the [pushLongInt] operation. 128 * represented by composing 32-bit values using the [pushLongInt] operation.
806 */ 129 */
807 pushInt, 130 pushInt,
808 131
809 /** 132 /**
(...skipping 261 matching lines...) Expand 10 before | Expand all | Expand 10 after
1071 /** 394 /**
1072 * Pop the top 3 values from the stack, compute `v1 ? v2 : v3`, and push the 395 * Pop the top 3 values from the stack, compute `v1 ? v2 : v3`, and push the
1073 * result back onto the stack. 396 * result back onto the stack.
1074 */ 397 */
1075 conditional, 398 conditional,
1076 399
1077 /** 400 /**
1078 * Pop the top value from the stack, evaluate `v.length`, and push the result 401 * Pop the top value from the stack, evaluate `v.length`, and push the result
1079 * back onto the stack. 402 * back onto the stack.
1080 */ 403 */
1081 length, 404 length
405 }
406
407 /**
408 * Enum used to indicate the kind of an constructor initializer.
409 */
410 enum UnlinkedConstructorInitializerKind : byte {
411 /**
412 * Initialization of a field.
413 */
414 field,
415
416 /**
417 * Invocation of a constructor in the same class.
418 */
419 thisInvocation,
420
421 /**
422 * Invocation of a superclass' constructor.
423 */
424 superInvocation
425 }
426
427 /**
428 * Enum used to indicate the kind of an executable.
429 */
430 enum UnlinkedExecutableKind : byte {
431 /**
432 * Executable is a function or method.
433 */
434 functionOrMethod,
435
436 /**
437 * Executable is a getter.
438 */
439 getter,
440
441 /**
442 * Executable is a setter.
443 */
444 setter,
445
446 /**
447 * Executable is a constructor.
448 */
449 constructor
450 }
451
452 /**
453 * Enum used to indicate the kind of a parameter.
454 */
455 enum UnlinkedParamKind : byte {
456 /**
457 * Parameter is required.
458 */
459 required,
460
461 /**
462 * Parameter is positional optional (enclosed in `[]`)
463 */
464 positional,
465
466 /**
467 * Parameter is named optional (enclosed in `{}`)
468 */
469 named
470 }
471
472 /**
473 * Summary information about a reference to a an entity such as a type, top
474 * level executable, or executable within a class.
475 */
476 table EntityRef {
477 /**
478 * If this is a reference to a function type implicitly defined by a
479 * function-typed parameter, a list of zero-based indices indicating the path
480 * from the entity referred to by [reference] to the appropriate type
481 * parameter. Otherwise the empty list.
482 *
483 * If there are N indices in this list, then the entity being referred to is
484 * the function type implicitly defined by a function-typed parameter of a
485 * function-typed parameter, to N levels of nesting. The first index in the
486 * list refers to the outermost level of nesting; for example if [reference]
487 * refers to the entity defined by:
488 *
489 * void f(x, void g(y, z, int h(String w))) { ... }
490 *
491 * Then to refer to the function type implicitly defined by parameter `h`
492 * (which is parameter 2 of parameter 1 of `f`), then
493 * [implicitFunctionTypeIndices] should be [1, 2].
494 *
495 * Note that if the entity being referred to is a generic method inside a
496 * generic class, then the type arguments in [typeArguments] are applied
497 * first to the class and then to the method.
498 */
499 implicitFunctionTypeIndices:[uint] (id: 4);
500
501 /**
502 * If this is a reference to a type parameter, one-based index into the list
503 * of [UnlinkedTypeParam]s currently in effect. Indexing is done using De
504 * Bruijn index conventions; that is, innermost parameters come first, and
505 * if a class or method has multiple parameters, they are indexed from right
506 * to left. So for instance, if the enclosing declaration is
507 *
508 * class C<T,U> {
509 * m<V,W> {
510 * ...
511 * }
512 * }
513 *
514 * Then [paramReference] values of 1, 2, 3, and 4 represent W, V, U, and T,
515 * respectively.
516 *
517 * If the type being referred to is not a type parameter, [paramReference] is
518 * zero.
519 */
520 paramReference:uint (id: 3);
521
522 /**
523 * Index into [UnlinkedUnit.references] for the entity being referred to, or
524 * zero if this is a reference to a type parameter.
525 */
526 reference:uint (id: 0);
527
528 /**
529 * If this [EntityRef] is contained within [LinkedUnit.types], slot id (which
530 * is unique within the compilation unit) identifying the target of type
531 * propagation or type inference with which this [EntityRef] is associated.
532 *
533 * Otherwise zero.
534 */
535 slot:uint (id: 2);
536
537 /**
538 * If this [EntityRef] is a reference to a function type whose
539 * [FunctionElement] is not in any library (e.g. a function type that was
540 * synthesized by a LUB computation), the function parameters. Otherwise
541 * empty.
542 */
543 syntheticParams:[UnlinkedParam] (id: 6);
544
545 /**
546 * If this [EntityRef] is a reference to a function type whose
547 * [FunctionElement] is not in any library (e.g. a function type that was
548 * synthesized by a LUB computation), the return type of the function.
549 * Otherwise `null`.
550 */
551 syntheticReturnType:EntityRef (id: 5);
552
553 /**
554 * If this is an instantiation of a generic type or generic executable, the
555 * type arguments used to instantiate it. Trailing type arguments of type
556 * `dynamic` are omitted.
557 */
558 typeArguments:[EntityRef] (id: 1);
559 }
560
561 /**
562 * Information about a dependency that exists between one library and another
563 * due to an "import" declaration.
564 */
565 table LinkedDependency {
566 /**
567 * URI for the compilation units listed in the library's `part` declarations.
568 * These URIs are relative to the importing library.
569 */
570 parts:[string] (id: 1);
571
572 /**
573 * The relative URI of the dependent library. This URI is relative to the
574 * importing library, even if there are intervening `export` declarations.
575 * So, for example, if `a.dart` imports `b/c.dart` and `b/c.dart` exports
576 * `d/e.dart`, the URI listed for `a.dart`'s dependency on `e.dart` will be
577 * `b/d/e.dart`.
578 */
579 uri:string (id: 0);
580 }
581
582 /**
583 * Information about a single name in the export namespace of the library that
584 * is not in the public namespace.
585 */
586 table LinkedExportName {
587 /**
588 * Index into [LinkedLibrary.dependencies] for the library in which the
589 * entity is defined.
590 */
591 dependency:uint (id: 0);
592
593 /**
594 * The kind of the entity being referred to.
595 */
596 kind:ReferenceKind (id: 3);
597
598 /**
599 * Name of the exported entity. For an exported setter, this name includes
600 * the trailing '='.
601 */
602 name:string (id: 1);
603
604 /**
605 * Integer index indicating which unit in the exported library contains the
606 * definition of the entity. As with indices into [LinkedLibrary.units],
607 * zero represents the defining compilation unit, and nonzero values
608 * represent parts in the order of the corresponding `part` declarations.
609 */
610 unit:uint (id: 2);
611 }
612
613 /**
614 * Linked summary of a library.
615 */
616 table LinkedLibrary {
617 /**
618 * The libraries that this library depends on (either via an explicit import
619 * statement or via the implicit dependencies on `dart:core` and
620 * `dart:async`). The first element of this array is a pseudo-dependency
621 * representing the library itself (it is also used for `dynamic` and
622 * `void`). This is followed by elements representing "prelinked"
623 * dependencies (direct imports and the transitive closure of exports).
624 * After the prelinked dependencies are elements representing "linked"
625 * dependencies.
626 *
627 * A library is only included as a "linked" dependency if it is a true
628 * dependency (e.g. a propagated or inferred type or constant value
629 * implicitly refers to an element declared in the library) or
630 * anti-dependency (e.g. the result of type propagation or type inference
631 * depends on the lack of a certain declaration in the library).
632 */
633 dependencies:[LinkedDependency] (id: 0);
634
635 /**
636 * Information about entities in the export namespace of the library that are
637 * not in the public namespace of the library (that is, entities that are
638 * brought into the namespace via `export` directives).
639 *
640 * Sorted by name.
641 */
642 exportNames:[LinkedExportName] (id: 4);
643
644 /**
645 * For each import in [UnlinkedUnit.imports], an index into [dependencies]
646 * of the library being imported.
647 */
648 importDependencies:[uint] (id: 1);
649
650 /**
651 * The number of elements in [dependencies] which are not "linked"
652 * dependencies (that is, the number of libraries in the direct imports plus
653 * the transitive closure of exports, plus the library itself).
654 */
655 numPrelinkedDependencies:uint (id: 2);
656
657 /**
658 * The linked summary of all the compilation units constituting the
659 * library. The summary of the defining compilation unit is listed first,
660 * followed by the summary of each part, in the order of the `part`
661 * declarations in the defining compilation unit.
662 */
663 units:[LinkedUnit] (id: 3);
664 }
665
666 /**
667 * Information about the resolution of an [UnlinkedReference].
668 */
669 table LinkedReference {
670 /**
671 * If this [LinkedReference] doesn't have an associated [UnlinkedReference],
672 * and the entity being referred to is contained within another entity, index
673 * of the containing entity. This behaves similarly to
674 * [UnlinkedReference.prefixReference], however it is only used for class
675 * members, not for prefixed imports.
676 *
677 * Containing references must always point backward; that is, for all i, if
678 * LinkedUnit.references[i].containingReference != 0, then
679 * LinkedUnit.references[i].containingReference < i.
680 */
681 containingReference:uint (id: 5);
682
683 /**
684 * Index into [LinkedLibrary.dependencies] indicating which imported library
685 * declares the entity being referred to.
686 *
687 * Zero if this entity is contained within another entity (e.g. a class
688 * member), or if [kind] is [ReferenceKind.prefix].
689 */
690 dependency:uint (id: 1);
691
692 /**
693 * The kind of the entity being referred to. For the pseudo-types `dynamic`
694 * and `void`, the kind is [ReferenceKind.classOrEnum].
695 */
696 kind:ReferenceKind (id: 2);
697
698 /**
699 * If [kind] is [ReferenceKind.function] (that is, the entity being referred
700 * to is a local function), the index of the function within
701 * [UnlinkedExecutable.localFunctions]. If [kind] is
702 * [ReferenceKind.variable], the index of the variable within
703 * [UnlinkedExecutable.localVariables]. Otherwise zero.
704 */
705 localIndex:uint (id: 6);
706
707 /**
708 * If this [LinkedReference] doesn't have an associated [UnlinkedReference],
709 * name of the entity being referred to. For the pseudo-type `dynamic`, the
710 * string is "dynamic". For the pseudo-type `void`, the string is "void".
711 */
712 name:string (id: 3);
713
714 /**
715 * If the entity being referred to is generic, the number of type parameters
716 * it declares (does not include type parameters of enclosing entities).
717 * Otherwise zero.
718 */
719 numTypeParameters:uint (id: 4);
720
721 /**
722 * Integer index indicating which unit in the imported library contains the
723 * definition of the entity. As with indices into [LinkedLibrary.units],
724 * zero represents the defining compilation unit, and nonzero values
725 * represent parts in the order of the corresponding `part` declarations.
726 *
727 * Zero if this entity is contained within another entity (e.g. a class
728 * member).
729 */
730 unit:uint (id: 0);
731 }
732
733 /**
734 * Linked summary of a compilation unit.
735 */
736 table LinkedUnit {
737 /**
738 * Information about the resolution of references within the compilation
739 * unit. Each element of [UnlinkedUnit.references] has a corresponding
740 * element in this list (at the same index). If this list has additional
741 * elements beyond the number of elements in [UnlinkedUnit.references], those
742 * additional elements are references that are only referred to implicitly
743 * (e.g. elements involved in inferred or propagated types).
744 */
745 references:[LinkedReference] (id: 0);
746
747 /**
748 * List associating slot ids found inside the unlinked summary for the
749 * compilation unit with propagated and inferred types.
750 */
751 types:[EntityRef] (id: 1);
752 }
753
754 /**
755 * Summary information about a package.
756 */
757 table PackageBundle {
758 /**
759 * Linked libraries.
760 */
761 linkedLibraries:[LinkedLibrary] (id: 0);
762
763 /**
764 * The list of URIs of items in [linkedLibraries], e.g. `dart:core` or
765 * `package:foo/bar.dart`.
766 */
767 linkedLibraryUris:[string] (id: 1);
768
769 /**
770 * List of MD5 hashes of the files listed in [unlinkedUnitUris]. Each hash
771 * is encoded as a hexadecimal string using lower case letters.
772 */
773 unlinkedUnitHashes:[string] (id: 4);
774
775 /**
776 * Unlinked information for the compilation units constituting the package.
777 */
778 unlinkedUnits:[UnlinkedUnit] (id: 2);
779
780 /**
781 * The list of URIs of items in [unlinkedUnits], e.g. `dart:core/bool.dart`.
782 */
783 unlinkedUnitUris:[string] (id: 3);
784 }
785
786 /**
787 * Index information about a package.
788 */
789 table PackageIndex {
790 /**
791 * Each item of this list corresponds to a unique library URI with an element
792 * referenced in the [PackageIndex]. It is an index into [uris] list.
793 */
794 elementLibraryUris:[uint] (id: 2);
795
796 /**
797 * Each item of this list corresponds to a unique referenced element. It is
798 * the offset of the element name relative to the beginning of the file. The
799 * list is sorted in ascending order, so that the client can quickly check
800 * whether an element is referenced in this [PackageIndex].
801 */
802 elementOffsets:[uint] (id: 1);
803
804 /**
805 * Each item of this list corresponds to a unique referenced element. It is
806 * the index into [elementLibraryUris] and [elementUnitUris] for the library
807 * specific unit where the element is declared.
808 */
809 elementUnits:[uint] (id: 0);
810
811 /**
812 * Each item of this list corresponds to a unique unit URI with an element
813 * referenced in the [PackageIndex]. It is an index into [uris] list.
814 */
815 elementUnitUris:[uint] (id: 3);
816
817 /**
818 * List of units indexed in this [PackageIndex].
819 */
820 units:[UnitIndex] (id: 5);
821
822 /**
823 * List of unique URIs used in this [PackageIndex].
824 */
825 uris:[string] (id: 4);
826 }
827
828 /**
829 * Index information about a unit in a [PackageIndex].
830 */
831 table UnitIndex {
832 /**
833 * Each item of this list is the index into [PackageIndex.elementUnits] and
834 * [PackageIndex.elementOffsets]. The list is sorted in ascending order, so
835 * that the client can quickly find element references in this [UnitIndex].
836 */
837 elements:[uint] (id: 4);
838
839 /**
840 * Each item of this list is the kind of the element usage.
841 */
842 kinds:[IndexRelationKind] (id: 5);
843
844 /**
845 * The library source URI of this unit, e.g. `dart:core` or
846 * `package:foo/bar.dart`, as index into [PackageIndex.uris].
847 */
848 libraryUri:uint (id: 0);
849
850 /**
851 * Each item of this list is the length of the element usage.
852 */
853 locationLengths:[uint] (id: 2);
854
855 /**
856 * Each item of this list is the offset of the element usage relative to the
857 * beginning of the file.
858 */
859 locationOffsets:[uint] (id: 3);
860
861 /**
862 * The unit source URI of this unit, e.g. `dart:core/int.dart` or
863 * `package:foo/bar/baz.dart`, as index into [PackageIndex.uris].
864 */
865 unitUri:uint (id: 1);
866 }
867
868 /**
869 * Unlinked summary information about a class declaration.
870 */
871 table UnlinkedClass {
872 /**
873 * Annotations for this class.
874 */
875 annotations:[UnlinkedConst] (id: 5);
876
877 /**
878 * Documentation comment for the class, or `null` if there is no
879 * documentation comment.
880 */
881 documentationComment:UnlinkedDocumentationComment (id: 6);
882
883 /**
884 * Executable objects (methods, getters, and setters) contained in the class.
885 */
886 executables:[UnlinkedExecutable] (id: 2);
887
888 /**
889 * Field declarations contained in the class.
890 */
891 fields:[UnlinkedVariable] (id: 4);
892
893 /**
894 * Indicates whether this class is the core "Object" class (and hence has no
895 * supertype)
896 */
897 hasNoSupertype:bool (id: 12);
898
899 /**
900 * Interfaces appearing in an `implements` clause, if any.
901 */
902 interfaces:[EntityRef] (id: 7);
903
904 /**
905 * Indicates whether the class is declared with the `abstract` keyword.
906 */
907 isAbstract:bool (id: 8);
908
909 /**
910 * Indicates whether the class is declared using mixin application syntax.
911 */
912 isMixinApplication:bool (id: 11);
913
914 /**
915 * Mixins appearing in a `with` clause, if any.
916 */
917 mixins:[EntityRef] (id: 10);
918
919 /**
920 * Name of the class.
921 */
922 name:string (id: 0);
923
924 /**
925 * Offset of the class name relative to the beginning of the file.
926 */
927 nameOffset:uint (id: 1);
928
929 /**
930 * Supertype of the class, or `null` if either (a) the class doesn't
931 * explicitly declare a supertype (and hence has supertype `Object`), or (b)
932 * the class *is* `Object` (and hence has no supertype).
933 */
934 supertype:EntityRef (id: 3);
935
936 /**
937 * Type parameters of the class, if any.
938 */
939 typeParameters:[UnlinkedTypeParam] (id: 9);
940 }
941
942 /**
943 * Unlinked summary information about a `show` or `hide` combinator in an
944 * import or export declaration.
945 */
946 table UnlinkedCombinator {
947 /**
948 * If this is a `show` combinator, offset of the end of the list of shown
949 * names. Otherwise zero.
950 */
951 end:uint (id: 3);
952
953 /**
954 * List of names which are hidden. Empty if this is a `show` combinator.
955 */
956 hides:[string] (id: 1);
957
958 /**
959 * If this is a `show` combinator, offset of the `show` keyword. Otherwise
960 * zero.
961 */
962 offset:uint (id: 2);
963
964 /**
965 * List of names which are shown. Empty if this is a `hide` combinator.
966 */
967 shows:[string] (id: 0);
968 }
969
970 /**
971 * Unlinked summary information about a compile-time constant expression, or a
972 * potentially constant expression.
973 *
974 * Constant expressions are represented using a simple stack-based language
975 * where [operations] is a sequence of operations to execute starting with an
976 * empty stack. Once all operations have been executed, the stack should
977 * contain a single value which is the value of the constant. Note that some
978 * operations consume additional data from the other fields of this class.
979 */
980 table UnlinkedConst {
981 /**
982 * Sequence of 64-bit doubles consumed by the operation `pushDouble`.
983 */
984 doubles:[double] (id: 4);
985
986 /**
987 * Sequence of unsigned 32-bit integers consumed by the operations
988 * `pushArgument`, `pushInt`, `shiftOr`, `concatenate`, `invokeConstructor`,
989 * `makeList`, and `makeMap`.
990 */
991 ints:[uint] (id: 1);
992
993 /**
994 * Indicates whether the expression is not a valid potentially constant
995 * expression.
996 */
997 isInvalid:bool (id: 5);
998
999 /**
1000 * Sequence of operations to execute (starting with an empty stack) to form
1001 * the constant value.
1002 */
1003 operations:[UnlinkedConstOperation] (id: 0);
1004
1005 /**
1006 * Sequence of language constructs consumed by the operations
1007 * `pushReference`, `invokeConstructor`, `makeList`, and `makeMap`. Note
1008 * that in the case of `pushReference` (and sometimes `invokeConstructor` the
1009 * actual entity being referred to may be something other than a type.
1010 */
1011 references:[EntityRef] (id: 2);
1012
1013 /**
1014 * Sequence of strings consumed by the operations `pushString` and
1015 * `invokeConstructor`.
1016 */
1017 strings:[string] (id: 3);
1082 } 1018 }
1083 1019
1084 /** 1020 /**
1085 * Unlinked summary information about a constructor initializer. 1021 * Unlinked summary information about a constructor initializer.
1086 */ 1022 */
1087 abstract class UnlinkedConstructorInitializer extends base.SummaryClass { 1023 table UnlinkedConstructorInitializer {
1088 /** 1024 /**
1089 * If [kind] is `thisInvocation` or `superInvocation`, the arguments of the 1025 * If [kind] is `thisInvocation` or `superInvocation`, the arguments of the
1090 * invocation. Otherwise empty. 1026 * invocation. Otherwise empty.
1091 */ 1027 */
1092 @Id(3) 1028 arguments:[UnlinkedConst] (id: 3);
1093 List<UnlinkedConst> get arguments;
1094 1029
1095 /** 1030 /**
1096 * If [kind] is `field`, the expression of the field initializer. 1031 * If [kind] is `field`, the expression of the field initializer.
1097 * Otherwise `null`. 1032 * Otherwise `null`.
1098 */ 1033 */
1099 @Id(1) 1034 expression:UnlinkedConst (id: 1);
1100 UnlinkedConst get expression;
1101 1035
1102 /** 1036 /**
1103 * The kind of the constructor initializer (field, redirect, super). 1037 * The kind of the constructor initializer (field, redirect, super).
1104 */ 1038 */
1105 @Id(2) 1039 kind:UnlinkedConstructorInitializerKind (id: 2);
1106 UnlinkedConstructorInitializerKind get kind;
1107 1040
1108 /** 1041 /**
1109 * If [kind] is `field`, the name of the field declared in the class. If 1042 * If [kind] is `field`, the name of the field declared in the class. If
1110 * [kind] is `thisInvocation`, the name of the constructor, declared in this 1043 * [kind] is `thisInvocation`, the name of the constructor, declared in this
1111 * class, to redirect to. If [kind] is `superInvocation`, the name of the 1044 * class, to redirect to. If [kind] is `superInvocation`, the name of the
1112 * constructor, declared in the superclass, to invoke. 1045 * constructor, declared in the superclass, to invoke.
1113 */ 1046 */
1114 @Id(0) 1047 name:string (id: 0);
1115 String get name;
1116 }
1117
1118 /**
1119 * Enum used to indicate the kind of an constructor initializer.
1120 */
1121 enum UnlinkedConstructorInitializerKind {
1122 /**
1123 * Initialization of a field.
1124 */
1125 field,
1126
1127 /**
1128 * Invocation of a constructor in the same class.
1129 */
1130 thisInvocation,
1131
1132 /**
1133 * Invocation of a superclass' constructor.
1134 */
1135 superInvocation
1136 } 1048 }
1137 1049
1138 /** 1050 /**
1139 * Unlinked summary information about a documentation comment. 1051 * Unlinked summary information about a documentation comment.
1140 */ 1052 */
1141 abstract class UnlinkedDocumentationComment extends base.SummaryClass { 1053 table UnlinkedDocumentationComment {
1142 /** 1054 /**
1143 * Length of the documentation comment (prior to replacing '\r\n' with '\n'). 1055 * Length of the documentation comment (prior to replacing '\r\n' with '\n').
1144 */ 1056 */
1145 @Id(0) 1057 length:uint (id: 0);
1146 int get length;
1147 1058
1148 /** 1059 /**
1149 * Offset of the beginning of the documentation comment relative to the 1060 * Offset of the beginning of the documentation comment relative to the
1150 * beginning of the file. 1061 * beginning of the file.
1151 */ 1062 */
1152 @Id(2) 1063 offset:uint (id: 2);
1153 int get offset;
1154 1064
1155 /** 1065 /**
1156 * Text of the documentation comment, with '\r\n' replaced by '\n'. 1066 * Text of the documentation comment, with '\r\n' replaced by '\n'.
1157 * 1067 *
1158 * References appearing within the doc comment in square brackets are not 1068 * References appearing within the doc comment in square brackets are not
1159 * specially encoded. 1069 * specially encoded.
1160 */ 1070 */
1161 @Id(1) 1071 text:string (id: 1);
1162 String get text;
1163 } 1072 }
1164 1073
1165 /** 1074 /**
1166 * Unlinked summary information about an enum declaration. 1075 * Unlinked summary information about an enum declaration.
1167 */ 1076 */
1168 abstract class UnlinkedEnum extends base.SummaryClass { 1077 table UnlinkedEnum {
1169 /** 1078 /**
1170 * Annotations for this enum. 1079 * Annotations for this enum.
1171 */ 1080 */
1172 @Id(4) 1081 annotations:[UnlinkedConst] (id: 4);
1173 List<UnlinkedConst> get annotations;
1174 1082
1175 /** 1083 /**
1176 * Documentation comment for the enum, or `null` if there is no documentation 1084 * Documentation comment for the enum, or `null` if there is no documentation
1177 * comment. 1085 * comment.
1178 */ 1086 */
1179 @informative 1087 documentationComment:UnlinkedDocumentationComment (id: 3);
1180 @Id(3)
1181 UnlinkedDocumentationComment get documentationComment;
1182 1088
1183 /** 1089 /**
1184 * Name of the enum type. 1090 * Name of the enum type.
1185 */ 1091 */
1186 @Id(0) 1092 name:string (id: 0);
1187 String get name;
1188 1093
1189 /** 1094 /**
1190 * Offset of the enum name relative to the beginning of the file. 1095 * Offset of the enum name relative to the beginning of the file.
1191 */ 1096 */
1192 @informative 1097 nameOffset:uint (id: 1);
1193 @Id(1)
1194 int get nameOffset;
1195 1098
1196 /** 1099 /**
1197 * Values listed in the enum declaration, in declaration order. 1100 * Values listed in the enum declaration, in declaration order.
1198 */ 1101 */
1199 @Id(2) 1102 values:[UnlinkedEnumValue] (id: 2);
1200 List<UnlinkedEnumValue> get values;
1201 } 1103 }
1202 1104
1203 /** 1105 /**
1204 * Unlinked summary information about a single enumerated value in an enum 1106 * Unlinked summary information about a single enumerated value in an enum
1205 * declaration. 1107 * declaration.
1206 */ 1108 */
1207 abstract class UnlinkedEnumValue extends base.SummaryClass { 1109 table UnlinkedEnumValue {
1208 /** 1110 /**
1209 * Documentation comment for the enum value, or `null` if there is no 1111 * Documentation comment for the enum value, or `null` if there is no
1210 * documentation comment. 1112 * documentation comment.
1211 */ 1113 */
1212 @informative 1114 documentationComment:UnlinkedDocumentationComment (id: 2);
1213 @Id(2)
1214 UnlinkedDocumentationComment get documentationComment;
1215 1115
1216 /** 1116 /**
1217 * Name of the enumerated value. 1117 * Name of the enumerated value.
1218 */ 1118 */
1219 @Id(0) 1119 name:string (id: 0);
1220 String get name;
1221 1120
1222 /** 1121 /**
1223 * Offset of the enum value name relative to the beginning of the file. 1122 * Offset of the enum value name relative to the beginning of the file.
1224 */ 1123 */
1225 @informative 1124 nameOffset:uint (id: 1);
1226 @Id(1)
1227 int get nameOffset;
1228 } 1125 }
1229 1126
1230 /** 1127 /**
1231 * Unlinked summary information about a function, method, getter, or setter 1128 * Unlinked summary information about a function, method, getter, or setter
1232 * declaration. 1129 * declaration.
1233 */ 1130 */
1234 abstract class UnlinkedExecutable extends base.SummaryClass { 1131 table UnlinkedExecutable {
1235 /** 1132 /**
1236 * Annotations for this executable. 1133 * Annotations for this executable.
1237 */ 1134 */
1238 @Id(6) 1135 annotations:[UnlinkedConst] (id: 6);
1239 List<UnlinkedConst> get annotations;
1240 1136
1241 /** 1137 /**
1242 * If a constant [UnlinkedExecutableKind.constructor], the constructor 1138 * If a constant [UnlinkedExecutableKind.constructor], the constructor
1243 * initializers. Otherwise empty. 1139 * initializers. Otherwise empty.
1244 */ 1140 */
1245 @Id(14) 1141 constantInitializers:[UnlinkedConstructorInitializer] (id: 14);
1246 List<UnlinkedConstructorInitializer> get constantInitializers;
1247 1142
1248 /** 1143 /**
1249 * Documentation comment for the executable, or `null` if there is no 1144 * Documentation comment for the executable, or `null` if there is no
1250 * documentation comment. 1145 * documentation comment.
1251 */ 1146 */
1252 @informative 1147 documentationComment:UnlinkedDocumentationComment (id: 7);
1253 @Id(7)
1254 UnlinkedDocumentationComment get documentationComment;
1255 1148
1256 /** 1149 /**
1257 * If this executable's return type is inferable, nonzero slot id 1150 * If this executable's return type is inferable, nonzero slot id
1258 * identifying which entry in [LinkedUnit.types] contains the inferred 1151 * identifying which entry in [LinkedUnit.types] contains the inferred
1259 * return type. If there is no matching entry in [LinkedUnit.types], then 1152 * return type. If there is no matching entry in [LinkedUnit.types], then
1260 * no return type was inferred for this variable, so its static type is 1153 * no return type was inferred for this variable, so its static type is
1261 * `dynamic`. 1154 * `dynamic`.
1262 */ 1155 */
1263 @Id(5) 1156 inferredReturnTypeSlot:uint (id: 5);
1264 int get inferredReturnTypeSlot;
1265 1157
1266 /** 1158 /**
1267 * Indicates whether the executable is declared using the `abstract` keyword. 1159 * Indicates whether the executable is declared using the `abstract` keyword.
1268 */ 1160 */
1269 @Id(10) 1161 isAbstract:bool (id: 10);
1270 bool get isAbstract;
1271 1162
1272 /** 1163 /**
1273 * Indicates whether the executable is declared using the `const` keyword. 1164 * Indicates whether the executable is declared using the `const` keyword.
1274 */ 1165 */
1275 @Id(12) 1166 isConst:bool (id: 12);
1276 bool get isConst;
1277 1167
1278 /** 1168 /**
1279 * Indicates whether the executable is declared using the `external` keyword. 1169 * Indicates whether the executable is declared using the `external` keyword.
1280 */ 1170 */
1281 @Id(11) 1171 isExternal:bool (id: 11);
1282 bool get isExternal;
1283 1172
1284 /** 1173 /**
1285 * Indicates whether the executable is declared using the `factory` keyword. 1174 * Indicates whether the executable is declared using the `factory` keyword.
1286 */ 1175 */
1287 @Id(8) 1176 isFactory:bool (id: 8);
1288 bool get isFactory;
1289 1177
1290 /** 1178 /**
1291 * Indicates whether the executable is a redirected constructor. 1179 * Indicates whether the executable is a redirected constructor.
1292 */ 1180 */
1293 @Id(13) 1181 isRedirectedConstructor:bool (id: 13);
1294 bool get isRedirectedConstructor;
1295 1182
1296 /** 1183 /**
1297 * Indicates whether the executable is declared using the `static` keyword. 1184 * Indicates whether the executable is declared using the `static` keyword.
1298 * 1185 *
1299 * Note that for top level executables, this flag is false, since they are 1186 * Note that for top level executables, this flag is false, since they are
1300 * not declared using the `static` keyword (even though they are considered 1187 * not declared using the `static` keyword (even though they are considered
1301 * static for semantic purposes). 1188 * static for semantic purposes).
1302 */ 1189 */
1303 @Id(9) 1190 isStatic:bool (id: 9);
1304 bool get isStatic;
1305 1191
1306 /** 1192 /**
1307 * The kind of the executable (function/method, getter, setter, or 1193 * The kind of the executable (function/method, getter, setter, or
1308 * constructor). 1194 * constructor).
1309 */ 1195 */
1310 @Id(4) 1196 kind:UnlinkedExecutableKind (id: 4);
1311 UnlinkedExecutableKind get kind;
1312 1197
1313 /** 1198 /**
1314 * The list of local functions. 1199 * The list of local functions.
1315 */ 1200 */
1316 @Id(18) 1201 localFunctions:[UnlinkedExecutable] (id: 18);
1317 List<UnlinkedExecutable> get localFunctions;
1318 1202
1319 /** 1203 /**
1320 * The list of local labels. 1204 * The list of local labels.
1321 */ 1205 */
1322 @Id(22) 1206 localLabels:[UnlinkedLabel] (id: 22);
1323 List<UnlinkedLabel> get localLabels;
1324 1207
1325 /** 1208 /**
1326 * The list of local variables. 1209 * The list of local variables.
1327 */ 1210 */
1328 @Id(19) 1211 localVariables:[UnlinkedVariable] (id: 19);
1329 List<UnlinkedVariable> get localVariables;
1330 1212
1331 /** 1213 /**
1332 * Name of the executable. For setters, this includes the trailing "=". For 1214 * Name of the executable. For setters, this includes the trailing "=". For
1333 * named constructors, this excludes the class name and excludes the ".". 1215 * named constructors, this excludes the class name and excludes the ".".
1334 * For unnamed constructors, this is the empty string. 1216 * For unnamed constructors, this is the empty string.
1335 */ 1217 */
1336 @Id(1) 1218 name:string (id: 1);
1337 String get name;
1338 1219
1339 /** 1220 /**
1340 * If [kind] is [UnlinkedExecutableKind.constructor] and [name] is not empty, 1221 * If [kind] is [UnlinkedExecutableKind.constructor] and [name] is not empty,
1341 * the offset of the end of the constructor name. Otherwise zero. 1222 * the offset of the end of the constructor name. Otherwise zero.
1342 */ 1223 */
1343 @informative 1224 nameEnd:uint (id: 23);
1344 @Id(23)
1345 int get nameEnd;
1346 1225
1347 /** 1226 /**
1348 * Offset of the executable name relative to the beginning of the file. For 1227 * Offset of the executable name relative to the beginning of the file. For
1349 * named constructors, this excludes the class name and excludes the ".". 1228 * named constructors, this excludes the class name and excludes the ".".
1350 * For unnamed constructors, this is the offset of the class name (i.e. the 1229 * For unnamed constructors, this is the offset of the class name (i.e. the
1351 * offset of the second "C" in "class C { C(); }"). 1230 * offset of the second "C" in "class C { C(); }").
1352 */ 1231 */
1353 @informative 1232 nameOffset:uint (id: 0);
1354 @Id(0)
1355 int get nameOffset;
1356 1233
1357 /** 1234 /**
1358 * Parameters of the executable, if any. Note that getters have no 1235 * Parameters of the executable, if any. Note that getters have no
1359 * parameters (hence this will be the empty list), and setters have a single 1236 * parameters (hence this will be the empty list), and setters have a single
1360 * parameter. 1237 * parameter.
1361 */ 1238 */
1362 @Id(2) 1239 parameters:[UnlinkedParam] (id: 2);
1363 List<UnlinkedParam> get parameters;
1364 1240
1365 /** 1241 /**
1366 * If [kind] is [UnlinkedExecutableKind.constructor] and [name] is not empty, 1242 * If [kind] is [UnlinkedExecutableKind.constructor] and [name] is not empty,
1367 * the offset of the period before the constructor name. Otherwise zero. 1243 * the offset of the period before the constructor name. Otherwise zero.
1368 */ 1244 */
1369 @informative 1245 periodOffset:uint (id: 24);
1370 @Id(24)
1371 int get periodOffset;
1372 1246
1373 /** 1247 /**
1374 * If [isRedirectedConstructor] and [isFactory] are both `true`, the 1248 * If [isRedirectedConstructor] and [isFactory] are both `true`, the
1375 * constructor to which this constructor redirects; otherwise empty. 1249 * constructor to which this constructor redirects; otherwise empty.
1376 */ 1250 */
1377 @Id(15) 1251 redirectedConstructor:EntityRef (id: 15);
1378 EntityRef get redirectedConstructor;
1379 1252
1380 /** 1253 /**
1381 * If [isRedirectedConstructor] is `true` and [isFactory] is `false`, the 1254 * If [isRedirectedConstructor] is `true` and [isFactory] is `false`, the
1382 * name of the constructor that this constructor redirects to; otherwise 1255 * name of the constructor that this constructor redirects to; otherwise
1383 * empty. 1256 * empty.
1384 */ 1257 */
1385 @Id(17) 1258 redirectedConstructorName:string (id: 17);
1386 String get redirectedConstructorName;
1387 1259
1388 /** 1260 /**
1389 * Declared return type of the executable. Absent if the executable is a 1261 * Declared return type of the executable. Absent if the executable is a
1390 * constructor or the return type is implicit. Absent for executables 1262 * constructor or the return type is implicit. Absent for executables
1391 * associated with variable initializers and closures, since these 1263 * associated with variable initializers and closures, since these
1392 * executables may have return types that are not accessible via direct 1264 * executables may have return types that are not accessible via direct
1393 * imports. 1265 * imports.
1394 */ 1266 */
1395 @Id(3) 1267 returnType:EntityRef (id: 3);
1396 EntityRef get returnType;
1397 1268
1398 /** 1269 /**
1399 * Type parameters of the executable, if any. Empty if support for generic 1270 * Type parameters of the executable, if any. Empty if support for generic
1400 * method syntax is disabled. 1271 * method syntax is disabled.
1401 */ 1272 */
1402 @Id(16) 1273 typeParameters:[UnlinkedTypeParam] (id: 16);
1403 List<UnlinkedTypeParam> get typeParameters;
1404 1274
1405 /** 1275 /**
1406 * If a local function, the length of the visible range; zero otherwise. 1276 * If a local function, the length of the visible range; zero otherwise.
1407 */ 1277 */
1408 @Id(20) 1278 visibleLength:uint (id: 20);
1409 int get visibleLength;
1410 1279
1411 /** 1280 /**
1412 * If a local function, the beginning of the visible range; zero otherwise. 1281 * If a local function, the beginning of the visible range; zero otherwise.
1413 */ 1282 */
1414 @Id(21) 1283 visibleOffset:uint (id: 21);
1415 int get visibleOffset;
1416 }
1417
1418 /**
1419 * Enum used to indicate the kind of an executable.
1420 */
1421 enum UnlinkedExecutableKind {
1422 /**
1423 * Executable is a function or method.
1424 */
1425 functionOrMethod,
1426
1427 /**
1428 * Executable is a getter.
1429 */
1430 getter,
1431
1432 /**
1433 * Executable is a setter.
1434 */
1435 setter,
1436
1437 /**
1438 * Executable is a constructor.
1439 */
1440 constructor
1441 } 1284 }
1442 1285
1443 /** 1286 /**
1444 * Unlinked summary information about an export declaration (stored outside 1287 * Unlinked summary information about an export declaration (stored outside
1445 * [UnlinkedPublicNamespace]). 1288 * [UnlinkedPublicNamespace]).
1446 */ 1289 */
1447 abstract class UnlinkedExportNonPublic extends base.SummaryClass { 1290 table UnlinkedExportNonPublic {
1448 /** 1291 /**
1449 * Annotations for this export directive. 1292 * Annotations for this export directive.
1450 */ 1293 */
1451 @Id(3) 1294 annotations:[UnlinkedConst] (id: 3);
1452 List<UnlinkedConst> get annotations;
1453 1295
1454 /** 1296 /**
1455 * Offset of the "export" keyword. 1297 * Offset of the "export" keyword.
1456 */ 1298 */
1457 @informative 1299 offset:uint (id: 0);
1458 @Id(0)
1459 int get offset;
1460 1300
1461 /** 1301 /**
1462 * End of the URI string (including quotes) relative to the beginning of the 1302 * End of the URI string (including quotes) relative to the beginning of the
1463 * file. 1303 * file.
1464 */ 1304 */
1465 @informative 1305 uriEnd:uint (id: 1);
1466 @Id(1)
1467 int get uriEnd;
1468 1306
1469 /** 1307 /**
1470 * Offset of the URI string (including quotes) relative to the beginning of 1308 * Offset of the URI string (including quotes) relative to the beginning of
1471 * the file. 1309 * the file.
1472 */ 1310 */
1473 @informative 1311 uriOffset:uint (id: 2);
1474 @Id(2)
1475 int get uriOffset;
1476 } 1312 }
1477 1313
1478 /** 1314 /**
1479 * Unlinked summary information about an export declaration (stored inside 1315 * Unlinked summary information about an export declaration (stored inside
1480 * [UnlinkedPublicNamespace]). 1316 * [UnlinkedPublicNamespace]).
1481 */ 1317 */
1482 abstract class UnlinkedExportPublic extends base.SummaryClass { 1318 table UnlinkedExportPublic {
1483 /** 1319 /**
1484 * Combinators contained in this import declaration. 1320 * Combinators contained in this import declaration.
1485 */ 1321 */
1486 @Id(1) 1322 combinators:[UnlinkedCombinator] (id: 1);
1487 List<UnlinkedCombinator> get combinators;
1488 1323
1489 /** 1324 /**
1490 * URI used in the source code to reference the exported library. 1325 * URI used in the source code to reference the exported library.
1491 */ 1326 */
1492 @Id(0) 1327 uri:string (id: 0);
1493 String get uri;
1494 } 1328 }
1495 1329
1496 /** 1330 /**
1497 * Unlinked summary information about an import declaration. 1331 * Unlinked summary information about an import declaration.
1498 */ 1332 */
1499 abstract class UnlinkedImport extends base.SummaryClass { 1333 table UnlinkedImport {
1500 /** 1334 /**
1501 * Annotations for this import declaration. 1335 * Annotations for this import declaration.
1502 */ 1336 */
1503 @Id(8) 1337 annotations:[UnlinkedConst] (id: 8);
1504 List<UnlinkedConst> get annotations;
1505 1338
1506 /** 1339 /**
1507 * Combinators contained in this import declaration. 1340 * Combinators contained in this import declaration.
1508 */ 1341 */
1509 @Id(4) 1342 combinators:[UnlinkedCombinator] (id: 4);
1510 List<UnlinkedCombinator> get combinators;
1511 1343
1512 /** 1344 /**
1513 * Indicates whether the import declaration uses the `deferred` keyword. 1345 * Indicates whether the import declaration uses the `deferred` keyword.
1514 */ 1346 */
1515 @Id(9) 1347 isDeferred:bool (id: 9);
1516 bool get isDeferred;
1517 1348
1518 /** 1349 /**
1519 * Indicates whether the import declaration is implicit. 1350 * Indicates whether the import declaration is implicit.
1520 */ 1351 */
1521 @Id(5) 1352 isImplicit:bool (id: 5);
1522 bool get isImplicit;
1523 1353
1524 /** 1354 /**
1525 * If [isImplicit] is false, offset of the "import" keyword. If [isImplicit] 1355 * If [isImplicit] is false, offset of the "import" keyword. If [isImplicit]
1526 * is true, zero. 1356 * is true, zero.
1527 */ 1357 */
1528 @informative 1358 offset:uint (id: 0);
1529 @Id(0)
1530 int get offset;
1531 1359
1532 /** 1360 /**
1533 * Offset of the prefix name relative to the beginning of the file, or zero 1361 * Offset of the prefix name relative to the beginning of the file, or zero
1534 * if there is no prefix. 1362 * if there is no prefix.
1535 */ 1363 */
1536 @informative 1364 prefixOffset:uint (id: 6);
1537 @Id(6)
1538 int get prefixOffset;
1539 1365
1540 /** 1366 /**
1541 * Index into [UnlinkedUnit.references] of the prefix declared by this 1367 * Index into [UnlinkedUnit.references] of the prefix declared by this
1542 * import declaration, or zero if this import declaration declares no prefix. 1368 * import declaration, or zero if this import declaration declares no prefix.
1543 * 1369 *
1544 * Note that multiple imports can declare the same prefix. 1370 * Note that multiple imports can declare the same prefix.
1545 */ 1371 */
1546 @Id(7) 1372 prefixReference:uint (id: 7);
1547 int get prefixReference;
1548 1373
1549 /** 1374 /**
1550 * URI used in the source code to reference the imported library. 1375 * URI used in the source code to reference the imported library.
1551 */ 1376 */
1552 @Id(1) 1377 uri:string (id: 1);
1553 String get uri;
1554 1378
1555 /** 1379 /**
1556 * End of the URI string (including quotes) relative to the beginning of the 1380 * End of the URI string (including quotes) relative to the beginning of the
1557 * file. If [isImplicit] is true, zero. 1381 * file. If [isImplicit] is true, zero.
1558 */ 1382 */
1559 @informative 1383 uriEnd:uint (id: 2);
1560 @Id(2)
1561 int get uriEnd;
1562 1384
1563 /** 1385 /**
1564 * Offset of the URI string (including quotes) relative to the beginning of 1386 * Offset of the URI string (including quotes) relative to the beginning of
1565 * the file. If [isImplicit] is true, zero. 1387 * the file. If [isImplicit] is true, zero.
1566 */ 1388 */
1567 @informative 1389 uriOffset:uint (id: 3);
1568 @Id(3)
1569 int get uriOffset;
1570 } 1390 }
1571 1391
1572 /** 1392 /**
1573 * Unlinked summary information about a label. 1393 * Unlinked summary information about a label.
1574 */ 1394 */
1575 abstract class UnlinkedLabel extends base.SummaryClass { 1395 table UnlinkedLabel {
1576 /** 1396 /**
1577 * Return `true` if this label is associated with a `switch` member (`case` or 1397 * Return `true` if this label is associated with a `switch` member (`case` or
1578 * `default`). 1398 * `default`).
1579 */ 1399 */
1580 @Id(2) 1400 isOnSwitchMember:bool (id: 2);
1581 bool get isOnSwitchMember;
1582 1401
1583 /** 1402 /**
1584 * Return `true` if this label is associated with a `switch` statement. 1403 * Return `true` if this label is associated with a `switch` statement.
1585 */ 1404 */
1586 @Id(3) 1405 isOnSwitchStatement:bool (id: 3);
1587 bool get isOnSwitchStatement;
1588 1406
1589 /** 1407 /**
1590 * Name of the label. 1408 * Name of the label.
1591 */ 1409 */
1592 @Id(0) 1410 name:string (id: 0);
1593 String get name;
1594 1411
1595 /** 1412 /**
1596 * Offset of the label relative to the beginning of the file. 1413 * Offset of the label relative to the beginning of the file.
1597 */ 1414 */
1598 @informative 1415 nameOffset:uint (id: 1);
1599 @Id(1)
1600 int get nameOffset;
1601 } 1416 }
1602 1417
1603 /** 1418 /**
1604 * Unlinked summary information about a function parameter. 1419 * Unlinked summary information about a function parameter.
1605 */ 1420 */
1606 abstract class UnlinkedParam extends base.SummaryClass { 1421 table UnlinkedParam {
1607 /** 1422 /**
1608 * Annotations for this parameter. 1423 * Annotations for this parameter.
1609 */ 1424 */
1610 @Id(9) 1425 annotations:[UnlinkedConst] (id: 9);
1611 List<UnlinkedConst> get annotations;
1612 1426
1613 /** 1427 /**
1614 * If the parameter has a default value, the constant expression in the 1428 * If the parameter has a default value, the constant expression in the
1615 * default value. Note that the presence of this expression does not mean 1429 * default value. Note that the presence of this expression does not mean
1616 * that it is a valid, check [UnlinkedConst.isInvalid]. 1430 * that it is a valid, check [UnlinkedConst.isInvalid].
1617 */ 1431 */
1618 @Id(7) 1432 defaultValue:UnlinkedConst (id: 7);
1619 UnlinkedConst get defaultValue;
1620 1433
1621 /** 1434 /**
1622 * If the parameter has a default value, the source text of the constant 1435 * If the parameter has a default value, the source text of the constant
1623 * expression in the default value. Otherwise the empty string. 1436 * expression in the default value. Otherwise the empty string.
1624 */ 1437 */
1625 @informative 1438 defaultValueCode:string (id: 13);
1626 @Id(13)
1627 String get defaultValueCode;
1628 1439
1629 /** 1440 /**
1630 * If this parameter's type is inferable, nonzero slot id identifying which 1441 * If this parameter's type is inferable, nonzero slot id identifying which
1631 * entry in [LinkedLibrary.types] contains the inferred type. If there is no 1442 * entry in [LinkedLibrary.types] contains the inferred type. If there is no
1632 * matching entry in [LinkedLibrary.types], then no type was inferred for 1443 * matching entry in [LinkedLibrary.types], then no type was inferred for
1633 * this variable, so its static type is `dynamic`. 1444 * this variable, so its static type is `dynamic`.
1634 * 1445 *
1635 * Note that although strong mode considers initializing formals to be 1446 * Note that although strong mode considers initializing formals to be
1636 * inferable, they are not marked as such in the summary; if their type is 1447 * inferable, they are not marked as such in the summary; if their type is
1637 * not specified, they always inherit the static type of the corresponding 1448 * not specified, they always inherit the static type of the corresponding
1638 * field. 1449 * field.
1639 */ 1450 */
1640 @Id(2) 1451 inferredTypeSlot:uint (id: 2);
1641 int get inferredTypeSlot;
1642 1452
1643 /** 1453 /**
1644 * The synthetic initializer function of the parameter. Absent if the variabl e 1454 * The synthetic initializer function of the parameter. Absent if the variabl e
1645 * does not have an initializer. 1455 * does not have an initializer.
1646 */ 1456 */
1647 @Id(12) 1457 initializer:UnlinkedExecutable (id: 12);
1648 UnlinkedExecutable get initializer;
1649 1458
1650 /** 1459 /**
1651 * Indicates whether this is a function-typed parameter. 1460 * Indicates whether this is a function-typed parameter.
1652 */ 1461 */
1653 @Id(5) 1462 isFunctionTyped:bool (id: 5);
1654 bool get isFunctionTyped;
1655 1463
1656 /** 1464 /**
1657 * Indicates whether this is an initializing formal parameter (i.e. it is 1465 * Indicates whether this is an initializing formal parameter (i.e. it is
1658 * declared using `this.` syntax). 1466 * declared using `this.` syntax).
1659 */ 1467 */
1660 @Id(6) 1468 isInitializingFormal:bool (id: 6);
1661 bool get isInitializingFormal;
1662 1469
1663 /** 1470 /**
1664 * Kind of the parameter. 1471 * Kind of the parameter.
1665 */ 1472 */
1666 @Id(4) 1473 kind:UnlinkedParamKind (id: 4);
1667 UnlinkedParamKind get kind;
1668 1474
1669 /** 1475 /**
1670 * Name of the parameter. 1476 * Name of the parameter.
1671 */ 1477 */
1672 @Id(0) 1478 name:string (id: 0);
1673 String get name;
1674 1479
1675 /** 1480 /**
1676 * Offset of the parameter name relative to the beginning of the file. 1481 * Offset of the parameter name relative to the beginning of the file.
1677 */ 1482 */
1678 @informative 1483 nameOffset:uint (id: 1);
1679 @Id(1)
1680 int get nameOffset;
1681 1484
1682 /** 1485 /**
1683 * If [isFunctionTyped] is `true`, the parameters of the function type. 1486 * If [isFunctionTyped] is `true`, the parameters of the function type.
1684 */ 1487 */
1685 @Id(8) 1488 parameters:[UnlinkedParam] (id: 8);
1686 List<UnlinkedParam> get parameters;
1687 1489
1688 /** 1490 /**
1689 * If [isFunctionTyped] is `true`, the declared return type. If 1491 * If [isFunctionTyped] is `true`, the declared return type. If
1690 * [isFunctionTyped] is `false`, the declared type. Absent if the type is 1492 * [isFunctionTyped] is `false`, the declared type. Absent if the type is
1691 * implicit. 1493 * implicit.
1692 */ 1494 */
1693 @Id(3) 1495 type:EntityRef (id: 3);
1694 EntityRef get type;
1695 1496
1696 /** 1497 /**
1697 * The length of the visible range. 1498 * The length of the visible range.
1698 */ 1499 */
1699 @Id(10) 1500 visibleLength:uint (id: 10);
1700 int get visibleLength;
1701 1501
1702 /** 1502 /**
1703 * The beginning of the visible range. 1503 * The beginning of the visible range.
1704 */ 1504 */
1705 @Id(11) 1505 visibleOffset:uint (id: 11);
1706 int get visibleOffset;
1707 }
1708
1709 /**
1710 * Enum used to indicate the kind of a parameter.
1711 */
1712 enum UnlinkedParamKind {
1713 /**
1714 * Parameter is required.
1715 */
1716 required,
1717
1718 /**
1719 * Parameter is positional optional (enclosed in `[]`)
1720 */
1721 positional,
1722
1723 /**
1724 * Parameter is named optional (enclosed in `{}`)
1725 */
1726 named
1727 } 1506 }
1728 1507
1729 /** 1508 /**
1730 * Unlinked summary information about a part declaration. 1509 * Unlinked summary information about a part declaration.
1731 */ 1510 */
1732 abstract class UnlinkedPart extends base.SummaryClass { 1511 table UnlinkedPart {
1733 /** 1512 /**
1734 * Annotations for this part declaration. 1513 * Annotations for this part declaration.
1735 */ 1514 */
1736 @Id(2) 1515 annotations:[UnlinkedConst] (id: 2);
1737 List<UnlinkedConst> get annotations;
1738 1516
1739 /** 1517 /**
1740 * End of the URI string (including quotes) relative to the beginning of the 1518 * End of the URI string (including quotes) relative to the beginning of the
1741 * file. 1519 * file.
1742 */ 1520 */
1743 @informative 1521 uriEnd:uint (id: 0);
1744 @Id(0)
1745 int get uriEnd;
1746 1522
1747 /** 1523 /**
1748 * Offset of the URI string (including quotes) relative to the beginning of 1524 * Offset of the URI string (including quotes) relative to the beginning of
1749 * the file. 1525 * the file.
1750 */ 1526 */
1751 @informative 1527 uriOffset:uint (id: 1);
1752 @Id(1)
1753 int get uriOffset;
1754 } 1528 }
1755 1529
1756 /** 1530 /**
1757 * Unlinked summary information about a specific name contributed by a 1531 * Unlinked summary information about a specific name contributed by a
1758 * compilation unit to a library's public namespace. 1532 * compilation unit to a library's public namespace.
1759 * 1533 *
1760 * TODO(paulberry): some of this information is redundant with information 1534 * TODO(paulberry): some of this information is redundant with information
1761 * elsewhere in the summary. Consider reducing the redundancy to reduce 1535 * elsewhere in the summary. Consider reducing the redundancy to reduce
1762 * summary size. 1536 * summary size.
1763 */ 1537 */
1764 abstract class UnlinkedPublicName extends base.SummaryClass { 1538 table UnlinkedPublicName {
1765 /** 1539 /**
1766 * The kind of object referred to by the name. 1540 * The kind of object referred to by the name.
1767 */ 1541 */
1768 @Id(1) 1542 kind:ReferenceKind (id: 1);
1769 ReferenceKind get kind;
1770 1543
1771 /** 1544 /**
1772 * If this [UnlinkedPublicName] is a class, the list of members which can be 1545 * If this [UnlinkedPublicName] is a class, the list of members which can be
1773 * referenced from constants or factory redirects - static constant fields, 1546 * referenced from constants or factory redirects - static constant fields,
1774 * static methods, and constructors. Otherwise empty. 1547 * static methods, and constructors. Otherwise empty.
1775 * 1548 *
1776 * Unnamed constructors are not included since they do not constitute a 1549 * Unnamed constructors are not included since they do not constitute a
1777 * separate name added to any namespace. 1550 * separate name added to any namespace.
1778 */ 1551 */
1779 @Id(2) 1552 members:[UnlinkedPublicName] (id: 2);
1780 List<UnlinkedPublicName> get members;
1781 1553
1782 /** 1554 /**
1783 * The name itself. 1555 * The name itself.
1784 */ 1556 */
1785 @Id(0) 1557 name:string (id: 0);
1786 String get name;
1787 1558
1788 /** 1559 /**
1789 * If the entity being referred to is generic, the number of type parameters 1560 * If the entity being referred to is generic, the number of type parameters
1790 * it accepts. Otherwise zero. 1561 * it accepts. Otherwise zero.
1791 */ 1562 */
1792 @Id(3) 1563 numTypeParameters:uint (id: 3);
1793 int get numTypeParameters;
1794 } 1564 }
1795 1565
1796 /** 1566 /**
1797 * Unlinked summary information about what a compilation unit contributes to a 1567 * Unlinked summary information about what a compilation unit contributes to a
1798 * library's public namespace. This is the subset of [UnlinkedUnit] that is 1568 * library's public namespace. This is the subset of [UnlinkedUnit] that is
1799 * required from dependent libraries in order to perform prelinking. 1569 * required from dependent libraries in order to perform prelinking.
1800 */ 1570 */
1801 @TopLevel('UPNS') 1571 table UnlinkedPublicNamespace {
1802 abstract class UnlinkedPublicNamespace extends base.SummaryClass {
1803 factory UnlinkedPublicNamespace.fromBuffer(List<int> buffer) =>
1804 generated.readUnlinkedPublicNamespace(buffer);
1805
1806 /** 1572 /**
1807 * Export declarations in the compilation unit. 1573 * Export declarations in the compilation unit.
1808 */ 1574 */
1809 @Id(2) 1575 exports:[UnlinkedExportPublic] (id: 2);
1810 List<UnlinkedExportPublic> get exports;
1811 1576
1812 /** 1577 /**
1813 * Public names defined in the compilation unit. 1578 * Public names defined in the compilation unit.
1814 * 1579 *
1815 * TODO(paulberry): consider sorting these names to reduce unnecessary 1580 * TODO(paulberry): consider sorting these names to reduce unnecessary
1816 * relinking. 1581 * relinking.
1817 */ 1582 */
1818 @Id(0) 1583 names:[UnlinkedPublicName] (id: 0);
1819 List<UnlinkedPublicName> get names;
1820 1584
1821 /** 1585 /**
1822 * URIs referenced by part declarations in the compilation unit. 1586 * URIs referenced by part declarations in the compilation unit.
1823 */ 1587 */
1824 @Id(1) 1588 parts:[string] (id: 1);
1825 List<String> get parts;
1826 } 1589 }
1827 1590
1828 /** 1591 /**
1829 * Unlinked summary information about a name referred to in one library that 1592 * Unlinked summary information about a name referred to in one library that
1830 * might be defined in another. 1593 * might be defined in another.
1831 */ 1594 */
1832 abstract class UnlinkedReference extends base.SummaryClass { 1595 table UnlinkedReference {
1833 /** 1596 /**
1834 * Name of the entity being referred to. For the pseudo-type `dynamic`, the 1597 * Name of the entity being referred to. For the pseudo-type `dynamic`, the
1835 * string is "dynamic". For the pseudo-type `void`, the string is "void". 1598 * string is "dynamic". For the pseudo-type `void`, the string is "void".
1836 * For the pseudo-type `bottom`, the string is "*bottom*". 1599 * For the pseudo-type `bottom`, the string is "*bottom*".
1837 */ 1600 */
1838 @Id(0) 1601 name:string (id: 0);
1839 String get name;
1840 1602
1841 /** 1603 /**
1842 * Prefix used to refer to the entity, or zero if no prefix is used. This is 1604 * Prefix used to refer to the entity, or zero if no prefix is used. This is
1843 * an index into [UnlinkedUnit.references]. 1605 * an index into [UnlinkedUnit.references].
1844 * 1606 *
1845 * Prefix references must always point backward; that is, for all i, if 1607 * Prefix references must always point backward; that is, for all i, if
1846 * UnlinkedUnit.references[i].prefixReference != 0, then 1608 * UnlinkedUnit.references[i].prefixReference != 0, then
1847 * UnlinkedUnit.references[i].prefixReference < i. 1609 * UnlinkedUnit.references[i].prefixReference < i.
1848 */ 1610 */
1849 @Id(1) 1611 prefixReference:uint (id: 1);
1850 int get prefixReference;
1851 } 1612 }
1852 1613
1853 /** 1614 /**
1854 * Unlinked summary information about a typedef declaration. 1615 * Unlinked summary information about a typedef declaration.
1855 */ 1616 */
1856 abstract class UnlinkedTypedef extends base.SummaryClass { 1617 table UnlinkedTypedef {
1857 /** 1618 /**
1858 * Annotations for this typedef. 1619 * Annotations for this typedef.
1859 */ 1620 */
1860 @Id(4) 1621 annotations:[UnlinkedConst] (id: 4);
1861 List<UnlinkedConst> get annotations;
1862 1622
1863 /** 1623 /**
1864 * Documentation comment for the typedef, or `null` if there is no 1624 * Documentation comment for the typedef, or `null` if there is no
1865 * documentation comment. 1625 * documentation comment.
1866 */ 1626 */
1867 @informative 1627 documentationComment:UnlinkedDocumentationComment (id: 6);
1868 @Id(6)
1869 UnlinkedDocumentationComment get documentationComment;
1870 1628
1871 /** 1629 /**
1872 * Name of the typedef. 1630 * Name of the typedef.
1873 */ 1631 */
1874 @Id(0) 1632 name:string (id: 0);
1875 String get name;
1876 1633
1877 /** 1634 /**
1878 * Offset of the typedef name relative to the beginning of the file. 1635 * Offset of the typedef name relative to the beginning of the file.
1879 */ 1636 */
1880 @informative 1637 nameOffset:uint (id: 1);
1881 @Id(1)
1882 int get nameOffset;
1883 1638
1884 /** 1639 /**
1885 * Parameters of the executable, if any. 1640 * Parameters of the executable, if any.
1886 */ 1641 */
1887 @Id(3) 1642 parameters:[UnlinkedParam] (id: 3);
1888 List<UnlinkedParam> get parameters;
1889 1643
1890 /** 1644 /**
1891 * Return type of the typedef. 1645 * Return type of the typedef.
1892 */ 1646 */
1893 @Id(2) 1647 returnType:EntityRef (id: 2);
1894 EntityRef get returnType;
1895 1648
1896 /** 1649 /**
1897 * Type parameters of the typedef, if any. 1650 * Type parameters of the typedef, if any.
1898 */ 1651 */
1899 @Id(5) 1652 typeParameters:[UnlinkedTypeParam] (id: 5);
1900 List<UnlinkedTypeParam> get typeParameters;
1901 } 1653 }
1902 1654
1903 /** 1655 /**
1904 * Unlinked summary information about a type parameter declaration. 1656 * Unlinked summary information about a type parameter declaration.
1905 */ 1657 */
1906 abstract class UnlinkedTypeParam extends base.SummaryClass { 1658 table UnlinkedTypeParam {
1907 /** 1659 /**
1908 * Annotations for this type parameter. 1660 * Annotations for this type parameter.
1909 */ 1661 */
1910 @Id(3) 1662 annotations:[UnlinkedConst] (id: 3);
1911 List<UnlinkedConst> get annotations;
1912 1663
1913 /** 1664 /**
1914 * Bound of the type parameter, if a bound is explicitly declared. Otherwise 1665 * Bound of the type parameter, if a bound is explicitly declared. Otherwise
1915 * null. 1666 * null.
1916 */ 1667 */
1917 @Id(2) 1668 bound:EntityRef (id: 2);
1918 EntityRef get bound;
1919 1669
1920 /** 1670 /**
1921 * Name of the type parameter. 1671 * Name of the type parameter.
1922 */ 1672 */
1923 @Id(0) 1673 name:string (id: 0);
1924 String get name;
1925 1674
1926 /** 1675 /**
1927 * Offset of the type parameter name relative to the beginning of the file. 1676 * Offset of the type parameter name relative to the beginning of the file.
1928 */ 1677 */
1929 @informative 1678 nameOffset:uint (id: 1);
1930 @Id(1)
1931 int get nameOffset;
1932 } 1679 }
1933 1680
1934 /** 1681 /**
1935 * Unlinked summary information about a compilation unit ("part file"). 1682 * Unlinked summary information about a compilation unit ("part file").
1936 */ 1683 */
1937 @TopLevel('UUnt') 1684 table UnlinkedUnit {
1938 abstract class UnlinkedUnit extends base.SummaryClass {
1939 factory UnlinkedUnit.fromBuffer(List<int> buffer) =>
1940 generated.readUnlinkedUnit(buffer);
1941
1942 /** 1685 /**
1943 * Classes declared in the compilation unit. 1686 * Classes declared in the compilation unit.
1944 */ 1687 */
1945 @Id(2) 1688 classes:[UnlinkedClass] (id: 2);
1946 List<UnlinkedClass> get classes;
1947 1689
1948 /** 1690 /**
1949 * Enums declared in the compilation unit. 1691 * Enums declared in the compilation unit.
1950 */ 1692 */
1951 @Id(12) 1693 enums:[UnlinkedEnum] (id: 12);
1952 List<UnlinkedEnum> get enums;
1953 1694
1954 /** 1695 /**
1955 * Top level executable objects (functions, getters, and setters) declared in 1696 * Top level executable objects (functions, getters, and setters) declared in
1956 * the compilation unit. 1697 * the compilation unit.
1957 */ 1698 */
1958 @Id(4) 1699 executables:[UnlinkedExecutable] (id: 4);
1959 List<UnlinkedExecutable> get executables;
1960 1700
1961 /** 1701 /**
1962 * Export declarations in the compilation unit. 1702 * Export declarations in the compilation unit.
1963 */ 1703 */
1964 @Id(13) 1704 exports:[UnlinkedExportNonPublic] (id: 13);
1965 List<UnlinkedExportNonPublic> get exports;
1966 1705
1967 /** 1706 /**
1968 * Import declarations in the compilation unit. 1707 * Import declarations in the compilation unit.
1969 */ 1708 */
1970 @Id(5) 1709 imports:[UnlinkedImport] (id: 5);
1971 List<UnlinkedImport> get imports;
1972 1710
1973 /** 1711 /**
1974 * Annotations for the library declaration, or the empty list if there is no 1712 * Annotations for the library declaration, or the empty list if there is no
1975 * library declaration. 1713 * library declaration.
1976 */ 1714 */
1977 @Id(14) 1715 libraryAnnotations:[UnlinkedConst] (id: 14);
1978 List<UnlinkedConst> get libraryAnnotations;
1979 1716
1980 /** 1717 /**
1981 * Documentation comment for the library, or `null` if there is no 1718 * Documentation comment for the library, or `null` if there is no
1982 * documentation comment. 1719 * documentation comment.
1983 */ 1720 */
1984 @informative 1721 libraryDocumentationComment:UnlinkedDocumentationComment (id: 9);
1985 @Id(9)
1986 UnlinkedDocumentationComment get libraryDocumentationComment;
1987 1722
1988 /** 1723 /**
1989 * Name of the library (from a "library" declaration, if present). 1724 * Name of the library (from a "library" declaration, if present).
1990 */ 1725 */
1991 @Id(6) 1726 libraryName:string (id: 6);
1992 String get libraryName;
1993 1727
1994 /** 1728 /**
1995 * Length of the library name as it appears in the source code (or 0 if the 1729 * Length of the library name as it appears in the source code (or 0 if the
1996 * library has no name). 1730 * library has no name).
1997 */ 1731 */
1998 @informative 1732 libraryNameLength:uint (id: 7);
1999 @Id(7)
2000 int get libraryNameLength;
2001 1733
2002 /** 1734 /**
2003 * Offset of the library name relative to the beginning of the file (or 0 if 1735 * Offset of the library name relative to the beginning of the file (or 0 if
2004 * the library has no name). 1736 * the library has no name).
2005 */ 1737 */
2006 @informative 1738 libraryNameOffset:uint (id: 8);
2007 @Id(8)
2008 int get libraryNameOffset;
2009 1739
2010 /** 1740 /**
2011 * Part declarations in the compilation unit. 1741 * Part declarations in the compilation unit.
2012 */ 1742 */
2013 @Id(11) 1743 parts:[UnlinkedPart] (id: 11);
2014 List<UnlinkedPart> get parts;
2015 1744
2016 /** 1745 /**
2017 * Unlinked public namespace of this compilation unit. 1746 * Unlinked public namespace of this compilation unit.
2018 */ 1747 */
2019 @Id(0) 1748 publicNamespace:UnlinkedPublicNamespace (id: 0);
2020 UnlinkedPublicNamespace get publicNamespace;
2021 1749
2022 /** 1750 /**
2023 * Top level and prefixed names referred to by this compilation unit. The 1751 * Top level and prefixed names referred to by this compilation unit. The
2024 * zeroth element of this array is always populated and is used to represent 1752 * zeroth element of this array is always populated and is used to represent
2025 * the absence of a reference in places where a reference is optional (for 1753 * the absence of a reference in places where a reference is optional (for
2026 * example [UnlinkedReference.prefixReference or 1754 * example [UnlinkedReference.prefixReference or
2027 * UnlinkedImport.prefixReference]). 1755 * UnlinkedImport.prefixReference]).
2028 */ 1756 */
2029 @Id(1) 1757 references:[UnlinkedReference] (id: 1);
2030 List<UnlinkedReference> get references;
2031 1758
2032 /** 1759 /**
2033 * Typedefs declared in the compilation unit. 1760 * Typedefs declared in the compilation unit.
2034 */ 1761 */
2035 @Id(10) 1762 typedefs:[UnlinkedTypedef] (id: 10);
2036 List<UnlinkedTypedef> get typedefs;
2037 1763
2038 /** 1764 /**
2039 * Top level variables declared in the compilation unit. 1765 * Top level variables declared in the compilation unit.
2040 */ 1766 */
2041 @Id(3) 1767 variables:[UnlinkedVariable] (id: 3);
2042 List<UnlinkedVariable> get variables;
2043 } 1768 }
2044 1769
2045 /** 1770 /**
2046 * Unlinked summary information about a top level variable, local variable, or 1771 * Unlinked summary information about a top level variable, local variable, or
2047 * a field. 1772 * a field.
2048 */ 1773 */
2049 abstract class UnlinkedVariable extends base.SummaryClass { 1774 table UnlinkedVariable {
2050 /** 1775 /**
2051 * Annotations for this variable. 1776 * Annotations for this variable.
2052 */ 1777 */
2053 @Id(8) 1778 annotations:[UnlinkedConst] (id: 8);
2054 List<UnlinkedConst> get annotations;
2055 1779
2056 /** 1780 /**
2057 * If [isConst] is true, and the variable has an initializer, the constant 1781 * If [isConst] is true, and the variable has an initializer, the constant
2058 * expression in the initializer. Note that the presence of this expression 1782 * expression in the initializer. Note that the presence of this expression
2059 * does not mean that it is a valid, check [UnlinkedConst.isInvalid]. 1783 * does not mean that it is a valid, check [UnlinkedConst.isInvalid].
2060 */ 1784 */
2061 @Id(5) 1785 constExpr:UnlinkedConst (id: 5);
2062 UnlinkedConst get constExpr;
2063 1786
2064 /** 1787 /**
2065 * Documentation comment for the variable, or `null` if there is no 1788 * Documentation comment for the variable, or `null` if there is no
2066 * documentation comment. 1789 * documentation comment.
2067 */ 1790 */
2068 @informative 1791 documentationComment:UnlinkedDocumentationComment (id: 10);
2069 @Id(10)
2070 UnlinkedDocumentationComment get documentationComment;
2071 1792
2072 /** 1793 /**
2073 * If this variable is inferable, nonzero slot id identifying which entry in 1794 * If this variable is inferable, nonzero slot id identifying which entry in
2074 * [LinkedLibrary.types] contains the inferred type for this variable. If 1795 * [LinkedLibrary.types] contains the inferred type for this variable. If
2075 * there is no matching entry in [LinkedLibrary.types], then no type was 1796 * there is no matching entry in [LinkedLibrary.types], then no type was
2076 * inferred for this variable, so its static type is `dynamic`. 1797 * inferred for this variable, so its static type is `dynamic`.
2077 */ 1798 */
2078 @Id(9) 1799 inferredTypeSlot:uint (id: 9);
2079 int get inferredTypeSlot;
2080 1800
2081 /** 1801 /**
2082 * The synthetic initializer function of the variable. Absent if the variable 1802 * The synthetic initializer function of the variable. Absent if the variable
2083 * does not have an initializer. 1803 * does not have an initializer.
2084 */ 1804 */
2085 @Id(13) 1805 initializer:UnlinkedExecutable (id: 13);
2086 UnlinkedExecutable get initializer;
2087 1806
2088 /** 1807 /**
2089 * Indicates whether the variable is declared using the `const` keyword. 1808 * Indicates whether the variable is declared using the `const` keyword.
2090 */ 1809 */
2091 @Id(6) 1810 isConst:bool (id: 6);
2092 bool get isConst;
2093 1811
2094 /** 1812 /**
2095 * Indicates whether the variable is declared using the `final` keyword. 1813 * Indicates whether the variable is declared using the `final` keyword.
2096 */ 1814 */
2097 @Id(7) 1815 isFinal:bool (id: 7);
2098 bool get isFinal;
2099 1816
2100 /** 1817 /**
2101 * Indicates whether the variable is declared using the `static` keyword. 1818 * Indicates whether the variable is declared using the `static` keyword.
2102 * 1819 *
2103 * Note that for top level variables, this flag is false, since they are not 1820 * Note that for top level variables, this flag is false, since they are not
2104 * declared using the `static` keyword (even though they are considered 1821 * declared using the `static` keyword (even though they are considered
2105 * static for semantic purposes). 1822 * static for semantic purposes).
2106 */ 1823 */
2107 @Id(4) 1824 isStatic:bool (id: 4);
2108 bool get isStatic;
2109 1825
2110 /** 1826 /**
2111 * Name of the variable. 1827 * Name of the variable.
2112 */ 1828 */
2113 @Id(0) 1829 name:string (id: 0);
2114 String get name;
2115 1830
2116 /** 1831 /**
2117 * Offset of the variable name relative to the beginning of the file. 1832 * Offset of the variable name relative to the beginning of the file.
2118 */ 1833 */
2119 @informative 1834 nameOffset:uint (id: 1);
2120 @Id(1)
2121 int get nameOffset;
2122 1835
2123 /** 1836 /**
2124 * If this variable is propagable, nonzero slot id identifying which entry in 1837 * If this variable is propagable, nonzero slot id identifying which entry in
2125 * [LinkedLibrary.types] contains the propagated type for this variable. If 1838 * [LinkedLibrary.types] contains the propagated type for this variable. If
2126 * there is no matching entry in [LinkedLibrary.types], then this variable's 1839 * there is no matching entry in [LinkedLibrary.types], then this variable's
2127 * propagated type is the same as its declared type. 1840 * propagated type is the same as its declared type.
2128 * 1841 *
2129 * Non-propagable variables have a [propagatedTypeSlot] of zero. 1842 * Non-propagable variables have a [propagatedTypeSlot] of zero.
2130 */ 1843 */
2131 @Id(2) 1844 propagatedTypeSlot:uint (id: 2);
2132 int get propagatedTypeSlot;
2133 1845
2134 /** 1846 /**
2135 * Declared type of the variable. Absent if the type is implicit. 1847 * Declared type of the variable. Absent if the type is implicit.
2136 */ 1848 */
2137 @Id(3) 1849 type:EntityRef (id: 3);
2138 EntityRef get type;
2139 1850
2140 /** 1851 /**
2141 * If a local variable, the length of the visible range; zero otherwise. 1852 * If a local variable, the length of the visible range; zero otherwise.
2142 */ 1853 */
2143 @Id(11) 1854 visibleLength:uint (id: 11);
2144 int get visibleLength;
2145 1855
2146 /** 1856 /**
2147 * If a local variable, the beginning of the visible range; zero otherwise. 1857 * If a local variable, the beginning of the visible range; zero otherwise.
2148 */ 1858 */
2149 @Id(12) 1859 visibleOffset:uint (id: 12);
2150 int get visibleOffset;
2151 } 1860 }
1861
1862 root_type PackageBundle;
1863
1864 file_identifier "PBdl";
OLDNEW
« no previous file with comments | « no previous file | pkg/analyzer/tool/summary/check_test.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698