| OLD | NEW |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 } |
| OLD | NEW |