| 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 | 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 | 7 * contains abstract classes which declare the interface for reading data from |
| 8 * summaries. It is parsed and transformed into code that implements the | 8 * summaries. It is parsed and transformed into code that implements the |
| 9 * summary format. | 9 * summary format. |
| 10 * | 10 * |
| (...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 46 import 'format.dart' as generated; | 46 import 'format.dart' as generated; |
| 47 | 47 |
| 48 /** | 48 /** |
| 49 * Annotation describing information which is not part of Dart semantics; in | 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, | 50 * other words, if this information (or any information it refers to) changes, |
| 51 * static analysis and runtime behavior of the library are unaffected. | 51 * static analysis and runtime behavior of the library are unaffected. |
| 52 */ | 52 */ |
| 53 const informative = null; | 53 const informative = null; |
| 54 | 54 |
| 55 /** | 55 /** |
| 56 * Information about an element code range. |
| 57 */ |
| 58 abstract class CodeRange extends base.SummaryClass { |
| 59 /** |
| 60 * Length of the element code. |
| 61 */ |
| 62 @Id(1) |
| 63 int get length; |
| 64 |
| 65 /** |
| 66 * Offset of the element code relative to the beginning of the file. |
| 67 */ |
| 68 @Id(0) |
| 69 int get offset; |
| 70 } |
| 71 |
| 72 /** |
| 56 * Summary information about a reference to a an entity such as a type, top | 73 * Summary information about a reference to a an entity such as a type, top |
| 57 * level executable, or executable within a class. | 74 * level executable, or executable within a class. |
| 58 */ | 75 */ |
| 59 abstract class EntityRef extends base.SummaryClass { | 76 abstract class EntityRef extends base.SummaryClass { |
| 60 /** | 77 /** |
| 61 * If this is a reference to a function type implicitly defined by a | 78 * 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 | 79 * function-typed parameter, a list of zero-based indices indicating the path |
| 63 * from the entity referred to by [reference] to the appropriate type | 80 * from the entity referred to by [reference] to the appropriate type |
| 64 * parameter. Otherwise the empty list. | 81 * parameter. Otherwise the empty list. |
| 65 * | 82 * |
| (...skipping 356 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 422 */ | 439 */ |
| 423 @Id(0) | 440 @Id(0) |
| 424 int get unit; | 441 int get unit; |
| 425 } | 442 } |
| 426 | 443 |
| 427 /** | 444 /** |
| 428 * Linked summary of a compilation unit. | 445 * Linked summary of a compilation unit. |
| 429 */ | 446 */ |
| 430 abstract class LinkedUnit extends base.SummaryClass { | 447 abstract class LinkedUnit extends base.SummaryClass { |
| 431 /** | 448 /** |
| 449 * List of slot ids (referring to [UnlinkedExecutable.constCycleSlot]) |
| 450 * corresponding to const constructors that are part of cycles. |
| 451 */ |
| 452 @Id(2) |
| 453 List<int> get constCycles; |
| 454 |
| 455 /** |
| 432 * Information about the resolution of references within the compilation | 456 * Information about the resolution of references within the compilation |
| 433 * unit. Each element of [UnlinkedUnit.references] has a corresponding | 457 * unit. Each element of [UnlinkedUnit.references] has a corresponding |
| 434 * element in this list (at the same index). If this list has additional | 458 * element in this list (at the same index). If this list has additional |
| 435 * elements beyond the number of elements in [UnlinkedUnit.references], those | 459 * elements beyond the number of elements in [UnlinkedUnit.references], those |
| 436 * additional elements are references that are only referred to implicitly | 460 * additional elements are references that are only referred to implicitly |
| 437 * (e.g. elements involved in inferred or propagated types). | 461 * (e.g. elements involved in inferred or propagated types). |
| 438 */ | 462 */ |
| 439 @Id(0) | 463 @Id(0) |
| 440 List<LinkedReference> get references; | 464 List<LinkedReference> get references; |
| 441 | 465 |
| 442 /** | 466 /** |
| 443 * List associating slot ids found inside the unlinked summary for the | 467 * List associating slot ids found inside the unlinked summary for the |
| 444 * compilation unit with propagated and inferred types. | 468 * compilation unit with propagated and inferred types. |
| 445 */ | 469 */ |
| 446 @Id(1) | 470 @Id(1) |
| 447 List<EntityRef> get types; | 471 List<EntityRef> get types; |
| 448 | |
| 449 /** | |
| 450 * List of slot ids (referring to [UnlinkedExecutable.constCycleSlot]) | |
| 451 * corresponding to const constructors that are part of cycles. | |
| 452 */ | |
| 453 @Id(2) | |
| 454 List<int> get constCycles; | |
| 455 } | 472 } |
| 456 | 473 |
| 457 /** | 474 /** |
| 458 * Summary information about a package. | 475 * Summary information about a package. |
| 459 */ | 476 */ |
| 460 @TopLevel('PBdl') | 477 @TopLevel('PBdl') |
| 461 abstract class PackageBundle extends base.SummaryClass { | 478 abstract class PackageBundle extends base.SummaryClass { |
| 462 factory PackageBundle.fromBuffer(List<int> buffer) => | 479 factory PackageBundle.fromBuffer(List<int> buffer) => |
| 463 generated.readPackageBundle(buffer); | 480 generated.readPackageBundle(buffer); |
| 464 | 481 |
| (...skipping 266 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 731 * Unlinked summary information about a class declaration. | 748 * Unlinked summary information about a class declaration. |
| 732 */ | 749 */ |
| 733 abstract class UnlinkedClass extends base.SummaryClass { | 750 abstract class UnlinkedClass extends base.SummaryClass { |
| 734 /** | 751 /** |
| 735 * Annotations for this class. | 752 * Annotations for this class. |
| 736 */ | 753 */ |
| 737 @Id(5) | 754 @Id(5) |
| 738 List<UnlinkedConst> get annotations; | 755 List<UnlinkedConst> get annotations; |
| 739 | 756 |
| 740 /** | 757 /** |
| 758 * Code range of the class. |
| 759 */ |
| 760 @Id(13) |
| 761 CodeRange get codeRange; |
| 762 |
| 763 /** |
| 741 * Documentation comment for the class, or `null` if there is no | 764 * Documentation comment for the class, or `null` if there is no |
| 742 * documentation comment. | 765 * documentation comment. |
| 743 */ | 766 */ |
| 744 @informative | 767 @informative |
| 745 @Id(6) | 768 @Id(6) |
| 746 UnlinkedDocumentationComment get documentationComment; | 769 UnlinkedDocumentationComment get documentationComment; |
| 747 | 770 |
| 748 /** | 771 /** |
| 749 * Executable objects (methods, getters, and setters) contained in the class. | 772 * Executable objects (methods, getters, and setters) contained in the class. |
| 750 */ | 773 */ |
| (...skipping 530 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1281 * Unlinked summary information about an enum declaration. | 1304 * Unlinked summary information about an enum declaration. |
| 1282 */ | 1305 */ |
| 1283 abstract class UnlinkedEnum extends base.SummaryClass { | 1306 abstract class UnlinkedEnum extends base.SummaryClass { |
| 1284 /** | 1307 /** |
| 1285 * Annotations for this enum. | 1308 * Annotations for this enum. |
| 1286 */ | 1309 */ |
| 1287 @Id(4) | 1310 @Id(4) |
| 1288 List<UnlinkedConst> get annotations; | 1311 List<UnlinkedConst> get annotations; |
| 1289 | 1312 |
| 1290 /** | 1313 /** |
| 1314 * Code range of the enum. |
| 1315 */ |
| 1316 @Id(5) |
| 1317 CodeRange get codeRange; |
| 1318 |
| 1319 /** |
| 1291 * Documentation comment for the enum, or `null` if there is no documentation | 1320 * Documentation comment for the enum, or `null` if there is no documentation |
| 1292 * comment. | 1321 * comment. |
| 1293 */ | 1322 */ |
| 1294 @informative | 1323 @informative |
| 1295 @Id(3) | 1324 @Id(3) |
| 1296 UnlinkedDocumentationComment get documentationComment; | 1325 UnlinkedDocumentationComment get documentationComment; |
| 1297 | 1326 |
| 1298 /** | 1327 /** |
| 1299 * Name of the enum type. | 1328 * Name of the enum type. |
| 1300 */ | 1329 */ |
| (...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1347 * declaration. | 1376 * declaration. |
| 1348 */ | 1377 */ |
| 1349 abstract class UnlinkedExecutable extends base.SummaryClass { | 1378 abstract class UnlinkedExecutable extends base.SummaryClass { |
| 1350 /** | 1379 /** |
| 1351 * Annotations for this executable. | 1380 * Annotations for this executable. |
| 1352 */ | 1381 */ |
| 1353 @Id(6) | 1382 @Id(6) |
| 1354 List<UnlinkedConst> get annotations; | 1383 List<UnlinkedConst> get annotations; |
| 1355 | 1384 |
| 1356 /** | 1385 /** |
| 1386 * Code range of the executable. |
| 1387 */ |
| 1388 @Id(26) |
| 1389 CodeRange get codeRange; |
| 1390 |
| 1391 /** |
| 1357 * If a constant [UnlinkedExecutableKind.constructor], the constructor | 1392 * If a constant [UnlinkedExecutableKind.constructor], the constructor |
| 1358 * initializers. Otherwise empty. | 1393 * initializers. Otherwise empty. |
| 1359 */ | 1394 */ |
| 1360 @Id(14) | 1395 @Id(14) |
| 1361 List<UnlinkedConstructorInitializer> get constantInitializers; | 1396 List<UnlinkedConstructorInitializer> get constantInitializers; |
| 1362 | 1397 |
| 1363 /** | 1398 /** |
| 1399 * If [kind] is [UnlinkedExecutableKind.constructor] and [isConst] is `true`, |
| 1400 * a nonzero slot id which is unique within this compilation unit. If this id |
| 1401 * is found in [LinkedUnit.constCycles], then this constructor is part of a |
| 1402 * cycle. |
| 1403 * |
| 1404 * Otherwise, zero. |
| 1405 */ |
| 1406 @Id(25) |
| 1407 int get constCycleSlot; |
| 1408 |
| 1409 /** |
| 1364 * Documentation comment for the executable, or `null` if there is no | 1410 * Documentation comment for the executable, or `null` if there is no |
| 1365 * documentation comment. | 1411 * documentation comment. |
| 1366 */ | 1412 */ |
| 1367 @informative | 1413 @informative |
| 1368 @Id(7) | 1414 @Id(7) |
| 1369 UnlinkedDocumentationComment get documentationComment; | 1415 UnlinkedDocumentationComment get documentationComment; |
| 1370 | 1416 |
| 1371 /** | 1417 /** |
| 1372 * If this executable's return type is inferable, nonzero slot id | 1418 * If this executable's return type is inferable, nonzero slot id |
| 1373 * identifying which entry in [LinkedUnit.types] contains the inferred | 1419 * identifying which entry in [LinkedUnit.types] contains the inferred |
| (...skipping 147 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1521 * If a local function, the length of the visible range; zero otherwise. | 1567 * If a local function, the length of the visible range; zero otherwise. |
| 1522 */ | 1568 */ |
| 1523 @Id(20) | 1569 @Id(20) |
| 1524 int get visibleLength; | 1570 int get visibleLength; |
| 1525 | 1571 |
| 1526 /** | 1572 /** |
| 1527 * If a local function, the beginning of the visible range; zero otherwise. | 1573 * If a local function, the beginning of the visible range; zero otherwise. |
| 1528 */ | 1574 */ |
| 1529 @Id(21) | 1575 @Id(21) |
| 1530 int get visibleOffset; | 1576 int get visibleOffset; |
| 1531 | |
| 1532 /** | |
| 1533 * If [kind] is [UnlinkedExecutableKind.constructor] and [isConst] is `true`, | |
| 1534 * a nonzero slot id which is unique within this compilation unit. If this id | |
| 1535 * is found in [LinkedUnit.constCycles], then this constructor is part of a | |
| 1536 * cycle. | |
| 1537 * | |
| 1538 * Otherwise, zero. | |
| 1539 */ | |
| 1540 @Id(25) | |
| 1541 int get constCycleSlot; | |
| 1542 } | 1577 } |
| 1543 | 1578 |
| 1544 /** | 1579 /** |
| 1545 * Enum used to indicate the kind of an executable. | 1580 * Enum used to indicate the kind of an executable. |
| 1546 */ | 1581 */ |
| 1547 enum UnlinkedExecutableKind { | 1582 enum UnlinkedExecutableKind { |
| 1548 /** | 1583 /** |
| 1549 * Executable is a function or method. | 1584 * Executable is a function or method. |
| 1550 */ | 1585 */ |
| 1551 functionOrMethod, | 1586 functionOrMethod, |
| (...skipping 178 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1730 * Unlinked summary information about a function parameter. | 1765 * Unlinked summary information about a function parameter. |
| 1731 */ | 1766 */ |
| 1732 abstract class UnlinkedParam extends base.SummaryClass { | 1767 abstract class UnlinkedParam extends base.SummaryClass { |
| 1733 /** | 1768 /** |
| 1734 * Annotations for this parameter. | 1769 * Annotations for this parameter. |
| 1735 */ | 1770 */ |
| 1736 @Id(9) | 1771 @Id(9) |
| 1737 List<UnlinkedConst> get annotations; | 1772 List<UnlinkedConst> get annotations; |
| 1738 | 1773 |
| 1739 /** | 1774 /** |
| 1775 * Code range of the parameter. |
| 1776 */ |
| 1777 @Id(14) |
| 1778 CodeRange get codeRange; |
| 1779 |
| 1780 /** |
| 1740 * If the parameter has a default value, the constant expression in the | 1781 * If the parameter has a default value, the constant expression in the |
| 1741 * default value. Note that the presence of this expression does not mean | 1782 * default value. Note that the presence of this expression does not mean |
| 1742 * that it is a valid, check [UnlinkedConst.isInvalid]. | 1783 * that it is a valid, check [UnlinkedConst.isInvalid]. |
| 1743 */ | 1784 */ |
| 1744 @Id(7) | 1785 @Id(7) |
| 1745 UnlinkedConst get defaultValue; | 1786 UnlinkedConst get defaultValue; |
| 1746 | 1787 |
| 1747 /** | 1788 /** |
| 1748 * If the parameter has a default value, the source text of the constant | 1789 * If the parameter has a default value, the source text of the constant |
| 1749 * expression in the default value. Otherwise the empty string. | 1790 * expression in the default value. Otherwise the empty string. |
| (...skipping 230 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1980 * Unlinked summary information about a typedef declaration. | 2021 * Unlinked summary information about a typedef declaration. |
| 1981 */ | 2022 */ |
| 1982 abstract class UnlinkedTypedef extends base.SummaryClass { | 2023 abstract class UnlinkedTypedef extends base.SummaryClass { |
| 1983 /** | 2024 /** |
| 1984 * Annotations for this typedef. | 2025 * Annotations for this typedef. |
| 1985 */ | 2026 */ |
| 1986 @Id(4) | 2027 @Id(4) |
| 1987 List<UnlinkedConst> get annotations; | 2028 List<UnlinkedConst> get annotations; |
| 1988 | 2029 |
| 1989 /** | 2030 /** |
| 2031 * Code range of the typedef. |
| 2032 */ |
| 2033 @Id(7) |
| 2034 CodeRange get codeRange; |
| 2035 |
| 2036 /** |
| 1990 * Documentation comment for the typedef, or `null` if there is no | 2037 * Documentation comment for the typedef, or `null` if there is no |
| 1991 * documentation comment. | 2038 * documentation comment. |
| 1992 */ | 2039 */ |
| 1993 @informative | 2040 @informative |
| 1994 @Id(6) | 2041 @Id(6) |
| 1995 UnlinkedDocumentationComment get documentationComment; | 2042 UnlinkedDocumentationComment get documentationComment; |
| 1996 | 2043 |
| 1997 /** | 2044 /** |
| 1998 * Name of the typedef. | 2045 * Name of the typedef. |
| 1999 */ | 2046 */ |
| (...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2037 List<UnlinkedConst> get annotations; | 2084 List<UnlinkedConst> get annotations; |
| 2038 | 2085 |
| 2039 /** | 2086 /** |
| 2040 * Bound of the type parameter, if a bound is explicitly declared. Otherwise | 2087 * Bound of the type parameter, if a bound is explicitly declared. Otherwise |
| 2041 * null. | 2088 * null. |
| 2042 */ | 2089 */ |
| 2043 @Id(2) | 2090 @Id(2) |
| 2044 EntityRef get bound; | 2091 EntityRef get bound; |
| 2045 | 2092 |
| 2046 /** | 2093 /** |
| 2094 * Code range of the type parameter. |
| 2095 */ |
| 2096 @Id(4) |
| 2097 CodeRange get codeRange; |
| 2098 |
| 2099 /** |
| 2047 * Name of the type parameter. | 2100 * Name of the type parameter. |
| 2048 */ | 2101 */ |
| 2049 @Id(0) | 2102 @Id(0) |
| 2050 String get name; | 2103 String get name; |
| 2051 | 2104 |
| 2052 /** | 2105 /** |
| 2053 * Offset of the type parameter name relative to the beginning of the file. | 2106 * Offset of the type parameter name relative to the beginning of the file. |
| 2054 */ | 2107 */ |
| 2055 @informative | 2108 @informative |
| 2056 @Id(1) | 2109 @Id(1) |
| 2057 int get nameOffset; | 2110 int get nameOffset; |
| 2058 } | 2111 } |
| 2059 | 2112 |
| 2060 /** | 2113 /** |
| 2061 * Unlinked summary information about a compilation unit ("part file"). | 2114 * Unlinked summary information about a compilation unit ("part file"). |
| 2062 */ | 2115 */ |
| 2063 @TopLevel('UUnt') | 2116 @TopLevel('UUnt') |
| 2064 abstract class UnlinkedUnit extends base.SummaryClass { | 2117 abstract class UnlinkedUnit extends base.SummaryClass { |
| 2065 factory UnlinkedUnit.fromBuffer(List<int> buffer) => | 2118 factory UnlinkedUnit.fromBuffer(List<int> buffer) => |
| 2066 generated.readUnlinkedUnit(buffer); | 2119 generated.readUnlinkedUnit(buffer); |
| 2067 | 2120 |
| 2068 /** | 2121 /** |
| 2069 * Classes declared in the compilation unit. | 2122 * Classes declared in the compilation unit. |
| 2070 */ | 2123 */ |
| 2071 @Id(2) | 2124 @Id(2) |
| 2072 List<UnlinkedClass> get classes; | 2125 List<UnlinkedClass> get classes; |
| 2073 | 2126 |
| 2074 /** | 2127 /** |
| 2128 * Code range of the unit. |
| 2129 */ |
| 2130 @Id(15) |
| 2131 CodeRange get codeRange; |
| 2132 |
| 2133 /** |
| 2075 * Enums declared in the compilation unit. | 2134 * Enums declared in the compilation unit. |
| 2076 */ | 2135 */ |
| 2077 @Id(12) | 2136 @Id(12) |
| 2078 List<UnlinkedEnum> get enums; | 2137 List<UnlinkedEnum> get enums; |
| 2079 | 2138 |
| 2080 /** | 2139 /** |
| 2081 * Top level executable objects (functions, getters, and setters) declared in | 2140 * Top level executable objects (functions, getters, and setters) declared in |
| 2082 * the compilation unit. | 2141 * the compilation unit. |
| 2083 */ | 2142 */ |
| 2084 @Id(4) | 2143 @Id(4) |
| (...skipping 88 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2173 * a field. | 2232 * a field. |
| 2174 */ | 2233 */ |
| 2175 abstract class UnlinkedVariable extends base.SummaryClass { | 2234 abstract class UnlinkedVariable extends base.SummaryClass { |
| 2176 /** | 2235 /** |
| 2177 * Annotations for this variable. | 2236 * Annotations for this variable. |
| 2178 */ | 2237 */ |
| 2179 @Id(8) | 2238 @Id(8) |
| 2180 List<UnlinkedConst> get annotations; | 2239 List<UnlinkedConst> get annotations; |
| 2181 | 2240 |
| 2182 /** | 2241 /** |
| 2242 * Code range of the variable. |
| 2243 */ |
| 2244 @Id(14) |
| 2245 CodeRange get codeRange; |
| 2246 |
| 2247 /** |
| 2183 * If [isConst] is true, and the variable has an initializer, the constant | 2248 * If [isConst] is true, and the variable has an initializer, the constant |
| 2184 * expression in the initializer. Note that the presence of this expression | 2249 * expression in the initializer. Note that the presence of this expression |
| 2185 * does not mean that it is a valid, check [UnlinkedConst.isInvalid]. | 2250 * does not mean that it is a valid, check [UnlinkedConst.isInvalid]. |
| 2186 */ | 2251 */ |
| 2187 @Id(5) | 2252 @Id(5) |
| 2188 UnlinkedConst get constExpr; | 2253 UnlinkedConst get constExpr; |
| 2189 | 2254 |
| 2190 /** | 2255 /** |
| 2191 * Documentation comment for the variable, or `null` if there is no | 2256 * Documentation comment for the variable, or `null` if there is no |
| 2192 * documentation comment. | 2257 * documentation comment. |
| (...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2268 */ | 2333 */ |
| 2269 @Id(11) | 2334 @Id(11) |
| 2270 int get visibleLength; | 2335 int get visibleLength; |
| 2271 | 2336 |
| 2272 /** | 2337 /** |
| 2273 * If a local variable, the beginning of the visible range; zero otherwise. | 2338 * If a local variable, the beginning of the visible range; zero otherwise. |
| 2274 */ | 2339 */ |
| 2275 @Id(12) | 2340 @Id(12) |
| 2276 int get visibleOffset; | 2341 int get visibleOffset; |
| 2277 } | 2342 } |
| OLD | NEW |