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 198 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
209 /** | 209 /** |
210 * Unlinked summary information about a class declaration. | 210 * Unlinked summary information about a class declaration. |
211 */ | 211 */ |
212 class UnlinkedClass { | 212 class UnlinkedClass { |
213 /** | 213 /** |
214 * Name of the class. | 214 * Name of the class. |
215 */ | 215 */ |
216 String name; | 216 String name; |
217 | 217 |
218 /** | 218 /** |
| 219 * Offset of the class name relative to the beginning of the file. |
| 220 */ |
| 221 @informative |
| 222 int nameOffset; |
| 223 |
| 224 /** |
219 * Type parameters of the class, if any. | 225 * Type parameters of the class, if any. |
220 */ | 226 */ |
221 List<UnlinkedTypeParam> typeParameters; | 227 List<UnlinkedTypeParam> typeParameters; |
222 | 228 |
223 /** | 229 /** |
224 * Supertype of the class, or `null` if either (a) the class doesn't | 230 * Supertype of the class, or `null` if either (a) the class doesn't |
225 * explicitly declare a supertype (and hence has supertype `Object`), or (b) | 231 * explicitly declare a supertype (and hence has supertype `Object`), or (b) |
226 * the class *is* `Object` (and hence has no supertype). | 232 * the class *is* `Object` (and hence has no supertype). |
227 */ | 233 */ |
228 UnlinkedTypeRef supertype; | 234 UnlinkedTypeRef supertype; |
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
283 /** | 289 /** |
284 * Unlinked summary information about an enum declaration. | 290 * Unlinked summary information about an enum declaration. |
285 */ | 291 */ |
286 class UnlinkedEnum { | 292 class UnlinkedEnum { |
287 /** | 293 /** |
288 * Name of the enum type. | 294 * Name of the enum type. |
289 */ | 295 */ |
290 String name; | 296 String name; |
291 | 297 |
292 /** | 298 /** |
| 299 * Offset of the enum name relative to the beginning of the file. |
| 300 */ |
| 301 @informative |
| 302 int nameOffset; |
| 303 |
| 304 /** |
293 * Values listed in the enum declaration, in declaration order. | 305 * Values listed in the enum declaration, in declaration order. |
294 */ | 306 */ |
295 List<UnlinkedEnumValue> values; | 307 List<UnlinkedEnumValue> values; |
296 } | 308 } |
297 | 309 |
298 /** | 310 /** |
299 * Unlinked summary information about a single enumerated value in an enum | 311 * Unlinked summary information about a single enumerated value in an enum |
300 * declaration. | 312 * declaration. |
301 */ | 313 */ |
302 class UnlinkedEnumValue { | 314 class UnlinkedEnumValue { |
303 /** | 315 /** |
304 * Name of the enumerated value. | 316 * Name of the enumerated value. |
305 */ | 317 */ |
306 String name; | 318 String name; |
| 319 |
| 320 /** |
| 321 * Offset of the enum value name relative to the beginning of the file. |
| 322 */ |
| 323 @informative |
| 324 int nameOffset; |
307 } | 325 } |
308 | 326 |
309 /** | 327 /** |
310 * Unlinked summary information about a function, method, getter, or setter | 328 * Unlinked summary information about a function, method, getter, or setter |
311 * declaration. | 329 * declaration. |
312 */ | 330 */ |
313 class UnlinkedExecutable { | 331 class UnlinkedExecutable { |
314 /** | 332 /** |
315 * Name of the executable. For setters, this includes the trailing "=". For | 333 * Name of the executable. For setters, this includes the trailing "=". For |
316 * named constructors, this excludes the class name and excludes the ".". | 334 * named constructors, this excludes the class name and excludes the ".". |
317 * For unnamed constructors, this is the empty string. | 335 * For unnamed constructors, this is the empty string. |
318 */ | 336 */ |
319 String name; | 337 String name; |
320 | 338 |
321 /** | 339 /** |
| 340 * Offset of the executable name relative to the beginning of the file. For |
| 341 * named constructors, this excludes the class name and excludes the ".". |
| 342 * For unnamed constructors, this is the offset of the class name (i.e. the |
| 343 * offset of the second "C" in "class C { C(); }"). |
| 344 */ |
| 345 @informative |
| 346 int nameOffset; |
| 347 |
| 348 /** |
322 * Type parameters of the executable, if any. Empty if support for generic | 349 * Type parameters of the executable, if any. Empty if support for generic |
323 * method syntax is disabled. | 350 * method syntax is disabled. |
324 */ | 351 */ |
325 List<UnlinkedTypeParam> typeParameters; | 352 List<UnlinkedTypeParam> typeParameters; |
326 | 353 |
327 /** | 354 /** |
328 * Declared return type of the executable. Absent if the return type is | 355 * Declared return type of the executable. Absent if the return type is |
329 * `void` or the executable is a constructor. Note that when strong mode is | 356 * `void` or the executable is a constructor. Note that when strong mode is |
330 * enabled, the actual return type may be different due to type inference. | 357 * enabled, the actual return type may be different due to type inference. |
331 */ | 358 */ |
(...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
404 */ | 431 */ |
405 constructor | 432 constructor |
406 } | 433 } |
407 | 434 |
408 /** | 435 /** |
409 * Unlinked summary information about an export declaration (stored outside | 436 * Unlinked summary information about an export declaration (stored outside |
410 * [UnlinkedPublicNamespace]). | 437 * [UnlinkedPublicNamespace]). |
411 */ | 438 */ |
412 class UnlinkedExportNonPublic { | 439 class UnlinkedExportNonPublic { |
413 /** | 440 /** |
| 441 * Offset of the "export" keyword. |
| 442 */ |
| 443 @informative |
| 444 int offset; |
| 445 |
| 446 /** |
414 * Offset of the URI string (including quotes) relative to the beginning of | 447 * Offset of the URI string (including quotes) relative to the beginning of |
415 * the file. | 448 * the file. |
416 */ | 449 */ |
417 @informative | 450 @informative |
418 int uriOffset; | 451 int uriOffset; |
419 | 452 |
420 /** | 453 /** |
421 * End of the URI string (including quotes) relative to the beginning of the | 454 * End of the URI string (including quotes) relative to the beginning of the |
422 * file. | 455 * file. |
423 */ | 456 */ |
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
486 */ | 519 */ |
487 @informative | 520 @informative |
488 int uriOffset; | 521 int uriOffset; |
489 | 522 |
490 /** | 523 /** |
491 * End of the URI string (including quotes) relative to the beginning of the | 524 * End of the URI string (including quotes) relative to the beginning of the |
492 * file. If [isImplicit] is true, zero. | 525 * file. If [isImplicit] is true, zero. |
493 */ | 526 */ |
494 @informative | 527 @informative |
495 int uriEnd; | 528 int uriEnd; |
| 529 |
| 530 /** |
| 531 * Offset of the prefix name relative to the beginning of the file, or zero |
| 532 * if there is no prefix. |
| 533 */ |
| 534 @informative |
| 535 int prefixOffset; |
496 } | 536 } |
497 | 537 |
498 /** | 538 /** |
499 * Unlinked summary information about a function parameter. | 539 * Unlinked summary information about a function parameter. |
500 */ | 540 */ |
501 class UnlinkedParam { | 541 class UnlinkedParam { |
502 /** | 542 /** |
503 * Name of the parameter. | 543 * Name of the parameter. |
504 */ | 544 */ |
505 String name; | 545 String name; |
506 | 546 |
507 /** | 547 /** |
| 548 * Offset of the parameter name relative to the beginning of the file. |
| 549 */ |
| 550 @informative |
| 551 int nameOffset; |
| 552 |
| 553 /** |
508 * If [isFunctionTyped] is `true`, the declared return type. If | 554 * If [isFunctionTyped] is `true`, the declared return type. If |
509 * [isFunctionTyped] is `false`, the declared type. Absent if | 555 * [isFunctionTyped] is `false`, the declared type. Absent if |
510 * [isFunctionTyped] is `true` and the declared return type is `void`. Note | 556 * [isFunctionTyped] is `true` and the declared return type is `void`. Note |
511 * that when strong mode is enabled, the actual type may be different due to | 557 * that when strong mode is enabled, the actual type may be different due to |
512 * type inference. | 558 * type inference. |
513 */ | 559 */ |
514 UnlinkedTypeRef type; | 560 UnlinkedTypeRef type; |
515 | 561 |
516 /** | 562 /** |
517 * If [isFunctionTyped] is `true`, the parameters of the function type. | 563 * If [isFunctionTyped] is `true`, the parameters of the function type. |
(...skipping 141 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
659 /** | 705 /** |
660 * Unlinked summary information about a typedef declaration. | 706 * Unlinked summary information about a typedef declaration. |
661 */ | 707 */ |
662 class UnlinkedTypedef { | 708 class UnlinkedTypedef { |
663 /** | 709 /** |
664 * Name of the typedef. | 710 * Name of the typedef. |
665 */ | 711 */ |
666 String name; | 712 String name; |
667 | 713 |
668 /** | 714 /** |
| 715 * Offset of the typedef name relative to the beginning of the file. |
| 716 */ |
| 717 @informative |
| 718 int nameOffset; |
| 719 |
| 720 /** |
669 * Type parameters of the typedef, if any. | 721 * Type parameters of the typedef, if any. |
670 */ | 722 */ |
671 List<UnlinkedTypeParam> typeParameters; | 723 List<UnlinkedTypeParam> typeParameters; |
672 | 724 |
673 /** | 725 /** |
674 * Return type of the typedef. Absent if the return type is `void`. | 726 * Return type of the typedef. Absent if the return type is `void`. |
675 */ | 727 */ |
676 UnlinkedTypeRef returnType; | 728 UnlinkedTypeRef returnType; |
677 | 729 |
678 /** | 730 /** |
679 * Parameters of the executable, if any. | 731 * Parameters of the executable, if any. |
680 */ | 732 */ |
681 List<UnlinkedParam> parameters; | 733 List<UnlinkedParam> parameters; |
682 } | 734 } |
683 | 735 |
684 /** | 736 /** |
685 * Unlinked summary information about a type parameter declaration. | 737 * Unlinked summary information about a type parameter declaration. |
686 */ | 738 */ |
687 class UnlinkedTypeParam { | 739 class UnlinkedTypeParam { |
688 /** | 740 /** |
689 * Name of the type parameter. | 741 * Name of the type parameter. |
690 */ | 742 */ |
691 String name; | 743 String name; |
692 | 744 |
693 /** | 745 /** |
| 746 * Offset of the type parameter name relative to the beginning of the file. |
| 747 */ |
| 748 @informative |
| 749 int nameOffset; |
| 750 |
| 751 /** |
694 * Bound of the type parameter, if a bound is explicitly declared. Otherwise | 752 * Bound of the type parameter, if a bound is explicitly declared. Otherwise |
695 * null. | 753 * null. |
696 */ | 754 */ |
697 UnlinkedTypeRef bound; | 755 UnlinkedTypeRef bound; |
698 } | 756 } |
699 | 757 |
700 /** | 758 /** |
701 * Unlinked summary information about a reference to a type. | 759 * Unlinked summary information about a reference to a type. |
702 */ | 760 */ |
703 class UnlinkedTypeRef { | 761 class UnlinkedTypeRef { |
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
745 * Unlinked summary information about a compilation unit ("part file"). | 803 * Unlinked summary information about a compilation unit ("part file"). |
746 */ | 804 */ |
747 @topLevel | 805 @topLevel |
748 class UnlinkedUnit { | 806 class UnlinkedUnit { |
749 /** | 807 /** |
750 * Name of the library (from a "library" declaration, if present). | 808 * Name of the library (from a "library" declaration, if present). |
751 */ | 809 */ |
752 String libraryName; | 810 String libraryName; |
753 | 811 |
754 /** | 812 /** |
| 813 * Offset of the library name relative to the beginning of the file (or 0 if |
| 814 * the library has no name). |
| 815 */ |
| 816 @informative |
| 817 int libraryNameOffset; |
| 818 |
| 819 /** |
| 820 * Length of the library name as it appears in the source code (or 0 if the |
| 821 * library has no name). |
| 822 */ |
| 823 @informative |
| 824 int libraryNameLength; |
| 825 |
| 826 /** |
755 * Unlinked public namespace of this compilation unit. | 827 * Unlinked public namespace of this compilation unit. |
756 */ | 828 */ |
757 UnlinkedPublicNamespace publicNamespace; | 829 UnlinkedPublicNamespace publicNamespace; |
758 | 830 |
759 /** | 831 /** |
760 * Top level and prefixed names referred to by this compilation unit. The | 832 * Top level and prefixed names referred to by this compilation unit. The |
761 * zeroth element of this array is always populated and always represents a | 833 * zeroth element of this array is always populated and always represents a |
762 * reference to the pseudo-type "dynamic". | 834 * reference to the pseudo-type "dynamic". |
763 */ | 835 */ |
764 List<UnlinkedReference> references; | 836 List<UnlinkedReference> references; |
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
809 * Unlinked summary information about a top level variable, local variable, or | 881 * Unlinked summary information about a top level variable, local variable, or |
810 * a field. | 882 * a field. |
811 */ | 883 */ |
812 class UnlinkedVariable { | 884 class UnlinkedVariable { |
813 /** | 885 /** |
814 * Name of the variable. | 886 * Name of the variable. |
815 */ | 887 */ |
816 String name; | 888 String name; |
817 | 889 |
818 /** | 890 /** |
| 891 * Offset of the variable name relative to the beginning of the file. |
| 892 */ |
| 893 @informative |
| 894 int nameOffset; |
| 895 |
| 896 /** |
819 * Declared type of the variable. Note that when strong mode is enabled, the | 897 * Declared type of the variable. Note that when strong mode is enabled, the |
820 * actual type of the variable may be different due to type inference. | 898 * actual type of the variable may be different due to type inference. |
821 */ | 899 */ |
822 UnlinkedTypeRef type; | 900 UnlinkedTypeRef type; |
823 | 901 |
824 /** | 902 /** |
825 * Indicates whether the variable is declared using the `static` keyword. | 903 * Indicates whether the variable is declared using the `static` keyword. |
826 * | 904 * |
827 * Note that for top level variables, this flag is false, since they are not | 905 * Note that for top level variables, this flag is false, since they are not |
828 * declared using the `static` keyword (even though they are considered | 906 * declared using the `static` keyword (even though they are considered |
829 * static for semantic purposes). | 907 * static for semantic purposes). |
830 */ | 908 */ |
831 bool isStatic; | 909 bool isStatic; |
832 | 910 |
833 /** | 911 /** |
834 * Indicates whether the variable is declared using the `final` keyword. | 912 * Indicates whether the variable is declared using the `final` keyword. |
835 */ | 913 */ |
836 bool isFinal; | 914 bool isFinal; |
837 | 915 |
838 /** | 916 /** |
839 * Indicates whether the variable is declared using the `const` keyword. | 917 * Indicates whether the variable is declared using the `const` keyword. |
840 */ | 918 */ |
841 bool isConst; | 919 bool isConst; |
842 | 920 |
843 /** | 921 /** |
844 * Indicates whether this variable lacks an explicit type declaration. | 922 * Indicates whether this variable lacks an explicit type declaration. |
845 */ | 923 */ |
846 bool hasImplicitType; | 924 bool hasImplicitType; |
847 } | 925 } |
OLD | NEW |