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

Side by Side Diff: pkg/analyzer/tool/summary/idl.dart

Issue 1530503002: Organize summary declarations by unit rather than by library. (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: Created 5 years 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
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 4
5 /** 5 /**
6 * This file is an "idl" style description of the summary format. It is not 6 * This file is an "idl" style description of the summary format. It is not
7 * executed directly; instead it is parsed and transformed into code that 7 * executed directly; instead it is parsed and transformed into code that
8 * implements the summary format. 8 * implements the summary format.
9 * 9 *
10 * The code generation process introduces the following non-typical semantics: 10 * The code generation process introduces the following non-typical semantics:
(...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after
72 */ 72 */
73 String uri; 73 String uri;
74 } 74 }
75 75
76 /** 76 /**
77 * Pre-linked summary of a library. 77 * Pre-linked summary of a library.
78 */ 78 */
79 @topLevel 79 @topLevel
80 class PrelinkedLibrary { 80 class PrelinkedLibrary {
81 /** 81 /**
82 * The pre-linked summary of all the compilation units constituting the
83 * library. The summary of the defining compilation unit is listed first,
84 * followed by the summary of each part, in the order of the `part`
85 * declarations in the defining compilation unit.
86 */
87 List<PrelinkedUnit> units;
88
89 /**
82 * The unlinked library summary. 90 * The unlinked library summary.
83 */ 91 */
84 UnlinkedLibrary unlinked; 92 UnlinkedLibrary unlinked;
85 93
86 /** 94 /**
87 * The libraries that this library depends on (either via an explicit import 95 * The libraries that this library depends on (either via an explicit import
88 * statement or via the implicit dependencies on `dart:core` and 96 * statement or via the implicit dependencies on `dart:core` and
89 * `dart:async`). The first element of this array is a pseudo-dependency 97 * `dart:async`). The first element of this array is a pseudo-dependency
90 * representing the library itself (it is also used for "dynamic"). 98 * representing the library itself (it is also used for "dynamic").
91 * 99 *
(...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after
155 */ 163 */
156 other, 164 other,
157 165
158 /** 166 /**
159 * The entity being referred to does not exist. 167 * The entity being referred to does not exist.
160 */ 168 */
161 unresolved 169 unresolved
162 } 170 }
163 171
164 /** 172 /**
173 * Pre-linked summary of a compilation unit.
174 */
175 class PrelinkedUnit {
176 /**
177 * The unlinked summary of the compilation unit
178 */
179 UnlinkedUnit unlinked;
180 }
181
182 /**
165 * Unlinked summary information about a class declaration. 183 * Unlinked summary information about a class declaration.
166 */ 184 */
167 class UnlinkedClass { 185 class UnlinkedClass {
168 /** 186 /**
169 * Name of the class. 187 * Name of the class.
170 */ 188 */
171 String name; 189 String name;
172 190
173 /** 191 /**
174 * Index into [UnlinkedLibrary.units] indicating which compilation unit the
175 * class is declared in.
176 */
177 @informative
178 int unit;
179
180 /**
181 * Type parameters of the class, if any. 192 * Type parameters of the class, if any.
182 */ 193 */
183 List<UnlinkedTypeParam> typeParameters; 194 List<UnlinkedTypeParam> typeParameters;
184 195
185 /** 196 /**
186 * Supertype of the class, or `null` if either (a) the class doesn't 197 * Supertype of the class, or `null` if either (a) the class doesn't
187 * explicitly declare a supertype (and hence has supertype `Object`), or (b) 198 * explicitly declare a supertype (and hence has supertype `Object`), or (b)
188 * the class *is* `Object` (and hence has no supertype). 199 * the class *is* `Object` (and hence has no supertype).
189 */ 200 */
190 UnlinkedTypeRef supertype; 201 UnlinkedTypeRef supertype;
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after
253 class UnlinkedEnum { 264 class UnlinkedEnum {
254 /** 265 /**
255 * Name of the enum type. 266 * Name of the enum type.
256 */ 267 */
257 String name; 268 String name;
258 269
259 /** 270 /**
260 * Values listed in the enum declaration, in declaration order. 271 * Values listed in the enum declaration, in declaration order.
261 */ 272 */
262 List<UnlinkedEnumValue> values; 273 List<UnlinkedEnumValue> values;
263
264 /**
265 * Index into [UnlinkedLibrary.units] indicating which compilation unit the
266 * enum is declared in.
267 */
268 @informative
269 int unit;
270 } 274 }
271 275
272 /** 276 /**
273 * Unlinked summary information about a single enumerated value in an enum 277 * Unlinked summary information about a single enumerated value in an enum
274 * declaration. 278 * declaration.
275 */ 279 */
276 class UnlinkedEnumValue { 280 class UnlinkedEnumValue {
277 /** 281 /**
278 * Name of the enumerated value. 282 * Name of the enumerated value.
279 */ 283 */
280 String name; 284 String name;
281 } 285 }
282 286
283 /** 287 /**
284 * Unlinked summary information about a function, method, getter, or setter 288 * Unlinked summary information about a function, method, getter, or setter
285 * declaration. 289 * declaration.
286 */ 290 */
287 class UnlinkedExecutable { 291 class UnlinkedExecutable {
288 /** 292 /**
289 * Name of the executable. For setters, this includes the trailing "=". For 293 * Name of the executable. For setters, this includes the trailing "=". For
290 * named constructors, this excludes the class name and excludes the ".". 294 * named constructors, this excludes the class name and excludes the ".".
291 * For unnamed constructors, this is the empty string. 295 * For unnamed constructors, this is the empty string.
292 */ 296 */
293 String name; 297 String name;
294 298
295 /** 299 /**
296 * Index into [UnlinkedLibrary.units] indicating which compilation unit the
297 * executable is declared in. Zero for executables which are nested inside
298 * another declaration (i.e. local functions and method declarations).
299 */
300 @informative
301 int unit;
302
303 /**
304 * Type parameters of the executable, if any. Empty if support for generic 300 * Type parameters of the executable, if any. Empty if support for generic
305 * method syntax is disabled. 301 * method syntax is disabled.
306 */ 302 */
307 List<UnlinkedTypeParam> typeParameters; 303 List<UnlinkedTypeParam> typeParameters;
308 304
309 /** 305 /**
310 * Declared return type of the executable. Absent if the return type is 306 * Declared return type of the executable. Absent if the return type is
311 * `void`. Note that when strong mode is enabled, the actual return type may 307 * `void`. Note that when strong mode is enabled, the actual return type may
312 * be different due to type inference. 308 * be different due to type inference.
313 */ 309 */
(...skipping 126 matching lines...) Expand 10 before | Expand all | Expand 10 after
440 /** 436 /**
441 * Unlinked summary of an entire library. 437 * Unlinked summary of an entire library.
442 */ 438 */
443 class UnlinkedLibrary { 439 class UnlinkedLibrary {
444 /** 440 /**
445 * Top level and prefixed names referred to by this library. 441 * Top level and prefixed names referred to by this library.
446 */ 442 */
447 List<UnlinkedReference> references; 443 List<UnlinkedReference> references;
448 444
449 /** 445 /**
450 * Information about the units constituting this library. The first unit
451 * listed is always the defining compilation unit. The remaining units are
452 * listed in the order of their corresponding `part` declarations.
453 */
454 List<UnlinkedUnit> units;
455
456 /**
457 * Name of the library (from a "library" declaration, if present).
458 */
459 String name;
460
461 /**
462 * Classes declared in the library.
463 */
464 List<UnlinkedClass> classes;
465
466 /**
467 * Enums declared in the library.
468 */
469 List<UnlinkedEnum> enums;
470
471 /**
472 * Top level executable objects (functions, getters, and setters) declared in
473 * the library.
474 */
475 List<UnlinkedExecutable> executables;
476
477 /**
478 * Export declarations in the library.
479 */
480 List<UnlinkedExport> exports;
481
482 /**
483 * Import declarations in the library.
484 */
485 List<UnlinkedImport> imports;
486
487 /**
488 * Typedefs declared in the library.
489 */
490 List<UnlinkedTypedef> typedefs;
491
492 /**
493 * Top level variables declared in the library.
494 */
495 List<UnlinkedVariable> variables;
496
497 /**
498 * Prefixes introduced by import declarations. The first element in this 446 * Prefixes introduced by import declarations. The first element in this
499 * array is a pseudo-prefix used by references made with no prefix. 447 * array is a pseudo-prefix used by references made with no prefix.
500 */ 448 */
501 List<UnlinkedPrefix> prefixes; 449 List<UnlinkedPrefix> prefixes;
502 } 450 }
503 451
504 /** 452 /**
505 * Unlinked summary information about a function parameter. 453 * Unlinked summary information about a function parameter.
506 */ 454 */
507 class UnlinkedParam { 455 class UnlinkedParam {
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after
560 * Parameter is positional optional (enclosed in `[]`) 508 * Parameter is positional optional (enclosed in `[]`)
561 */ 509 */
562 positional, 510 positional,
563 511
564 /** 512 /**
565 * Parameter is named optional (enclosed in `{}`) 513 * Parameter is named optional (enclosed in `{}`)
566 */ 514 */
567 named 515 named
568 } 516 }
569 517
518 /**
519 * Unlinked summary information about a part declaration.
520 */
521 class UnlinkedPart {
522 /**
523 * String used in the compilation unit to refer to the part file.
524 */
525 String uri;
526 }
527
570 class UnlinkedPrefix { 528 class UnlinkedPrefix {
571 /** 529 /**
572 * The name of the prefix, or the empty string in the case of the 530 * The name of the prefix, or the empty string in the case of the
573 * pseudo-prefix which represents "no prefix". 531 * pseudo-prefix which represents "no prefix".
574 */ 532 */
575 String name; 533 String name;
576 } 534 }
577 535
578 /** 536 /**
579 * Unlinked summary information about a name referred to in one library that 537 * Unlinked summary information about a name referred to in one library that
(...skipping 16 matching lines...) Expand all
596 /** 554 /**
597 * Unlinked summary information about a typedef declaration. 555 * Unlinked summary information about a typedef declaration.
598 */ 556 */
599 class UnlinkedTypedef { 557 class UnlinkedTypedef {
600 /** 558 /**
601 * Name of the typedef. 559 * Name of the typedef.
602 */ 560 */
603 String name; 561 String name;
604 562
605 /** 563 /**
606 * Index into [UnlinkedLibrary.units] indicating which compilation unit the
607 * typedef is declared in.
608 */
609 @informative
610 int unit;
611
612 /**
613 * Type parameters of the typedef, if any. 564 * Type parameters of the typedef, if any.
614 */ 565 */
615 List<UnlinkedTypeParam> typeParameters; 566 List<UnlinkedTypeParam> typeParameters;
616 567
617 /** 568 /**
618 * Return type of the typedef. Absent if the return type is `void`. 569 * Return type of the typedef. Absent if the return type is `void`.
619 */ 570 */
620 UnlinkedTypeRef returnType; 571 UnlinkedTypeRef returnType;
621 572
622 /** 573 /**
(...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after
687 638
688 /** 639 /**
689 * Unlinked summary information about a compilation unit ("part file"). Note 640 * Unlinked summary information about a compilation unit ("part file"). Note
690 * that since a declaration can be moved from one part file to another without 641 * that since a declaration can be moved from one part file to another without
691 * changing semantics, the declarations themselves aren't stored here; they are 642 * changing semantics, the declarations themselves aren't stored here; they are
692 * stored in [UnlinkedLibrary] and they refer to [UnlinkedUnit]s via an index 643 * stored in [UnlinkedLibrary] and they refer to [UnlinkedUnit]s via an index
693 * into [UnlinkedLibrary.units]. 644 * into [UnlinkedLibrary.units].
694 */ 645 */
695 class UnlinkedUnit { 646 class UnlinkedUnit {
696 /** 647 /**
697 * String used in the defining compilation unit to reference the part file. 648 * Name of the library (from a "library" declaration, if present).
698 * Empty for the defining compilation unit itself.
699 */ 649 */
700 String uri; 650 String libraryName;
651
652 /**
653 * Classes declared in the compilation unit.
654 */
655 List<UnlinkedClass> classes;
656
657 /**
658 * Enums declared in the compilation unit.
659 */
660 List<UnlinkedEnum> enums;
661
662 /**
663 * Top level executable objects (functions, getters, and setters) declared in
664 * the compilation unit.
665 */
666 List<UnlinkedExecutable> executables;
667
668 /**
669 * Export declarations in the compilation unit.
670 */
671 List<UnlinkedExport> exports;
672
673 /**
674 * Import declarations in the compilation unit.
675 */
676 List<UnlinkedImport> imports;
677
678 /**
679 * Part declarations in the compilation unit.
680 */
681 List<UnlinkedPart> parts;
682
683 /**
684 * Typedefs declared in the compilation unit.
685 */
686 List<UnlinkedTypedef> typedefs;
687
688 /**
689 * Top level variables declared in the compilation unit.
690 */
691 List<UnlinkedVariable> variables;
701 } 692 }
702 693
703 /** 694 /**
704 * Unlinked summary information about a top level variable, local variable, or 695 * Unlinked summary information about a top level variable, local variable, or
705 * a field. 696 * a field.
706 */ 697 */
707 class UnlinkedVariable { 698 class UnlinkedVariable {
708 /** 699 /**
709 * Name of the variable. 700 * Name of the variable.
710 */ 701 */
711 String name; 702 String name;
712 703
713 /** 704 /**
714 * Index into [UnlinkedLibrary.units] indicating which compilation unit the
715 * variable is declared in. Zero for variables which are nested inside
716 * another declaration (i.e. local variables and fields).
717 */
718 @informative
719 int unit;
720
721 /**
722 * Declared type of the variable. Note that when strong mode is enabled, the 705 * Declared type of the variable. Note that when strong mode is enabled, the
723 * actual type of the variable may be different due to type inference. 706 * actual type of the variable may be different due to type inference.
724 */ 707 */
725 UnlinkedTypeRef type; 708 UnlinkedTypeRef type;
726 709
727 /** 710 /**
728 * Indicates whether the variable is declared using the `static` keyword. 711 * Indicates whether the variable is declared using the `static` keyword.
729 * 712 *
730 * Note that for top level variables, this flag is false, since they are not 713 * Note that for top level variables, this flag is false, since they are not
731 * declared using the `static` keyword (even though they are considered 714 * declared using the `static` keyword (even though they are considered
732 * static for semantic purposes). 715 * static for semantic purposes).
733 */ 716 */
734 bool isStatic; 717 bool isStatic;
735 718
736 /** 719 /**
737 * Indicates whether the variable is declared using the `final` keyword. 720 * Indicates whether the variable is declared using the `final` keyword.
738 */ 721 */
739 bool isFinal; 722 bool isFinal;
740 723
741 /** 724 /**
742 * Indicates whether the variable is declared using the `const` keyword. 725 * Indicates whether the variable is declared using the `const` keyword.
743 */ 726 */
744 bool isConst; 727 bool isConst;
745 728
746 /** 729 /**
747 * Indicates whether this variable lacks an explicit type declaration. 730 * Indicates whether this variable lacks an explicit type declaration.
748 */ 731 */
749 bool hasImplicitType; 732 bool hasImplicitType;
750 } 733 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698